本文介绍了CPLEX:带条件的dvar声明的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用CPLEX并使用以下内容声明dvar:
I am using CPLEX and declaring the dvar with the following:
dvar int+ Y[i in a][j in a][m in b] in 0..1
当i = j时,我不想创建变量.
I do not want to create a variable when i = j.
推荐答案
变量索引器是不允许的,但是您有3种解决方法:
variable indexer are not allowed but you have 3 workarounds:
https://github.com/AlexFleischerParis/zooopl/blob/master/zooarrayvariableindexertupleset.mod https://github.com/AlexFleischerParis/zooopl/blob/master/zooarrayvariableindexerdexprpr.mod https://github.com/AlexFleischerParis/zooopl/blob/master/zooarrayvariableindexerunion.mod
第一个是最常用的,对于您的情况,它给出:
The first one is the most used and for your case this gives:
{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声明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!