麦田

不积跬步无以至千里.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我正在使用并最大化开始。最佳解决方案不会影响创建(我指的是约束)的其他变量,所以我认为没有强制执行,但我说都有强制执行的,那么为什么它们不起作用呢?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));

 

posted on 2025-02-19 17:04  一些记录  阅读(25)  评论(0)    收藏  举报