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});メモ
プロット関数のフレームワークで座標軸が管理されるため、プロット関数は subplot ステートメントをサポートしていません。複数のサブプロットを指定するには、個別のプロット関数を記述し、cell 配列としてソルバーに渡します。
options = optimoptions("solvername",PlotFcn={@plot1,@plot2,@plot3});出力関数は subplot をサポートするため、プロット関数ではなく出力関数を使用すると、1 つの関数に複数のプロットを含めることができます。
カスタム関数の構文
カスタムの出力関数やプロット関数を記述するには、次の構文を使用します。
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 | これまでの経過秒数。 |