インポートされたデータの参照とモデルでの解の出力の定義

Python DOcplex モデルまたは OPL モデルの場合、以下の構文を使用して、インポートされたデータを参照できます。

Python モデル

Python DOcplex モデルの場合、 エクスペリメント UI「データの準備」 ビュー でインポートしたデータには、入力辞書からアクセスできます。 インポートしたデータにアクセスするには、構文 inputs['tablename']を使用して各表を定義する必要があります。 例えば、次のコード行では、food は diet_foodという表から定義されたエンティティーです。
food = inputs['diet_food']
同様に、 エクスペリメント UI「ソリューションの探索」 ビュー に表を表示するには、構文 outputs['tablename']を使用してそれらを指定する必要があります。 例:
outputs['solution'] = solution_df
solutionという出力テーブルを定義します。 Python モデルのエンティティー solution_df がこのテーブルを定義します。

この国会の例は、 DO-samplesModel_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 」サブフォルダにあるサンプルをご利用ください。

詳細情報