使用JuMP我想制作一个像这样的目标函数:
@objective(m, Max, 19*run[1] + 15*run[2] + 15*run[3])
...其中19,15和15是活动的实用程序,run [i]是一个二进制JuMP变量,描述是否应该运行活动。
我想创建一个生成此目标的宏,以便给定一个实用程序列表=(19,15,15)而不是上面的内容,我可以这样写:
@myObjective(m,Max,utilities,run)
这将起到我上面输入的目标的作用。
(原因是我不想使用二次目标,所以我不能使用JuMP变量“实用程序”并且让目标为sum(run [i] * utility [i])。因为我事先知道实用程序,所以可以写一个宏来编写一个很好的线性目标函数。对于三个活动,一个宏没有多大帮助,但在实际问题中会有很多活动,所以它会是有帮助的。
我现在已经挣扎了一段时间,我没有得到任何牵引力,有没有人知道如何轻松解决这个问题?
另外,任何其他解决此问题的方法都不会使用宏: - )
答案 0 :(得分:3)
除非实用程序是JuMP变量,否则您可以这样做 @objective(m,Max,dot(utilities,run)),这不是二次方