Ограничения и требования

AnyLogic позволяет задавать дополнительные условия оптимизации, накладывая ограничения на значения оптимизационных параметров и на получаемые оптимизатором решения - ограничения и требования соответственно.

Ограничения

Ограничение представляет собой арифметическое выражение, задающее более узкий диапазон допустимых значений параметров.

parameterA + parameterB + 2*parameterC = 10
parameterC - parameterA*parameterB >= 300 

Перед запуском оптимизации с определенной комбинацией значений оптимизационных параметров, AnyLogic проверяет, удовлетворяют ли данные значения заданным ограничениям. Если да - то модель запускается с данными значениями, если нет, то оптимизатор выбирает другие значения, и так далее. Оптимизатор  будет использовать только допустимые значения параметров, удовлетворяющие заданным ограничениям - тем самым, вы сузите пространство поиска и оптимизация будет производиться быстрее.

 Чтобы задать ограничение

  1. Выберите оптимизационный эксперимент, щелкнув по нему мышью в панели Проекты.
  2. Перейдите в секцию Ограничения панели Свойства.
  3. Щелкните по кнопке  справа от таблицы Ограничения, накладываемые на параметры (проверяются перед запуском).
  4. Введите выражение ограничения в поле таблицы Выражение.

Требования

Требование является дополнительным ограничением, накладываемым на решения, которые будет находить оптимизатор. Если на момент окончания прогона модели заданные требования будут выполняться, то полученный оптимизатором набор значений параметров будет признан допустимым, и результат оптимизации будет запомнен оптимизатором. Если ограничения удовлетворены не будут, то найденные значения параметров и решение будут считаться недопустимыми.

Выражение требования может содержать любые арифметические операции над данными модели. В выражении также можно вызывать созданные вами функции, а также предопределенные функции (sin(), cos(), sqrt() и т.д.). Агент верхнего уровня эксперимента доступен здесь как root:

0 <= 2*root.varB – root.statistics.max() <= 500
sqrt(root.varC)>=49

 Чтобы задать требование

  1. Выберите оптимизационный эксперимент в панели Проекты.
  2. Перейдите в секцию Требования панели Свойства.
  3. Щелкните по кнопке  справа от таблицы Требования (проверяются после "прогона" для определения того, допустимо ли найденное решение).
  4. Введите выражение требования в поле таблицы Выражение.

Допустимые и недопустимые решения

Допустимым решением является такое решение, которое удовлетворяет всем заданным ограничениям и требованиям.

Нахождение допустимого решения является первоочередной задачей оптимизатора. Когда оно будет найдено,
оптимизатор начнет поиск более оптимальных решений.

Тот факт, что найденное решение будет недопустимым, еще не говорит о том, что задача не имеет решений вообще. Хотя такие задачи и существуют, например, следующая:

varA + varB <= 4
varA + varB >= 5

Очевидно, что решения, удовлетворяющего обоим этим условиям, нет.

Если оптимизационная задача является решаемой, то оптимизатор всегда найдет допустимое решение и будет искать оптимальное решение (т.е., наилучшее решение, удовлетворяющее всем ограничениям).

Если оптимизатор не может найти допустимое решение, то это означает, что в заданном ограничениями и требованиями поле поиска решения нет. Вы должны будете проверить ваши ограничения, попытаться найти противоречия между ними или между каким-то ограничением и интервалом допустимых значений присутствующего в выражении ограничения параметра и устранить их.

Отключение ограничений и требований

Вы можете отключить ограничение, сделав его неактивным. Неактивные ограничения исключаются из оптимизационного процесса и не влияют на определение допустимых решений.

Чтобы отключить/включить ограничение

  1. Выберите оптимизационный эксперимент в панели Проекты.
  2. В секции Ограничения панели Свойства, перейдите к строке таблицы Ограничения, накладываемые на параметры (проверяются перед запуском), содержащей нужное вам ограничение.
  3. Сбросьте/установите флажок в столбце Вкл.
Чтобы отключить/включить требование
  1. Выберите оптимизационный эксперимент в панели Проекты.
  2. В секции Требования панели Свойства, перейдите к строке таблицы Требования (проверяются после "прогона" для определения того, допустимо ли найденное решение), содержащей нужное вам требование.
  3. Сбросьте/установите флажок в столбце Вкл.