インポートされたデータの参照とモデルでの解の出力の定義
Python DOcplex モデルまたは OPL モデルの場合、以下の構文を使用して、インポートされたデータを参照できます。
Python モデル
Python DOcplex モデルの場合、 エクスペリメント UI の 「データの準備」 ビュー でインポートしたデータには、入力辞書からアクセスできます。 インポートしたデータにアクセスするには、構文
inputs['tablename']を使用して各表を定義する必要があります。 例えば、次のコード行では、food は diet_foodという表から定義されたエンティティーです。food = inputs['diet_food']同様に、 エクスペリメント UI の 「ソリューションの探索」 ビュー に表を表示するには、構文
outputs['tablename']を使用してそれらを指定する必要があります。 例:outputs['solution'] = solution_dfsolutionという出力テーブルを定義します。 Python モデルのエンティティー solution_df がこのテーブルを定義します。この国会の例は、 DO-samplesの Model_Builder フォルダーにあります。 インポートして実験UIで実行(解決)するには、 Decision Optimizationモデルの解決と分析:ダイエット問題を参照。
OPL モデル
OPLモデルでは、Prepare データビューでインポートした各テーブルに対して、同じ名前で'
tuplesetを宣言しなければなりません。 各タプルセット用のスキーマは、テーブルと同じ数のカラムを持ち、同じフィールド名を使用しなければならない。 例えば、 「Prepare data」 ビュー に、属性 name, demand, insideCost, および outsideCostを持つ Product という入力表がある場合、OPL モデルには以下の定義が含まれている必要があります。tuple TProduct {
key string name;
float demand;
float insideCost;
float outsideCost;
};
{TProduct} Product = ...;OPL入力としてタプルとタプルセットのみを使用するという制限は、データソースとの統合を容易にするためです。 例えば、SQLデータソースにアクセスして、最小限の労力でデータストリームすることができる。 NoSQL データソースにアクセスして、データを自動的にテーブルに変換することができる。 必要であれば、最適化モデル開発者は、最適化中に他のデータ構造を入力するためにデータを再定式化することができますが、この操作は入力データまたは出力データに影響を及ぼしてはなりません。
同様に、Explore ソリューション・ビューにテーブルを表示したい場合は、OPL モデルでこの出力テーブルの '
tuplesetを定義する必要があります。 例えば、以下のコードは、解に 3 つの列を持つ出力表を生成します。/// solution
tuple TPlannedProduction {
key string productId;
float insideProduction;
float outsideProduction;
}
{TPlannedProduction} plan = {<p.name, Inside[p], Outside[p]> | p in Products};DO-samplesの Model_Builder フォルダに、パスタ生産問題のOPLモデル例があります。 すべてのサンプルをダウンロードして解凍できます。 該当する製品およびバージョンのサブフォルダを選択してください。 オンプレミス版の watsonx については、「 Cloud Pak for Data 」内の「 v5.4.x 」サブフォルダにあるサンプルをご利用ください。
詳細情報
- Python DOcplexモデルの作成に関するチュートリアルについては、 Decision Optimization モデルの解決と分析:ダイエット問題を参照のこと。
- OPLモデルの詳細については、 Decision Optimization OPLモデルを参照してください。