【发布时间】:2017-08-29 15:20:44
【问题描述】:
使用 JuMP 我想制作一个像这样的目标函数:
@objective(m, Max, 19*run[1] + 15*run[2] + 15*run[3])
...其中 19、15 和 15 是活动的实用程序,run[i] 是一个二进制 JuMP 变量,描述是否应该运行活动。
我想制作一个生成这个目标的宏,这样给定一个utilities=(19, 15, 15) 列表而不是上面的,我可以写这样的东西:
@myObjective(m, Max, utilities, run)
这将像我在上面输入的目标一样发挥作用。
(原因是我不想使用二次目标,所以我不能使用 JuMP 变量“实用程序”并让目标为sum(run[i]*utility[i])。但是因为我事先知道实用程序,也许可以写一个宏来写一个很好的线性目标函数。对于三个活动,一个宏不会有太大帮助,但在实际问题中会有很多活动,所以它会有所帮助。
我已经苦苦挣扎了一段时间,但我没有得到任何牵引力,有人知道如何轻松解决这个问题吗?
此外,任何其他不使用宏来解决此问题的方法都会很有用:-)
【问题讨论】:
标签: macros julia mathematical-optimization