mpsread
LP および MILP 最適化データの MPS ファイルの読み取り
説明
例
MPS ファイルのインポートおよび実行
mps
ファイルを読み込み、記述されている問題を解きます。
公開リポジトリから eil33-2.mps
ファイルを読み込みます。問題のタイプを表示します。
gunzip("https://miplib.zib.de/WebData/instances/eil33-2.mps.gz") problem = mpsread("eil33-2.mps")
Running HiGHS 1.7.0 (git hash: n/a): Copyright (c) 2024 HiGHS under MIT licence terms
problem = struct with fields:
f: [4516×1 double]
Aineq: [0×4516 double]
bineq: [0×1 double]
Aeq: [32×4516 double]
beq: [32×1 double]
lb: [4516×1 double]
ub: [4516×1 double]
intcon: [4516×1 double]
solver: 'intlinprog'
options: [1×1 optim.options.Intlinprog]
problem.intcon
が空ではなく、problem.solver が 'intlinprog'
であることがわかります。これは、整数線形計画問題です。
反復表示を抑制し、ソルバーの進行状況に応じてプロットを生成するように、オプションを変更します。
options = optimoptions("intlinprog",... Display="final",PlotFcn=@optimplotmilp); problem.options = options;
intlinprog
を呼び出して問題を解きます。
[x,fval,exitflag,output] = intlinprog(problem);
Optimal solution found. Intlinprog stopped because the objective value is within a gap tolerance of the optimal value, options.AbsoluteGapTolerance = 1e-06. The intcon variables are integer within tolerance, options.ConstraintTolerance = 1e-06.
変数名と制約名の取得
mps
ファイルを読み込んで、その変数名と制約名を取得します。
公開リポジトリから eil33-2.mps
ファイルを読み込みます。返された問題構造体を表示します。
gunzip("https://miplib.zib.de/WebData/instances/eil33-2.mps.gz") problem = mpsread("eil33-2.mps",ReturnNames=true)
Running HiGHS 1.7.0 (git hash: n/a): Copyright (c) 2024 HiGHS under MIT licence terms
problem = struct with fields:
f: [4516×1 double]
Aineq: [0×4516 double]
bineq: [0×1 double]
Aeq: [32×4516 double]
beq: [32×1 double]
lb: [4516×1 double]
ub: [4516×1 double]
intcon: [4516×1 double]
solver: 'intlinprog'
options: [1×1 optim.options.Intlinprog]
variableNames: [4516×1 string]
constraintNames: [1×1 struct]
各タイプの最初の数個の名前を表示します。
problem.variableNames(1:4)
ans = 4×1 string
"x1"
"x2"
"x3"
"x4"
problem.constraintNames.eqlin(1:4)
ans = 4×1 string
"c1"
"c2"
"c3"
"c4"
問題に不等式制約は含まれていません。
problem.constraintNames.ineqlin
ans = 0×1 empty string array
入力引数
mpsfile
— MPS ファイルへのパス
文字ベクトル | string スカラー
MPS ファイルへのパス。文字ベクトルまたは string スカラーとして指定されます。mpsfile
は、MPS 形式のファイルでなければなりません。
メモ
mpsread
は、半連続的な制約または SOS 制約をサポートしません。mpsread
は “固定書式” ファイルをサポートします。mpsread
はobjsense
およびobjname
などの拡張子をサポートしていません。mpsread
は、以前に MPS ファイルのCOLUMNS
セクションに表示されなかったBOUNDS
セクションの変数を暗黙的に無視します。
例: "documents/optimization/milpproblem.mps"
データ型: char
| string
ReturnNames
— MPS ファイルから変数名と制約名を返すことを示す名前と値のペア
false
(既定値) | true
値が logical として指定された、MPS ファイルから変数名と制約名を返すことを示す名前と値のペア。false
は、名前を返さないことを指定します。true
は、problem
出力構造体に 2 つの追加のフィールドを返すように mpsread
に指示します。
problem.variableNames
— 変数名の string 配列problem.constraintNames
— 制約名の構造体:problem.constraintNames.eqlin
— 線形等式制約名の string 配列problem.constraintNames.ineqlin
— 線形不等式制約名の string 配列
problem
構造体不等式制約の problem.Aineq
と problem.bineq
は problem.constraintNames.ineqlin
内の名前と同じ順序です。同様に、制約の problem.Aeq
と problem.beq
は problem.constraintNames.eqlin
内の名前と同じ順序です。problem.variableNames
の順序は、problem
構造体に対する linprog
または intlinprog
の実行後の解の変数 x
の順序と同じです。
例: mpsread('filename','ReturnNames',true)
データ型: logical
出力引数
problem
— 問題構造体
構造体
問題構造体。次のフィールドをもつ構造体として返されます。
f | 目的関数 f'*x を表すベクトル |
intcon | 整数値を取る変数を示すベクトル (LP では空、MILP では空でない) |
Aineq | 線形不等式制約 Aineq*x ≤ bineq の行列 |
| 線形不等式制約 Aineq*x ≤ bineq のベクトル |
| 線形等式制約 Aeq*x = beq の行列 |
| 線形等式制約 Aeq*x = beq のベクトル |
lb | 下限のベクトル |
ub | 上限のベクトル |
solver | 'intlinprog' (intcon が空でない場合)、または 'linprog' (intcon が空の場合) |
| 次のコマンドによって返される既定のオプション optimoptions(solver) |
variableNames | MPS ファイルからの変数名を含む string 配列。このフィールドは、ReturnNames が true の場合にのみ表示されます。 |
constraintNames | MPS ファイルからの制約名を含む構造体。詳細については、ReturnNames を参照してください。このフィールドは、ReturnNames が true の場合にのみ表示されます。 |
mpsread
は、problem.Aineq
および problem.Aeq
をスパース行列として返します。
バージョン履歴
R2015b で導入R2024b: mpsread
での HiGHS ソフトウェアの使用
MPS ファイルを intlinprog
と linprog
が受け入れる形式で読み取るために、mpsread
で HiGHS オープンソース ソフトウェアが使用されるようになりました。mpsread
の表示に HiGHS への参照が含まれるようになりました。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)