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;
}
我正在使用 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;
}