在Python Gurobi函数中,如何使用“字符串”将“线性表达式”作为参数引用?

2024-04-26 18:45:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的Python代码来定义一堆“obj”:

obj1=LinExpr(sumOFw_plusPLUSw_minus)
obj2=LinExpr(quicksum(epsilon[s] for s in N)) 

其中“sumOFw_plusPLUSw_minus”是表达式,“epsilon”是Var类型。在

我想让它参数化,以便以后可以添加更多的客观表达式。为了应用它,我尝试在循环中准备一个字符串,并使用下面的字符串调用上面的表达式,但是在第5行得到了一个“GurobiError:Unable to convert parameter to a expression”。在

^{pr2}$

Tags: to字符串代码objfor定义表达式plus
1条回答
网友
1楼 · 发布于 2024-04-26 18:45:38

问题是'obj'+str[i]只是一个Python字符串,而不是一个对象。Gurobi不知道如何将目标值设置为字符串,它正在寻找一个目标表达式。在

要根据参数获取不同的目标函数,可以声明目标成本,并将其存储在列表中。例如:

cost =[]
cost[0] = LinExpr(sumOFw_plusPLUSw_minus)
cost[1] = LinExpr(quicksum(epsilon[s] for s in N)) 
...

现在,您可以根据索引i的值调用成本列表中相应的元素来设置目标。(您甚至可以添加不同的元素,只要它们是有效的和线性的)

^{pr2}$

只要列表中的每个元素都是模型m中决策变量的有效线性表达式,m.setObjective(valid_obj, GRB.MINIMIZE)就可以工作。在

相关问题 更多 >