在约束分配中使用决策变量 - PuLP
use of decision variables in constraint assignments - PuLP
我正在使用线性规划解决一个特定问题,并试图让自己熟悉 PuLP。我的问题是我的几个约束只包含一些决策变量,我正在尝试找到一种有效的方法来 select 它们。
我的意思是:
我为所有决策变量设置了一个列表。
investments = ["1_t1", "2_t1", "1_t2", "2_t2", "1_t3", "2_t3"]
然后我将这些变量放入字典中。
invmt_vars = LpVariable.dicts("Invmts",investments,lowBound=0,cat='Continuous')
然后我设置 Objective 函数,简单地作为这些变量的总和。
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"
例如,如果我可以简单地将决策变量留在列表中并使用 range
循环,那就太好了。
感谢任何意见。
Pulp 利用列表理解的力量来做到这一点,请查看 http://www.secnetix.de/olli/Python/list_comprehensions.hawk
中的文档
我正在使用线性规划解决一个特定问题,并试图让自己熟悉 PuLP。我的问题是我的几个约束只包含一些决策变量,我正在尝试找到一种有效的方法来 select 它们。
我的意思是:
我为所有决策变量设置了一个列表。
investments = ["1_t1", "2_t1", "1_t2", "2_t2", "1_t3", "2_t3"]
然后我将这些变量放入字典中。
invmt_vars = LpVariable.dicts("Invmts",investments,lowBound=0,cat='Continuous')
然后我设置 Objective 函数,简单地作为这些变量的总和。
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"
例如,如果我可以简单地将决策变量留在列表中并使用 range
循环,那就太好了。
感谢任何意见。
Pulp 利用列表理解的力量来做到这一点,请查看 http://www.secnetix.de/olli/Python/list_comprehensions.hawk
中的文档