この Decision Optimization Modeling Assistant の例は、複数概念反復の使用方法、制約内の associated
キーワード、独自のカスタム決定の定義方法、および論理制約の定義方法を示しています。 説明のために、リソース割り当て問題 ShiftAssignment
が使用され、その完成したモデルとデータが DO サンプルに提供されています。
開始前に
- 要件
- Decision Optimization モデルを編集して実行するには、以下の前提条件が必要です。
- 管理者 または 編集者 の役割
- プロジェクト内で 管理者 または 編集者 の役割を持っている必要があります。 共有プロジェクトのビューアーは、エクスペリメントのみを表示できますが、それらを変更したり実行したりすることはできません。
- watsonx.aiランタイムサービス
- プロジェクトに関連付けられたwatsonx.aiRuntimeサービスが必要です。 Decision Optimization エクスペリメントを作成するときに、テストを追加できます。
- デプロイメント・スペース
- Decision Optimization エクスペリメントに関連付けられたデプロイメント・スペースが必要です。 Decision Optimization エクスペリメントを作成するときに、デプロイメント・スペースを選択できます。
このタスクについて
この例では、従業員を異なるシフトに割り当てることについて説明します。毎日、必要な数の従業員をオンコールにする必要があります。 このサンプルで使用されるファイルは、 DO-samplesにあります。
このビデオは、この資料の概念とタスクを学習するための視覚的な方法を提供します。 Decision Optimization エクスペリメントにサンプルをロードした後、ビデオに従うことができます。
ビデオの特記事項: このビデオのいくつかのマイナー・ステップとグラフィカル・ステップは、ご使用のプラットフォームとは異なる場合があります。 ユーザー・インターフェースも頻繁に改善されます。
手順
サンプルをダウンロードして開くには、以下のようにします。
- DO-samplesの Model_Builder サブフォルダーから ShiftAssignment.zip ファイルをダウンロードします。 該当する製品およびバージョンのサブフォルダーを選択します。
- プロジェクトを開くか、空のプロジェクトを作成します。
- 「資産」 タブを選択します。
- 「モデルの処理」 セクションの 「新規資産」>「最適化問題の解決」 を選択します。
- 開いた 「最適化問題の求解 (Solve optimization problems)」 ウィンドウで、 「ローカル・ファイル」 をクリックします。
- ローカルで参照して、ダウンロードした ShiftAssignment.zip アーカイブを見つけて選択します。 「開く」をクリックします。 あるいは、ドラッグ・アンド・ドロップを使用します。
- まだwatsonx.aiRuntimeサービスをプロジェクトに関連付けていない場合は、実験用のデプロイメントスペースを選択する前に、まずAdd aMachine Learningservice を選択してサービスを選択または作成する必要があります。
- 「作成」をクリックします。サンプルと同じ名前で Decision Optimization モデルが作成されます。
- シナリオ・ペインを開き、
AssignmentWithOnCallDuties
シナリオを選択します。
結果
AssignmentWithOnCallDuties
シナリオの 「データの準備」 ビュー で、インポートされたデータ資産を確認できます。 これらの表は、シフトと、そのシフトに割り当てる必要がある従業員、およびその従業員が待機する必要がある日を表しています。
複数概念反復の使用
このタスクについて
各従業員の勤務シフトを 1 日に 1 回までとするいうルールをモデル策定で表現する必要があるとします。 例えば、1 人の従業員に同じ日の 2 つのシフトを割り当てることはできません。 このモデルの定式化に示されているように、各曜日の制約を使用することができます。
しかし、各曜日の制約をリストするのは面倒なことです。モデルがその年の日に基づいていた場合は、これらのタイプの制約を数百個リストする必要があります。 以下の手順では、複数のコンセプトに対する反復を表すために、複数コンセプトの反復と associated
キーワードを使用する方法を示します。 したがって、このようなルールを表現するには、1 つの句のみを使用します。
手順
複数コンセプトの反復を使用するには、以下の手順を実行します。
- サイドバーの モデルの作成 をクリックして、モデルの設計を表示します。モデル策定に、インテントが、目的と制約に応じてシフトに従業員を割り当てることであると表示されます。
- 制約を展開します
For each Employee-Day combination , number of associated Employee-Shift assignments is less than or equal to 1
。
結果
この制約は、従業員と日をキーワード associated
と結合して、式が従業員と日の両方にわたって繰り返されるようにします。 従業員と日にちの組み合わせのうちの従業員が、従業員シフト割り当ての従業員にマップされていることが分かります。 従業員と日にちの組み合わせのうちの日にちも、割り当てられたシフトの日プロパティーにマップされています。 したがって、組み合わせは正しく自動的に処理されます。
この複数コンセプトの反復では、異なるコンセプトを結合するルールの新しいグループを指定できます。
カスタム決定の定義
このタスクについて
待機義務も割り当てる必要があるとします。 従業員を待機中の職務に割り当てる目的で別のモデルを作成することもできますが、その場合、2 つのモデル間の依存関係ルールを記述することはできません。 この例で示すように、既存のモデルにカスタム決定を追加することにより、シフト割り当てと待機義務の間の依存関係を定義できます。 ここで、カスタム決定は OnCallDuties
という名前です。
手順
カスタム決定を定義するには、以下の手順を実行します。
結果
インテントから推測される意思決定のみを使用するように制限されることはなくなりました。 「拡張設定」タブと「意思決定」タブを使用して、独自のカスタム意思決定を定義できるようになりました。ここで、意思決定タイプとそのディメンション (データ・テーブルまたは列) を選択できます。 その後、新しく定義した意思決定を使用する新しいルールおよび目標を構成できます。
論理制約の使用
このタスクについて
従業員が休暇中のときは待機義務が割り当てられないようにしたいとします。 そのためには、以下のように論理制約を使用します。
手順
論理制約を使用するには:
- 制約を確認する この制約により、従業員と日の組み合わせごとに、関連する割り当てが存在しない場合 (例えば、従業員がその日に休暇中の場合)、その日にその従業員にオンコールの職務が割り当てられることがなくなります。 この論理制約を定義するために
if...then
キーワードを使用することに注意してください。 - オプション: 候補を検索して、他の論理制約をモデルに追加します。
結果
この制約は、従業員の割り当てを、待機義務があるシフトにリンクします。 個別のモデルを使用すると、1 つは元のシフト割り当て用、もう 1 つは待機中の職務用に、このリンクを達成できません。
論理制約を associated
キーワードと一緒に使用することにより、ある制約が適用される場合に別の制約も適用されるように指定できます。 複雑な結合式を使用しなくても、参照している概念の間に必要な論理的接続が自動的に行われます。