このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

LP および MILP 最適化データの MPS ファイルの読み取り

## 構文

``problem = mpsread(mpsfile)``
``problem = mpsread(mpsfile,'ReturnNames',true)``

## 説明

``problem = mpsread(mpsfile)` は、線形計画法 (LP) および混合整数線形計画法 (MILP) の問題のデータを読み取ります。これによって、`intlinprog` または `linprog` ソルバーが受け入れる構造体にデータが返されます。`

``problem = mpsread(mpsfile,'ReturnNames',true)` は、返された `problem` 構造体に、`mpsfile` 内に変数と制約の名前が格納された `variableNames` フィールドと `constraintNames` フィールドを追加します。`

## 例

すべて折りたたむ

`mps` ファイルを読み込み、記述されている問題を解きます。

```gunzip('http://miplib.zib.de/WebData/instances/eil33-2.mps.gz') problem = mpsread('eil33-2.mps')```
```problem = f: [4516x1 double] Aineq: [0x4516 double] bineq: [0x1 double] Aeq: [32x4516 double] beq: [32x1 double] lb: [4516x1 double] ub: [4516x1 double] intcon: [4516x1 double] solver: 'intlinprog' options: [1x1 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 = 0 (the default value). The intcon variables are integer within tolerance, options.IntegerTolerance = 1e-05 (the default value).``` `mps` ファイルを読み込んで、その変数名と制約名を取得します。

```gunzip('http://miplib.zib.de/WebData/instances/eil33-2.mps.gz') problem = mpsread('eil33-2.mps','ReturnNames',true)```
```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 array "x1" "x2" "x3" "x4"```
`problem.constraintNames.eqlin(1:4)`
```ans = 4×1 string array "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` セクションの変数を暗黙的に無視します。

データ型: `char` | `string`

• `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` の順序と同じです。

データ型: `logical`

## 出力引数

すべて折りたたむ

 `f` 目的関数 `f'*x` を表すベクトル `intcon` 整数値を取る変数を示すベクトル (LP では空、MILP では空でない) `Aineq` 線形不等式制約 `Aineq*x `≤` bineq` の行列 `bineq` 線形不等式制約 `Aineq*x `≤` bineq` のベクトル `Aeq` 線形等式制約 `Aeq*x = beq` の行列 `beq` 線形等式制約 `Aeq*x = beq` のベクトル `lb` 下限のベクトル `ub` 上限のベクトル `solver` `'intlinprog'` (`intcon` が空でない場合)、または `'linprog'` (`intcon` が空の場合) `options` 次のコマンドによって返される既定のオプション `optimoptions(solver)` `variableNames` MPS ファイルからの変数名を含む string 配列。このフィールドは、`ReturnNames` が `true` の場合にのみ表示されます。 `constraintNames` MPS ファイルからの制約名を含む構造体。詳細は、`ReturnNames` を参照してください。このフィールドは、`ReturnNames` が `true` の場合にのみ表示されます。

`mpsread` は、`problem.Aineq` および `problem.Aeq` をスパース行列として返します。

R2015b で導入