本文介绍了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声明的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-11 17:42