如何使用julia宏展开内部产品计算?

时间:2017-08-29 15:20:45

标签: macros julia mathematical-optimization linear

使用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])。因为我事先知道实用程序,所以可以写一个宏来编写一个很好的线性目标函数。对于三个活动,一个宏没有多大帮助,但在实际问题中会有很多活动,所以它会是有帮助的。

我现在已经挣扎了一段时间,我没有得到任何牵引力,有没有人知道如何轻松解决这个问题?

另外,任何其他解决此问题的方法都不会使用宏: - )

1 个答案:

答案 0 :(得分:3)

除非实用程序是JuMP变量,否则您可以这样做 @objective(m,Max,dot(utilities,run)),这不是二次方