约束中的方法

时间:2019-04-23 09:54:04

标签: constraints cplex

我有一个二进制变量形式的cplex约束,将一个> =的数字乘以另一个数字。 第二个数字计算起来很复杂,我想我需要一种方法来计算它,有可能在cplex中编写这样的约束:

k*y[i] > method(parameter1,parameter2)

在该方法中,我需要访问二进制变量值。 非常感谢您的答复。

2 个答案:

答案 0 :(得分:1)

让我尝试这个oulipo挑战。 编写一个有效的OPL模型,其中包含您编写的内容。

可以

float k=1.2;
dvar boolean y[1..1];
int parameter1=1;
int parameter2=2;
dvar boolean x;
dexpr float method[i in 1..10,j in 1..10]=x*(i+j);

subject to
{
forall(i in 1..1)
  k*y[i] >= method[parameter1,parameter2];
}

帮助?

致谢

PS:

您以后的评论:

float k=1.2;
dvar boolean y[1..1];
int parameter1=1;
int parameter2=2;
dvar boolean x;
float methodresults[i in 1..10,j in 1..10]; //=x*(i+j);
range r=1..10;
execute
{
function method(i,j)
{
return i+j;
}

for(var i in r) for (var j in r) methodresults[i][j]=method(i,j);
}


subject to
{
forall(i in 1..1)
  k*y[i] >= x*methodresults[parameter1,parameter2];
}

答案 1 :(得分:0)