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

О2.ЗаписатьМодель

Сериализует данные модели и записывает их во внешний источник: файл, поток или объект записи JSON. Сохранённая модель может быть прочитана позднее и передана решателю отдельно от процесса её построения.

Синтаксис

О2.ЗаписатьМодель(Модель, Назначение, Параметры)

Параметры

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

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

Метод ничего не возвращает.

Описание

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

Сценарии применения:

  • Асинхронные вычисления. Сохранение модели в файл, передача файла на отдельный сервер, решение внешним процессом, возврат файла решения обратно в 1С (см. Использование консольной утилиты).
  • Повторное использование. Сохранённую модель можно решать многократно с разными настройками решателя, не перестраивая её в 1С.
  • Диагностика. Сохранённый файл модели удобно прикладывать к обращениям в поддержку или использовать для воспроизведения ошибок решения.
Рекомендация

Для совместимости с консольной утилитой используйте расширение .o2m для файлов модели.

Пример

Запись модели в файл:

О2.ЗаписатьМодель(Модель, "C:\tmp\model.o2m");

Запись модели в поток в памяти и получение двоичных данных:

Поток = Новый ПотокВПамяти();
О2.ЗаписатьМодель(Модель, Поток);
ДанныеМодели = Поток.ЗакрытьИПолучитьДвоичныеДанные();

Цепочка запись → решение → чтение:

О2.ЗаписатьМодель(Модель, "C:\tmp\model.o2m");

// Внешний процесс решает модель и сохраняет решение в C:\tmp\solution.o2s

Решение = О2.ЗагрузитьРешение("C:\tmp\solution.o2s");

См. также