我面臨着二次客觀術語的問題。爲了說明我的意圖,我編了一個非常簡單的代碼。Gurobi Python界面中的二次客觀術語
代碼解釋:我們要給一個女孩糖果。女孩喜歡收到1顆糖果(joy_per_candy
)取決於她收到的糖果總數。我們給她的糖果越少,她的joy_per_candy
。的目標是最大化她的總喜悅,這是二次項:
total_joy = candies * joy_per_candy
在低於1種糖果的情況下產生的10 joy_per_candy; 10顆糖果產生joy_per_candy
爲0.這是一個joy curve。簡單的數學表明,total_joy
最大化爲candies = 5
。
我該如何解決這個問題?
joy_curve = [(1,10),(10,0)]
m = Model('candy')
candies=m.addVar(ub=joy_curve[1][0])
joy_per_candy=m.addVar(ub=joy_curve[0][1])
m.update()
total_joy=QuadExpr(candies*joy_per_candy)
m.setObjective(total_joy,GRB.MAXIMIZE)
m.optimize()
結果:
優化與0行,2列和0的非零元素的模型。
模型具有1個二次目標術語
矩陣範圍[0E + 00,0E + 00]
目的範圍[0E + 00,0E + 00]
界範圍[3E + 00 ,1E + 01]
RHS範圍[0E + 00,+ 0E 00]
Presolve時間:0.00S
GurobiError