Alteryxの処方的分析カテゴリの最適化ツールのサンプルワークフローを読み解いていきたいと思います。
前回の記事では、「1 Optimization Model Input Modes」を読み解いたので、残りのワークフローを見ていきましょう。
今回は、ヘルプの「サンプルワークフロー」の「Predictive tool samples」の「Prescriptive Analytics」にある「2 Optimization Mixing Problem」を見ていきます。
2 Optimization Mixing Problem
まず、ワークフローの説明文を見ていきましょう。
設問
線形計画法(LP)の典型的な問題の「混合問題(Mixed Problem)」がありますが、このサンプルワークフローではこの問題を取り扱っています。
このタイプの問題では、栄養や収益を最大化、コストを最小化するためにたいていいくつかの材料や製品を組み合わせる必要があります。
このサンプルでは、3つの材料があります。
- 石灰石(Limestone)
- コーン(Corn)
- 大豆(Soybean)
各材料の1キログラム内に含まれるカルシウム、たんぱく質、食物繊維の量は決まっています。低コストで1キログラムの食事を作りたいですが、それと同時にその食事には以下の制限があります。
- カルシウム(Calsium)は最低0.008kg、最大0.012kg
- たんぱく質(Protein)は最低0.22kg
- 食物繊維(Fiber)は最大0.05kg
ビジネス上の問題:それぞれの材料は何kg選ぶべきでしょうか?最終的なコストはいくらですか?
成分・条件表:
方程式への落とし込み
1. 変数を選ぶ
使用する材料を選ぶので、Limestone、Corn、Soybeanの数量を求める必要があります。なので、変数(variable)はLimestone、Corn、Soybeanの3つとなります。
2. ビジネス上の目的(Objective)を確認する
Objectiveは、コストの最小化です。つまり、以下のようになります。
Objective = Limestone * 10 + Corn * 30.5 + Soybean * 90
これをO入力に入れる場合は、lb、ubは、lbについては0、ubについては特に限界はないのでInfでオッケーです。typeについては、今回は量を指定するので、Cで良いです。
variable | coefficient | lb | ub | type |
---|---|---|---|---|
Limestone | 10 | 0 | Inf | C |
Corn | 30.5 | 0 | Inf | C |
Soybean | 90 | 0 | Inf | C |
となります。
3. 制約条件を確認する
カルシウム(Calsium)は最低0.008kg、最大0.012kg、たんぱく質(Protein)は最低0.22kg、食物繊維(Fiber)は最大0.05kgなので、それぞれ以下のような条件となります。
Calsium >= 0.008
Calsium <= 0.012
Protein >= 0.22
Fiber <= 0.05
ただし、この左辺は要注意で、Calsium、Protein、Fiberという変数があるわけではありません。それぞれは使った各材料の中に含まれているので、以下の式で表現できます。
Calsium = Limestone * 0.38 + Corn * 0.001 + Soybean * 0.002
Protein = Corn * 0.09 + Soybean * 0.5
Fiber = Corn * 0.02 + Soybean * 0.08
また、1kgの食事を作るので、
1 = Limestone + Corn + Soybean
となります。
これをA入力、B入力で表現します。
A入力
Limestone | Corn | Soybean |
---|---|---|
0.38 | 0.001 | 0.002 |
0.38 | 0.001 | 0.002 |
0 | 0.09 | 0.5 |
0 | 0.02 | 0.08 |
1 | 1 | 1 |
B入力
constraint | dir | rhs |
---|---|---|
Calsium_min | >= | 0.008 |
Calsium_max | <= | 0.012 |
Protein | >= | 0.22 |
Fiber | <= | 0.05 |
total | == | 1 |
今回気をつけるのは、Calsiumの条件が最小、最大とあるので、A入力には同じ内容が2段入ります。
4. ワークフローの構築
各パラメータはすべて手入力し、テキスト入力ツールで入力しました。
設定
今回は、コストを最小化するため、「対象を最大化しますか」はチェックを入れません。
O入力
A入力
B入力
S出力
D出力
I出力
まとめ
「混合問題(Mixed Problem)」の典型的な問題を最適化ツールを使って解きました。
サンプルワークフロー
Designer に付属のワークフローで問題ないですが、念のためにアップロードしておきます。
コメント