谢谢你的时间。
我有一个线性程序,不知道如何表达一种约束形式,即使它是可能的。也许这里有人知道解决方案。
一家公司组装并销售由 3 种成分 a、b 和 c 组成的混合物,其中 a = b = c。
每种成分可以来自 2 个工厂:f1 和 f2。
每种成分的成本整天都在波动,并且每个工厂之间的成本都不同。
每个工厂以一对夫妇的形式提供每种成分的成本:(成本,可用数量)。
我想表达的约束(不影响现有的目标函数)但我不知道如何表达:
避免选择高于我的销售价格的制造成本。
例如,在时间 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。
但目前我只处理 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 约束,因为我不知道如何制定它,这就是我要问的),基于当前的一些目标(例如:我更喜欢以相同的总成本在工厂之间公平分配金额,而不是偏袒一家工厂),
我可以得到:
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。
...
谢谢