このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
mpsread
LP および MILP 最適化データの MPS ファイルの読み取り
説明
は、線形計画法 (LP) および混合整数線形計画法 (MILP) の問題のデータを読み取ります。これによって、problem
= mpsread(mpsfile
)intlinprog
または linprog
ソルバーが受け入れる構造体にデータが返されます。
は、返された problem
= mpsread(mpsfile
,'ReturnNames
',true)problem
構造体に、mpsfile
内に変数と制約の名前が格納された variableNames
フィールドと constraintNames
フィールドを追加します。
例
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
入力引数
MPS ファイルへのパス。文字ベクトルまたは string スカラーとして指定されます。mpsfile
は、MPS 形式のファイルでなければなりません。
メモ
mpsread
は、半連続的な制約または SOS 制約をサポートしません。mpsread
は “固定書式” ファイルをサポートします。mpsread
はobjsense
およびobjname
などの拡張子をサポートしていません。mpsread
は、以前に MPS ファイルのCOLUMNS
セクションに表示されなかったBOUNDS
セクションの変数を暗黙的に無視します。
例: "documents/optimization/milpproblem.mps"
データ型: char
| string
値が 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
出力引数
問題構造体。次のフィールドをもつ構造体として返されます。
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 で導入MPS ファイルを intlinprog
と linprog
が受け入れる形式で読み取るために、mpsread
で HiGHS オープンソース ソフトウェアが使用されるようになりました。mpsread
の表示に HiGHS への参照が含まれるようになりました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)