CPLEX:带条件的 dvar 声明

CPLEX: dvar declaration with conditions

我正在使用 CPLEX 并使用以下内容声明 dvar:

dvar int+ Y[i in a][j in a][m in b] in 0..1

我不想在 i = j 时创建变量。

不允许使用变量索引器,但您有 3 个解决方法:

https://github.com/AlexFleischerParis/zooopl/blob/master/zooarrayvariableindexertupleset.mod https://github.com/AlexFleischerParis/zooopl/blob/master/zooarrayvariableindexerdexpr.mod https://github.com/AlexFleischerParis/zooopl/blob/master/zooarrayvariableindexerunion.mod

第一个是最常用的,对于你的情况,它给出了:

{int} a={1,2};
{int} b={4,5};

tuple t
{
  int i;
  int j;
}

{t} ijs={<i,j> | i,j in a:i!=j};

//dvar int+ Y[i in a][j in a][m in b] in 0..1

dvar int+ Y[ij in ijs][m in b] in 0..1;

subject to
{
  Y[<1,2>][4]==1;
}