将 % 约束与单位约束混合

时间:2020-12-27 11:00:12

标签: pulp

是否可以直接将 % 约束与单位约束混合? 对我来说,这是不可能的。

有一个来自 StackOverflow 的修改后的双重约束示例来说明我的问题。

RDF 是单位,IBU 是百分比:

Ingredients = ['Beer 1', 'Beer 2', 'Beer 3', 'Beer 4']

RDF = {'Beer 1': 250, 
     'Beer 2': 350, 
     'Beer 3': 400, 
     'Beer 4': 500}

IBU = {'Beer 1': 15, 
     'Beer 2': 40, 
     'Beer 3': 25, 
     'Beer 4': 40}

prob = LpProblem("BeerTest", LpMinimize)
ingredient_vars = LpVariable.dicts("Ingr",Ingredients,0)
prob += lpSum([ingredient_vars[i] for i in Ingredients]) == 100, "PercentagesSum"
prob += lpSum([RDF[i] * ingredient_vars[i] for i in Ingredients]) >= 520, "RDF" // Units constraint
prob += lpSum([IBU[i] * ingredient_vars[i] for i in Ingredients])/100 >= 67, "IBU" // % constraint

如果这段代码是错误的,你如何将基于 % 的约束与基于单位的约束混合在一起,这可能吗?

  1. 在运行线性程序之前,我是否必须将所有内容都转换为基于 % 的约束?

  2. 或者,相反,我是否必须将所有基于 % 的约束转换为单位?

  3. 如果我将 IBU 转换为小数会怎样?够了吗?

  4. 在这个例子中:https://towardsdatascience.com/portfolio-linear-optimization-breakdown-f519546ed1ff

作者似乎将基于 % 的约束与单位约束混合在一起。他已将 % 约束转换为单位约束,字典由 % 以十进制格式或 booleans 组成。这很“容易”,因为他将 100 000 美元作为主要投资约束,但如果投资是 453 225 美元,你明白我的意思吗?

也许卡布杜拉你在那里? 祝你有美好的一天!

谢谢

0 个答案:

没有答案