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

О2.РешитьМодель

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

Синтаксис

О2.РешитьМодель(Модель, Параметры)

Параметры

  • Модель — источник данных модели. Допустимые типы:
    • Строка — полный путь к файлу, содержащему данные модели;
    • ДвоичныеДанные — двоичные данные модели;
    • Поток, ФайловыйПоток, ПотокВПамяти — поток, содержащий данные модели;
    • ОбработкаОбъект — объект модели, ранее полученный методом О2.СоздатьМодель. Допустимы все типы объектов моделей: О2_CP_SAT_Модель, О2_LP_Модель, О2_IP_Модель, О2_MIP_Модель, О2_Knapsack_Модель, О2_MaxFlow_Модель, О2_MinCostFlow_Модель, О2_Routing_Модель.
  • ПараметрыСтруктура, Неопределено — Параметры поиска решения. Формируются методом О2.СоздатьПараметрыПоиска. Если не указаны, используются значения по умолчанию: локальный сервис решателя, настройки без ограничений по времени и без указания типа решателя. Поля структуры:

Возвращаемое значение

  • ОбработкаОбъект — объект решения, тип которого зависит от типа переданной модели:
    • ОбработкаОбъект.О2_CP_SAT_Решение — для модели ограничений;
    • ОбработкаОбъект.О2_MP_Решение — для всех линейных моделей (LP / IP / MIP);
    • ОбработкаОбъект.О2_Knapsack_Решение — для задачи о рюкзаке;
    • ОбработкаОбъект.О2_MaxFlow_Решение — для задачи поиска максимального потока;
    • ОбработкаОбъект.О2_MinCostFlow_Решение — для задачи поиска потока минимальной стоимости;
    • ОбработкаОбъект.О2_Routing_Решение — для модели маршрутизации.

Описание

Метод выбирает сервис решателя на основании параметра Сервис. Если параметр не задан, используется локальный сервис — решатель выполняет вычисления на сервере 1С. Для ресурсоёмких задач рекомендуется явно указывать выделенный сервис: веб-службу или облачную функцию, чтобы не нагружать сервер приложения.

Независимо от типа переданной модели результатом работы метода всегда является объект решения соответствующего класса. Анализ полученного решения (проверка статуса, извлечение значений переменных, значение целевой функции) выполняется методами объекта решения — см. Модели.

Рекомендация

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

Пример

Решение модели с параметрами по умолчанию:

Решение = О2.РешитьМодель(Модель);

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

Решение с лимитом времени и на внешнем сервере:

Сервис = О2.Сервисы().ВебСлужба(
Новый HTTPСоединение("solver.local", 4762)
);

Настройки = О2.СоздатьНастройкиРешателя(60); // <-- лимит 60 секунд

ПараметрыПоиска = О2.СоздатьПараметрыПоиска(Сервис, Настройки);

Решение = О2.РешитьМодель(Модель, ПараметрыПоиска);

Решение заранее сохранённой модели:

Решение = О2.РешитьМодель("C:\tmp\model.o2m");

См. также