御時間ありがとうございます。
私は線形プログラムを持っていますが、制約の形式をどのように表現できるか、またそれが可能であったとしてもわかりません。ここにいる誰かが解決策を知っているかもしれません。
ある会社は、a = b = c の 3 つの成分 a、b、c で構成される混合物を組み立てて販売しています。
各成分は、f1 と f2 の 2 つの工場から取得できます。
各食材の価格は一日中変動しており、工場ごとに異なります。
各工場は、対のリストの形式で各材料のコストを提供します: (cost, availableAmount)。
(既存の目的関数に影響を与えずに) 表現したい制約は、その方法がわかりません:
販売価格よりも大きい製造コストを選択することは避けてください。
たとえば、時間 t でのコストは次のようになります。
- for ingredient a :
f1 : (10$, 5.1), (11$, 10.2), (13$, 20.5)
f2 : (11$, 1.), (12$, 15.2), (13$, 6.9)
- for ingredient b :
f1 : (15$, 8.3), (16$, 20.), (18$, 10.7)
f2 : (15$, 4.2), (16$, 15.1), (18$, 19.3)
- for ingredient c :
f1 : (31$, 2.), (34$, 3.5), (37$, 14.9)
f2 : (30$, 4.7), (32$, 9.2), (35$, 12.4)
maximumAllowedQuantity と maximumAllowedCost の 2 つの入力定数の最適な再分割を取得したいと考えています。
しかし、現在、私は maximumAllowedQuantity のみを処理しており、 maximumAllowedCost も処理したいと考えています(これが私の質問の目的です)。
各コストの金額で構成される結果のソリューションは、出力変数になります。
amountAF1_1, amountAF1_2, amountAF1_3
amountAF2_1, amountAF2_2, amountAF2_3
amountBF1_1, amountBF1_2, amountBF1_3
amountBF2_1, amountBF2_2, amountBF2_3
amountCF1_1, amountCF1_2, amountCF1_3
amountCF2_1, amountCF2_2, amountCF2_3
たとえば、提供されたサンプルデータを使用し、入力 maximumAllowedQuantity = 15 に対して ( maximumAllowedCost 制約がないため、それを定式化する方法がわからないため、これが私が尋ねるものです)、現時点のいくつかの目的に基づいています (例: 私が好む)同じ総コストで工場間で金額を公平に分割し、1 つの工場を優先しないようにするため)、
次のようになります。
amountAF1_1 = 5.1, amountAF1_2 = 4.9, amountAF1_3 = 0.
amountAF2_1 = 0., amountAF2_2 = 5., amountAF2_3 = 0.
amountBF1_1 = 5., amountBF1_2 = 0., amountBF1_3 = 0.
amountBF2_1 = 4.2, amountBF2_2 = 5.8, amountBF2_3 = 0.
amountCF1_1 = 2., amountCF1_2 = 3.5, amountCF1_3 = 2.
amountCF2_1 = 4.7, amountCF2_2 = 2.8, amountCF2_3 = 0.
コスト面で要約できるのは次のとおりです。
5.1a at 10$, 4.9a at 11$, 5.0a at 12$,
9.2b at 15$, 5.8b at 16$,
4.7c at 30$, 2.0c at 31$, 2.8c at 32$, 3.5c at 34$, 2.0c at 37$
得られた混合物をコストで分解すると、次のようになります。
4.7 mixtures at 10 + 15 + 30 = 55$,
0.4 mixtures at 10 + 15 + 31 = 56$,
1.6 mixtures at 11 + 15 + 31 = 57$,
2.5 mixtures at 11 + 15 + 32 = 58$,
0.3 mixtures at 11 + 16 + 32 = 59$,
0.5 mixtures at 11 + 16 + 34 = 61$,
3.0 mixtures at 12 + 16 + 34 = 62$,
2.0 mixtures at 12 + 16 + 37 = 65$,
ここでの最大費用は 65$ です。
しかし、私の販売価格が 60$ の場合、お金を失うのを避けるために:
どうすれば maximumAllowedCost = 60$ という制約を追加できますか?
注意: 単純に前の結果を (maximumAllowedCost 制約なしで) 取り、コスト > 60$ の金額を削除することはできません。総量が小さい場合、私の目的関数はコスト <= 60 の数量に対して別の再分割を与えるためです: ここでは 9.5 (15 - 0.5 - 3.0 - 2.0) 以前の 15 ではなく。
...
ありがとう