intlinprog Синтаксис функции вывода и функции печатиintlinprog может вызывать функцию вывода или функцию графика после того, как в алгоритме происходят определенные события. Эти события включают в себя завершение фазы алгоритма, такой как решение корневой задачи ЛП, добавление вырезов, успешное завершение эвристики, поиск нового возможного решения на основе целого числа во время перехода и ограничения, значительное улучшение относительного промежутка или исследование ряда узлов в дереве перехода и ограничения.
Внимание
intlinprog функции вывода и функции графика отличаются от функций других решателей. Функции вывода или функции графика в других решателях Optimization Toolbox™ см. в разделах Функция вывода и Синтаксис функции графика и Функции графика.
Существует одна встроенная функция вывода: savemilpsolutions. Эта функция собирает целочисленные возможные точки, которые алгоритм находит во время события. Он помещает возможные точки в матрицу с именем xIntSol в базовой рабочей области, где каждый столбец является одной целочисленной возможной точкой. Сохраняет значения целевой функции в векторе с именем fIntSol, где каждая запись является целевой функцией соответствующего столбца в xIntSol.
Существует одна встроенная функция графика: optimplotmilp. Эта функция отображает внутренне рассчитанные границы для наилучшего значения целевой функции. Пример его использования см. в разделе Фабрика, Склад, Модель распределения продаж на основе решателя.
Вызовите функции вывода или печати, передав OutputFcn или PlotFcn пары имя-значение, включая дескриптор функции вывода или функции графика. Например,
options = optimoptions(@intlinprog,'OutputFcn',@savemilpsolutions,'PlotFcn',@optimplotmilp); x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,options);
Если имеется несколько функций вывода или печати, передайте их как массив ячеек.
options = optimoptions(@intlinprog,'OutputFcn',{@savemilpsolutions,@customFcn});Напишите собственную выходную функцию или функцию графика, используя следующий синтаксис:
function stop = customFcn(x,optimValues,state)intlinprog передает данные x, optimValues, и state к вашей функции.
stop - Установить на true остановиться intlinprog. Установить в значение false позволить intlinprog для продолжения.
x - Пустая матрица [] или Nоколо-1 вектор, который является возможной точкой. x не является пустым только тогда, когда intlinprog находит новое целочисленное выполнимое решение. x может быть непустым, когда phase является 'heuristics' или 'branching'.
optimValues - структура, подробные данные которой находятся в структуре optimValues.
state - Одно из следующих значений:
'init' — intlinprog запускается. Это состояние используется для настройки всех необходимых графиков или структур данных.
'iter' — intlinprog решает проблему. Доступ к данным, связанным с ходом выполнения решателя. Например, печать или выполнение операций с файлами.
'done' — intlinprog закончил решение проблемы. Закройте все файлы, завершите аннотирование графиков и т.д.
Примеры записи функций вывода или печати см. в разделе Встроенные функции. savemilpsolutions.m или optimplotmilp.m.
optimValues СтруктураoptimValues Область | Значение |
|---|---|
phase | Фаза алгоритма. Возможные значения:
|
fval | Наилучшая целевая функция, найденная до сих пор в целочисленной возможной точке. Когда |
lowerbound | Глобальная нижняя граница значения целевой функции. Пусто, когда |
relativegap | Относительный зазор между |
numnodes | Количество исследованных узлов. Ненулевое значение только в том случае, если |
numfeaspoints | Найдено целочисленных возможных решений. |
time | Время в секундах, затраченное на данный момент, измеренное с помощью |