CPLEX:如何获取> 0的dvar值

时间:2019-11-05 12:43:00

标签: cplex

我想带来这些dvar int值中的> 0的最小值(包含-,0,+值)(在约束部分)


forall(r in request)

first_delivery[r] == minl(delivery_time[r][k][j]); that >0

我该怎么做?

非常感谢您。

1 个答案:

答案 0 :(得分:1)

您可以计算新的决策变量以仅保留大于1的值,然后使用min:

dvar int x[1..4];
dvar int x2[1..4]; // derive from x, if x positive then x else max of x+1
dvar int y;
dvar int M; 

subject to
{

x[1]==0;
x[2]==-6;
x[3]==4;
x[4]==5;

M==max(i in 1..4) x[i];

forall(i in 1..4) 
{
x[i]<=0 => x2[i]==M+1;
x[i]>=1 => x2[i]==x[i];
}

y==min(i in 1..4) x2[i];
}

execute
{
writeln("y=",y);
}

给出

y=4