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

Программный интерфейс линейных моделей

Раздел содержит описание программного интерфейса линейных оптимизационных моделей: непрерывной (LP), целочисленной (IP) и смешанно-целочисленной (MIP). Подклассы отличаются ограничениями на типы переменных и применяются в зависимости от характера прикладной задачи; концептуальное изложение приведено в разделе Линейная модель.

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

Общий сценарий использования

Рекомендуемый способ создания модели — через фасад О2.Модели (имя метода-фасада зависит от подкласса: ЛинейнаяНепрерывнаяМодель, ЛинейнаяЦелочисленнаяМодель, ЛинейнаяСмешанноЦелочисленнаяМодель):

// 1. Создать модель нужного класса
Модель = О2.Модели().ЛинейнаяНепрерывнаяМодель().СоздатьМодель();

// 2. Описать переменные
ПеременнаяX = Модель.Переменные().Добавить("x");
ПеременнаяY = Модель.Переменные().Добавить("y");

// 3. Добавить ограничения (общий менеджер ограничений)
Модель.Ограничения().Соотношение("2*x + 3*y <= 12");
Модель.Ограничения().Соотношение("x + y >= 4");

// 4. Задать целевую функцию
Модель.ЦелеваяФункция().Максимизировать("5*x + 4*y");

// 5. Получить решение (возвращается объект О2_MP_Решение)
Решение = Модель.Решить();

Если Решение.РешениеНайдено() Тогда
ЗначениеX = Решение.ЗначениеПеременной(ПеременнаяX);
ЗначениеY = Решение.ЗначениеПеременной(ПеременнаяY);
КонецЕсли;

Альтернативно доступен универсальный метод О2.СоздатьМодель, которому тип модели передаётся явно — это удобно, когда класс модели определяется динамически:

Модель = О2.СоздатьМодель(О2.ТипыМоделей().ЛинейнаяНепрерывнаяМодель());

Различия между классами LP, IP, MIP проявляются при объявлении переменных — детали описаны на страницах соответствующих подразделов.

Содержание раздела

См. также