在约束分配中使用决策变量 - PuLP

时间:2017-03-28 01:46:56

标签: python loops dictionary constraints pulp

我正在研究利用线性编程的特定问题,并试图熟悉PuLP。我的问题是我的一些约束只包含一些决策变量,我试图找到一种有效的方法来选择它们。

这就是我的意思:

我为所有决策变量设置了一个列表。

investments = ["1_t1", "2_t1", "1_t2", "2_t2", "1_t3", "2_t3"]

然后我将这些变量放在字典中。

invmt_vars = LpVariable.dicts("Invmts",investments,lowBound=0,cat='Continuous')

然后我设置目标函数,就像这些变量的总和一样。

prob += lpSum(invmt_vars[i] for i in invmt_vars), 'Sum of all investments'

然后我有像这个例子的约束:

prob += 1_t1 + 2_t2 + 3_t2 <= 25

这适用于较少数量的变量,但我最终想要添加数百个变量。有没有办法循环变量字典,以便我只获取我正在寻找的变量,而不必全部输入?

到目前为止,我实际上只看到了涉及在整个字典中循环的约束赋值,如下所示:

prob += lpSum([ingredient_vars[i] for i in Ingredients]) == 100, "PercentagesSum"

例如,如果我可以简单地将Decision Variables留在列表中并使用range循环,那就太棒了。

我感谢任何意见。

1 个答案:

答案 0 :(得分:2)

Pulp利用列表推导的力量来查看http://www.secnetix.de/olli/Python/list_comprehensions.hawk

中的文档