intlinprog
Синтаксис выходной функции и функции построения графикаintlinprog
может вызвать выходную функцию или функцию построения графика после того, как в алгоритме произойдут определенные события. Эти события включают в себя завершение фазы алгоритма, такого как решение корневой задачи LP, добавление сечений, успешное завершение эвристики, нахождение нового целочисленного возможного решения во время ветви-и-связанной, заметное улучшение относительного промежутка или исследование числа узлов в дереве ветвей-и-связанных.
Внимание
intlinprog
выходные функции и функции функций построения графика в других решателях. Для выходных функций или функций построения графика в других решателях Optimization Toolbox™, смотрите Выходная Функция и Plot Function Синтаксис и Функции построения графика.
Существует одна встроенная выходная функция: 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
-by- 1
вектор, который является допустимой точкой. x
не пуст только тогда, когда intlinprog
находит новое целочисленное возможное решение. x
может быть непустым, когда phase
является 'heuristics'
или 'branching'
.
optimValues
- структура, детали которой находятся в optimValues Structure.
state
- Одно из следующих значений:
'init'
— intlinprog
запускается. Используйте это состояние для настройки любых необходимых графиков или структур данных.
'iter'
— intlinprog
решает задачу. Доступ к данным, связанным с прогрессом решателя. Для примера, построения или выполнения файла операций.
'done'
— intlinprog
завершил решение проблемы. Закройте все файлы, завершите аннотирование графиков и т.д.
Для примеров записи выходных или графических функций смотрите встроенные функции savemilpsolutions.m
или optimplotmilp.m
.
optimValues
СтруктураoptimValues Область | Значение |
---|---|
phase | Фаза алгоритма. Возможные значения:
|
fval | Лучшая целевая функция, найденная до сих пор в целочисленной допустимой точке. Когда |
lowerbound | Глобальная нижняя граница значения целевой функции. Пустой, когда |
relativegap | Относительный промежуток между |
numnodes | Количество исследованных узлов. Ненулевое только при |
numfeaspoints | Количество найденных целочисленных возможных решений. |
time | Время в секундах, потраченное до сих пор, измеряется с |