Перейти к основному содержимому

Предположения

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

Механизм предположений работает следующим образом:

  1. Создается булева переменная (триггер), которая отвечает за активацию одного или нескольких ограничений;
  2. В модель добавляются опциональные ограничения и привязываются к созданному триггеру;
  3. В модель добавляется предположение, устанавливающее значение триггера в ИСТИНА;
  4. Проверяется решение;
  5. При необходимости предположения очищаются и модель решается с новым набором предположений или без них.

В данном разделе в примерах ниже Модель = О2.СоздатьМодель();.

Пх = Модель.ПеременнаяДиапазона(-5, 5, "x");
Пy = Модель.ПеременнаяДиапазона(-2, 6, "y");

// описываем модель
// ...

// создаем переменную-триггер
СуммаПоложительна = Модель.БулеваПеременная();

// добавляем опциональное ограничение, привязанное к триггеру
Модель.Ограничения().Соотношение("x + y > 0", СуммаПоложительна);

// принудительно активируем триггер механизмом предположений
Модель.ДобавитьПредположение(СуммаПоложительна);

// пробуем решить модель
Решение = Модель.Решить();

Если Решение.РешениеНайдено() Тогда
// предположение подтвердилось
// TODO
Иначе
Модель.ОчиститьПредположения();
// TODO
КонецЕсли;

Методы механизма предположений

Механизм предположений содержит следующие методы объекта модели:

ДобавитьПредположение

Метод принимает в качестве аргумента булево выражение. При решении модели данное выражение будет принудительно установлено в значение ИСТИНА.

Триггер = Модель.БулеваПеременная();

Модель.ДобавиьтьПредположение(Триггер);

ОчиститьПредположения

Метод очищает все добавленные ранее предположения.

Модель.ОчиститьПредположения();