CPLEX OPL在约束规划算法中使用决策变量作为浮点数

问题描述 投票:0回答:1
using CP;
int rows=3;
int columns=3;
range para=1..rows*columns;
float model1[para]=...;
dvar float+ model0[para];
maximize 
sum(p in para) model0[p]*(lg(model0[p]/model1[p]));
  subject to{
    c1:
    sum(p in para)
    model0[p]==3.0;    
    }

我正在尝试运行上面的代码,但dvar float +中有错误

optimization cplex
1个回答
0
投票

CPOptimizer的决策变量不能为浮点数。

在示例floatexpr.mod中可以看到,可以使用float dexpr以便使用从整数决策变量中计算出的十进制值。

根据您的情况:

using CP;

execute
{
cp.param.timelimit=10;
}

int scale=1000;
int rows=3;
int columns=3;
range para=1..rows*columns;
float model1[p in para]=p/10;

dvar int+ scalemodel0[para];
dexpr  float model0[p in para]=scalemodel0[p]/scale;
maximize 
sum(p in para) model0[p]*(lg(model0[p]/model1[p]));
  subject to{
    c1:
    sum(p in para)
    model0[p]==3.0;    
    } 
© www.soinside.com 2019 - 2024. All rights reserved.