我有下面的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}$
问题是'obj'+str[i]只是一个Python字符串,而不是一个对象。Gurobi不知道如何将目标值设置为字符串,它正在寻找一个目标表达式。在
要根据参数获取不同的目标函数,可以声明目标成本,并将其存储在列表中。例如:
现在,您可以根据索引
^{pr2}$i
的值调用成本列表中相应的元素来设置目标。(您甚至可以添加不同的元素,只要它们是有效的和线性的)只要列表中的每个元素都是模型
m
中决策变量的有效线性表达式,m.setObjective(valid_obj, GRB.MINIMIZE)
就可以工作。在相关问题 更多 >
编程相关推荐