intlinprog Output Functions and Plot Functionsintlinprog can call an output function
or plot function after certain events occur in the algorithm. These
events include completing a phase of the algorithm such as solving
the root LP problem, adding cuts, finding a new integer feasible solution,
appreciably improving the relative gap, or exploring a number of nodes
in a branch-and-bound tree.
Caution
|
There is one built-in output function: savemilpsolutions.
This function collects all the integer feasible points that the algorithm
finds. It puts the feasible points in a matrix named xIntSol in
your base workspace, where each column is one integer feasible point.
It saves the objective function values in a vector named fIntSol,
where each entry is the objective function of the corresponding column
in xIntSol.
There is one built-in plot function: optimplotmilp.
This function plots the internally-calculated bounds on the best objective
function value. For an example of its use, see Factory, Warehouse, Sales Allocation Model.
Call output functions or plot functions by passing the OutputFcn or PlotFcns name-value
pairs, including the handle to the output function or plot function.
For example,
options = optimoptions(@intlinprog,'OutputFcn',@savemilpsolutions,'PlotFcns',@optimplotmilp); x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,options);
If you have several output functions or plot functions, pass them as a cell array.
options = optimoptions(@intlinprog,'OutputFcn',{@savemilpsolutions,@customFcn});Write your own output function or plot function using this syntax:
function stop = customFcn(x,optimValues,state)intlinprog passes the data x, optimValues,
and state to your function.
stop — Set to true to
halt intlinprog. Set to false to
allow intlinprog to continue.
x — Either empty [] or
an N-by-1 vector that is a feasible
point. x is nonempty only when intlinprog finds
a new integer feasible solution. x can be nonempty
when phase is 'heuristics' or 'branching'.
optimValues — A structure
whose details are in optimValues Structure.
state — A string containing
one of these values:
'init' — intlinprog is
starting. Use this state to set up any plots or data structures that
you need.
'iter' — intlinprog is
solving the problem. Access data related to the solver's progress.
For example, plot or perform file operations.
'done' — intlinprog has
finished solving the problem. Close any files, finish annotating plots,
etc.
For examples of writing output or plot functions, see the built-in
functions savemilpsolutions.m or optimplotmilp.m.
optimValues StructureoptimValues Field | Meaning |
|---|---|
phase | Phase of the algorithm. Possible values:
|
fval | Best objective function found so far at an integer feasible
point. When |
lowerbound | Global lower bound of the objective function value. Empty
when |
relativegap | Relative gap between |
numnodes | Number of explored nodes. Nonzero only when |
numfeaspoints | Number of integer feasible solutions found. |
time | Time in seconds spent so far, measured with |