【问题标题】:How to unroll an inner product calculation using julia macro?如何使用 julia 宏展开内积计算?
【发布时间】: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


    【解决方案1】:

    除非 utilities 是一个 JuMP 变量,否则你可以这样做 @objective(m, Max, dot(utilities, run)),这不是二次的

    【讨论】:

    • 这样就解决了问题。 (“import Base: dot”是必要的,但这当然是一个细节。)谢谢;)
    猜你喜欢
    • 1970-01-01
    • 2020-01-29
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    相关资源
    最近更新 更多