-1

我需要帮助。我已经在 CPLEX 上对我的模型进行了编码,现在我想通过将其中一个二进制变量更改为浮动一段时间来解决相同的问题。让我举个例子,对于 10 个时间周期,前两个周期的变量是二进制的,但在最后 8 个周期它将是连续的(松弛的)。我正在尝试解决它 opl 流控制,但我在变量转换方面遇到了一些问题。如果你能帮助我,我会很高兴的

先感谢您

4

1 回答 1

0
dvar float x[1..5] in 0..9.2;


    dvar int intx[1..5];



    maximize sum(i in 1..5) x[i];
    subject to
    {
    forall(i in 1..5)ctx:intx[i]-x[i]==0;


    }

    execute
    {
    writeln("x  : ",x);
    }

    main
    {
    writeln("solve model");

    thisOplModel.generate();
    cplex.solve();
    thisOplModel.postProcess();

    writeln("relax integrity constraint on x for 1 and 2 and solve model");
    cplex.setLb(thisOplModel.ctx[1],-Infinity);
    cplex.setLb(thisOplModel.ctx[2],-Infinity);

    cplex.solve();
    thisOplModel.postProcess();

    writeln("put back integrity constraint on x and solve model");
    cplex.setLb(thisOplModel.ctx[1],0);
    cplex.setUb(thisOplModel.ctx[2],0);
    cplex.solve();
    thisOplModel.postProcess();
    } 

solve model
x  :  [9 9 9 9 9]
relax integrity constraint on x for 1 and 2 and solve model
x  :  [9.2 9.2 9 9 9]
put back integrity constraint on x and solve model
x  :  [9 9.2 9 9 9] enter code here

问候

于 2017-06-14T16:39:51.147 回答