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

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

Ограничения

Оптимизационное ограничение задает диапазон допустимых значений для параметров оптимизации. 

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

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

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

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

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

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

Требования

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

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

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

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

  1. Выберите оптимизационный эксперимент в панели Проекты.
  2. На странице Ограничения панели Свойства, перейдите к последней строке таблицы Требования.
  3. Введите выражение требования в поле Выражение.

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

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

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

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

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

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

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

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

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

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

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

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