0 / 0
資料の 英語版 に戻る
Decision Optimization OPLモデルの入出力データ・フォーマット
最終更新: 2024年12月05日
Decision Optimization OPLモデルの入出力データファイル形式

OPL Decision Optimizationモデルの展開には、以下の入出力データ形式を使用する必要があります。

OPL データ・フォーマット

OPLモデルでは、使用するテーブルごとにtuplesetを宣言しなければなりません。 次の例は、OPL モデルの抜粋です:
tuple parameters {
	int maxTrucks;
	int maxVolume;
}
parameters Parameters = ...;

tuple location {
  key string name;
}
{location} Hubs = ...;

tuple spoke {
  key string name;
  int     minDepTime;
  int     maxArrTime;
};
{spoke} Spokes = ...;

dvar int+ TruckOnRoute[Routes][TruckTypeIds] in 0..Parameters.maxTrucks;

[...]

minimize TotalCost;

subject to {
	[...]
} 

データの入力

入力データは、外部データ・ソースから取り込むことができます。 OPL モデルの入力データは、以下のいずれかのフォーマットで提供できます。

  • .csvファイル
  • .datファイル
  • JSON 文書
  • Microsoft Excel ワークブック (.xlsxと '.xls) ファイルは非推奨です。

    Microsoft Excelファイルに接続するには、データ・コネクタを使用する。 data-connectorはExcelファイルを'.csvファイルに変換します。 詳しくは参照データを参照。

.dat ファイル
すべての OPL データ構造がサポートされます。 例:
{Parameters = <100, 5000>;

Hubs = { <"G">, <"H"> };

Spokes = { <"A", 360, 1080>, <"B", 400, 1150> };
JSONドキュメントまたはMicrosoft Excelワークブック
OPLモデルでは、tuplestuple setsだけを入力として使うことができます。

タプル・フィールドでサポートされるタイプは、intfloat、または string です。

入力値を OPL モデルにマップするには、以下のルールに従う必要があります。
  • OPL エレメントは、JSON プロパティーまたは Excel ワークシートと同じ名前である必要があります。
  • タプル・セットには、JSON プロパティー配列またはワークシートによってデータを取り込むことができます。
  • タプル要素には、JSONプロパティ・オブジェクト、または1行のエクセル・シートを入力することができます。
JSON フォーマットを OPL モデル統合に使用できるため、入力データを生成し、結果を構文解析することが容易になります。
{
  "Parameters": {
    "maxTrucks": 100,
    "maxVolume": 5000
  },
  "Hubs": [
    {  "name": "G"  },
    {  "name": "H"  }
  ],
  "Spokes": [
    { "name": "A",
      "minDepTime": 360,
      "maxArrTime": 1080 },
    { "name": "B",
      "minDepTime": 400,
      "maxArrTime": 1150  },
   . . .
}

.dat ファイルを使用する代わりに、Excel ファイルを使用できます。 このオプションは、IBM ILOG CPLEX Optimization Studio のように、.datファイルでExcelファイルを外部ソースとして指定する必要がある場合とは異なります。 Decision Optimization では、Excel ファイルはモデルに含まれていなければならず、.dat ファイルから呼び出すことはできません。

OPL入力としてタプルとタプルセットのみを使用するという制限は、データソースとの統合を容易にするためです。 例えば、SQLデータ・ソースにアクセスして、最小限の労力でデータ・ストリームすることができます。NoSQLデータ・ソースにアクセスして、データを自動的にテーブルに変換することができます。 必要であれば、最適化モデル開発者は、最適化中に他のデータ構造にデータを取り込むためにデータを再設計できますが、この操作が入力データまたは出力データに影響しないようにしてください。

出力データ

出力がテキストファイルの場合、目的関数と決定変数の値は構造化されていない形式で提供されます。

出力フォーマットがJSON、'.csv、エクセルの場合、後処理ブロックの中でクライアントにエクスポートするものを定義しなければならない。 後処理とは、.modファイルのsubject toセクションに続くすべてのコードのことです。 したがって、JSON、'.csv、またはエクセルの出力を定義するには、後処理でタプルまたはタプルセットを宣言しなければならない。

.modファイルの後処理ブロックに宣言しない出力要素を記述すると、出力データは生成されない。のようになる

以下の例では、ResultNbTrucksOnRouteResの値と目的関数が出力ファイルに含まれます。

subject to {
   [...]
}

tuple result {
  float totalCost;
}
result Result;

execute {
     Result.objValue = cplex.getObjValue();
}

tuple nbTrucksOnRouteRes {
  key string	spoke;
  key string	hub;
  key string	truckType;
  int			nbTruck;
}
{nbTrucksOnRouteRes} NbTrucksOnRouteRes =
  {<r.spoke, r.hub, t, TruckOnRoute[r][t]> | r in Routes, t in TruckTypeIds :
                                                              TruckOnRoute[r][t] > 0};
生成 AI の検索と回答
これらの回答は、製品資料の内容に基づいて、 watsonx.ai のラージ言語モデルによって生成されます。 詳細