解の妥当性チェック

Pythonで学ぶサプライチェーン分析

Aaren Stubberfield

Supply Chain Analytics Mgr.

解の妥当性チェックのフローチャート

Pythonで学ぶサプライチェーン分析

モデルのステータスを確認

  • Infeasible(実行不能): 実行可能解がない。
    • 制約を見直す
  • Unbounded(非有界): 目的関数が有界でない。最大化/最小化で無限に発散。
    • 目的関数を見直す
  • Undefined(未確定): 最適解はあるかもしれないが未発見の可能性。
    • 現時点の最良解の可能性
    • モデル化の方法を見直す
Pythonで学ぶサプライチェーン分析

結果が期待どおりか確認

意思決定変数 と 目的値 は期待範囲内か?

  • 問題の知識/理解に基づいて判断
  • 「はい」なら妥当な解
  • 「いいえ」なら以下を見直す:
    • Pythonコード
    • データ
    • LPファイルを書き出す
Pythonで学ぶサプライチェーン分析

LPを書き出す

writeLP(filename)
  • filename = 作成するファイル名

出力内容:

  • 問題名
  • 目的関数と最小化/最大化
  • 制約(意思決定変数の Bounds を含む)
  • 意思決定変数
Pythonで学ぶサプライチェーン分析

コード例

\* Aggregate Production Planning *\
Minimize
OBJ: 20 prod_('A',_0) + 17 prod_('A',_1) 
    + 18 prod_('A',_2) + 15 prod_('B',_0) 
    + 16 prod_('B',_1) + 15 prod_('B',_2)
Subject To
_C1: prod_('A',_0) >= 0
_C2: prod_('A',_1) >= 0
_C3: prod_('A',_2) >= 0
_C4: prod_('B',_0) >= 8
_C5: prod_('B',_1) >= 7
_C6: prod_('B',_2) >= 6
Bounds
0 <= prod_('A',_0)
0 <= prod_('A',_1)
0 <= prod_('A',_2)
0 <= prod_('B',_0)
0 <= prod_('B',_1)
0 <= prod_('B',_2)
Generals
prod_('A',_0)
prod_('A',_1)
prod_('A',_2)
prod_('B',_0)
prod_('B',_1)
prod_('B',_2)
Pythonで学ぶサプライチェーン分析

まとめ

妥当性チェックの戦略

  • モデルのステータスを確認
  • 意思決定変数と目的値が期待範囲内か確認
  • 必要に応じて writeLP() を使用
Pythonで学ぶサプライチェーン分析

¡Vamos a practicar!

Pythonで学ぶサプライチェーン分析

Preparing Video For Download...