【问题标题】:Dual of a constraint约束的对偶
【发布时间】:2018-10-15 17:49:04
【问题描述】:

我正在尝试为随附的代码找到约束的对偶值。我只提到了我想找到对偶的约束。如何找到代码中提到的constraint6的对偶?

int NbJobs=10;
int NbMachines=2;

range Job=1..NbJobs;
range Machine= 1..NbMachines;

int JobProcessTime[Job]=...;
int JobReadyTime[Job]=...;
int JobSize[Job]=...;
int JobDueDate[Job]=...;
int MachineCapacity[Machine]=...;

float E=99999;
float e=.000001;
float Dual1[Job]=...;
tuple Batches{
    key int id;
    int BatchSetup[Job];
    float BatchReadyTime;
    float BatchProcessTime;
}
{Batches} BatchConfig=...;

dvar boolean NbTardy[Job];
dvar boolean BatchSelected[BatchConfig][Machine];
dvar float+ BatchCompletionTime[BatchConfig][Machine];
dvar float+ JobCompletionTime[Job];

minimize sum(j in Job) NbTardy[j];
subject to {
    forall (j in Job, b in BatchConfig, m in Machine) Constraint6: JobCompletionTime[j]>= BatchCompletionTime[b][m]- E*(1-b.BatchSetup[j]*BatchSelected[b][m]);
}

【问题讨论】:

    标签: cplex opl


    【解决方案1】:

    由于您的模型是 MIP,因此您无法直接获得双重价值。

    见技术说明http://www-01.ibm.com/support/docview.wss?uid=swg21399941

    https://www.ibm.com/developerworks/community/forums/html/topic?id=978e90f6-8fc5-4be7-a306-df9bdb4a4754&ps=25我贴了一个例子:

    dvar int x in 0..10;
    dvar float y in 0..10;
    
    minimize x+y;
    subject to {
      ctx :   
        x >= 1/2;
      cty:
        y>=1/2;
    }
    
    main {
      var status = 0;
      thisOplModel.generate();
      if (cplex.solve()) {
        writeln("Integer Model");   
        writeln("OBJECTIVE: ",cplex.getObjValue());   
        writeln("dual CTX:",thisOplModel.ctx.dual);
        writeln("dual CTY:",thisOplModel.cty.dual);
      }
      var xvalue=thisOplModel.x.solutionValue;
    
      thisOplModel.convertAllIntVars();
      thisOplModel.x.UB=xvalue;
      thisOplModel.x.LB=xvalue;
      if (cplex.solve()) {
        writeln("Relaxed Model");   
        writeln("OBJECTIVE: ",cplex.getObjValue());  
        writeln("dual CTX:",thisOplModel.ctx.dual);
        writeln("dual CTY:",thisOplModel.cty.dual);
      }
    
    } 
    

    给了

    Integer Model
    OBJECTIVE: 1.5
    dual CTX:undefined
    dual CTY:undefined
    Relaxed Model
    OBJECTIVE: 1.5
    dual CTX:0
    dual CTY:1
    

    【讨论】:

      猜你喜欢
      • 2022-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-01-01
      相关资源
      最近更新 更多