Macros 如何使用julia宏展开内积计算?

Macros 如何使用julia宏展开内积计算?,macros,julia,mathematical-optimization,Macros,Julia,Mathematical Optimization,使用JuMP,我想做一个如下的目标函数: @objective(m, Max, 19*run[1] + 15*run[2] + 15*run[3]) 。。。其中19、15和15是活动的实用程序,run[i]是一个二进制跳转变量,描述活动是否应该运行 我想制作一个生成此目标的宏,这样,在给定一个实用程序=(19,15,15)列表的情况下,我可以编写如下内容: @myObjective(m, Max, utilities, run) 这就像我在上面输入的目标一样 (原因是我不想使用二次目标,所

使用JuMP,我想做一个如下的目标函数:

@objective(m, Max,  19*run[1] + 15*run[2] + 15*run[3])
。。。其中19、15和15是活动的实用程序,
run[i]
是一个二进制跳转变量,描述活动是否应该运行

我想制作一个生成此目标的宏,这样,在给定一个
实用程序=(19,15,15)
列表的情况下,我可以编写如下内容:

@myObjective(m, Max, utilities, run)
这就像我在上面输入的目标一样

(原因是我不想使用二次目标,所以我不能使用跳转变量“效用”,而让目标是
sum(run[I]*utility[I])
。但是,因为我事先知道实用程序,所以可以编写一个宏来编写一个好的线性目标函数。对于三个活动,一个宏不会有多大帮助,但在实际问题中,会有很多活动,所以它会很有帮助

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


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

除非
实用程序是一个跳转变量,否则您可以这样做

@objective(m,Max,dot(utilities,run))
,这不是二次的

除非
utilities
是一个跳转变量,否则您可以这样做
@objective(m,Max,dot(实用程序,运行))
,这不是二次的

这解决了问题。(“导入基数:点”是必要的,但这当然是一个细节。)谢谢;)这就解决了问题。(“导入基数:点”是必要的,但这当然是一个细节。)谢谢;)