intlinprog
Выходная функция и синтаксис функции построения графикаintlinprog
может вызвать выходную функцию или функцию построения графика после того, как определенные события будут иметь место в алгоритме. Эти события включают завершение фазы алгоритма, такого как решение корневой задачи LP, добавление сокращений, завершение эвристики успешно, нахождение нового целочисленного выполнимого решения во время метода ветвей и границ, заметно улучшение относительного разрыва или исследование многих узлов в дереве метода ветвей и границ.
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 | Время в секундах, проведенных до сих пор, измеренных с |