我面临二次客观项的问题。为了说明我的意图,我编写了一个非常简单的代码。
代码解释:我们想给一个女孩糖果。女孩收到 1 颗糖果的喜悦 ( joy_per_candy
) 取决于她收到的糖果总数。我们给她的糖果越多,她就越少joy_per_candy
。目标是最大化她的总快乐,这是一个二次项:
total_joy = candies * joy_per_candy
在低于 1 个糖果的情况下,joy_per_candy 为 10;10 个糖果产生一个joy_per_candy
0。这是一条快乐曲线。简单的数学表明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]
预求解时间:0.00s
GurobiError