intlinprog
の出力関数とプロット関数の構文
出力関数およびプロット関数とは
intlinprog
は、アルゴリズムで特定のイベントが発生した後に、出力関数またはプロット関数を呼び出すことができます。これらのイベントには、ルート LP 問題を解くなどのアルゴリズムのある段階の完了、カットの追加、ヒューリスティックな方法の正常な完了、分枝限定時の新しい整数実行可能解の検索、相対ギャップの顕著な改善、分枝限定木における複数ノードの探索などが含まれます。
注意
intlinprog
の出力関数とプロット関数は、他のソルバーのものと異なります。他の Optimization Toolbox™ ソルバーの出力関数とプロット関数については、出力関数とプロット関数の構文およびプロット関数を参照してください。
savemilpsolutions
という組み込み出力関数が 1 つあります。この関数は、アルゴリズムがイベント発生時に見つけた整数実行可能点を集めます。実行可能点はベース ワークスペースのxIntSol
という行列に配置されます。この行列の各列が 1 つの整数実行可能点を表します。また、目的関数の値をfIntSol
というベクトルに保存します。このベクトルの各エントリは、xIntSol
で対応する列の目的関数です。optimplotmilp
という組み込みプロット関数が 1 つあります。この関数は、最良の目的関数値について内部計算された範囲をプロットします。使用例については、工場、倉庫、販売店割り当てモデル: ソルバーベースを参照してください。
出力関数やプロット関数を呼び出すには、OutputFcn
または PlotFcn
に、出力関数やプロット関数へのハンドルを含む名前と値の引数を渡します。以下に例を示します。
options = optimoptions(@intlinprog,...
OutputFcn=@savemilpsolutions,PlotFcn=@optimplotmilp);
x = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub,options);
出力関数やプロット関数が複数ある場合、cell 配列として渡します。
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 フィールド | 意味 |
---|---|
dualbound | 最小化問題の場合は目的関数値のグローバル下限、最大化問題の場合はグローバル上限。 |
fval | 整数実行可能点でこれまでに見つかった最良の目的関数。 |
numfeaspoints | 現在の解を改善する整数実行可能解の検出数。 |
numnodes | 探索されたノードの数。 |
phase | アルゴリズムの段階。
|
relativegap |
|
time | これまでの経過秒数。 |