我正在使用并最大化开始。最佳解决方案不会影响创建(我指的是约束)的其他变量,所以我认为没有强制执行,但我说都有强制执行的,那么为什么它们不起作用呢?OptionalIntervalVarOptionalIntervalVarstarts[j]+sizes[j]==ends[j]CpModelStats
这就是我创建 :IntervalVars
std::vector<IntVar> starts; std::vector<IntVar> sizes; std::vector<IntVar> ends; std::vector<BoolVar> actives; std::vector<IntervalVar> Intervals; for (int j=0; j<nbTasks; j++) { const IntVar start = cp_model.NewIntVar(Domain(0, tmax)); // generamos una variable intervalo const IntVar end = cp_model.NewIntVar(Domain(0, tmax)); // para cada job const BoolVar active = cp_model.NewBoolVar(); const IntVar size = cp_model.NewConstant(duration[j]); //const IntervalVar interval = cp_model.NewIntervalVar(start, size, end); // start+size==end const IntervalVar interval = cp_model.NewOptionalIntervalVar(start, size, end, active); starts.push_back(start); sizes.push_back(size); ends.push_back(end); actives.push_back(active); Intervals.push_back(interval); }
和 CpModelStatus:
WARNING: Logging before InitGoogleLogging() is written to STDERR I0130 12:29:51.027925 23261 cp_rcpsp.cpp:1028] CpSolverResponse: status: OPTIMAL objective: 119978 best_bound: 119978 booleans: 18 conflicts: 0 branches: 26 propagations: 4 integer_propagations: 44 walltime: 0.00252666 usertime: 0.00252667 deterministic_time: 2.44e-06 primal_integral: 0.29268 I0130 12:29:51.030489 23261 cp_rcpsp.cpp:1029] Optimization model '': #Variables: 30 (6 in objective) - 6 in [0,1] - 12 in [0,20000] - 12 constants in {0,1,2,3,20,6000,8000,8187,10000,19113,33641,50000} #kCumulative: 2 #kInterval: 6 (#enforced: 6) #kLinear1: 13 #kLinear2: 7
这就是我的目标:
cp_model.Maximize(LinearExpr::Sum(starts));

浙公网安备 33010602011771号