2017-08-29 41 views
0

使用跳我要讓這樣的目標函數:如何使用julia宏展開內積計算?

@objective(m, Max, 19*run[1] + 15*run[2] + 15*run[3]) 

...其中19,15和15是活動的實用工具,並運行[i]是描述如果活動二進制跳變應該運行或不運行。

我想使生成該目標的一個宏,使得給定的實用程序的列表=(19,15,15),而不是上述情況,我可以寫這樣的事:

@myObjective(米,最大值,實用程序,運行)

並且它的功能與上面輸入的目標類似。 (推理是我不想使用二次方目標,所以我不能使用JuMP變量「實用程序」並讓目標爲和(run [i] * utility [i])。然而,既然我事先知道這些公用事業,可以編寫一個宏來編寫一個很好的線性目標函數,對於三個活動來說,一個宏不會有什麼幫助,但是真正的問題會有很多活動,所以它會是有幫助的。

我一直在掙扎了一段時間了,我沒有得到任何牽引,沒有人知道如何輕鬆解決這一問題?

而且任何其他方法來解決無法使用宏將這個問題有用:-)

回答

3

除非公用事業是一個跳變,你可以做 @objective(男,馬克斯,點(公用事業,運行)),這不是二次

+0

這解決了問題。 (「import base:dot」是必要的,但這當然是一個細節。)謝謝;) – Rmz