OR-Tools,CP-SAT求解器-最大化然后最大化

时间:2019-05-28 07:50:30

标签: c# constraint-programming maximize or-tools

我用https://developers.google.com/optimization/cp/cp_solver尝试解决约束编程问题,我想最大化一个函数,然后最大化另一个。

我尝试两次调用Maximize,但似乎不起作用。

这是最小的示例代码:

var solver = new CpSolver();
var model = new CpModel();

IntVar var1 = model.NewIntVar(100, 300, "var1");
IntVar var2 = model.NewIntVar(200, 500, "var2");
IntVar var3 = model.NewIntVar(100, 400, "var3");

model.Add(var1 + var2 + var3 == 1000);

int prio1 = 1;
int prio2 = 2;
int prio3 = 1;
int secondPrio1 = 4;
int secondPrio2 = 1;
int secondPrio3 = 5;
LinearExpression priority = prio1 * var1 + prio2 * var2 + prio3 * var3;
LinearExpression secondPriority = secondPrio1 * var1 + secondPrio2 * var2 + secondPrio3 * var3;

model.Maximize(priority); // Is overwritten by second Maximize, does not work
model.Maximize(secondPriority);

CpSolverStatus result = solver.Solve(model);

我希望我的求解器将最大值放入var2(500),因为它具有最高的prio#,然后将最大值放入var3(400),因为它具有最高的secondPrio#。然后,将剩余的(100)分配给var1。

谢谢。

0 个答案:

没有答案