-2

如何使用 IBM CPLEX 对线性程序进行编码?

在这张图片中,u,v 代表图形的边缘。

4

1 回答 1

1

我会使用三元运算符。

让我给你一个起点:

{int} E=asSet(1..10);

int V[u in E,v in E]=u+v;

int nbK=2;
int nbN=4;

range N=1..nbN;
range K=1..nbK;

int U[k in K]=2*k;
int C0=1;

dvar boolean y[E][E];
dvar boolean x[E][E][K];

minimize sum(u,v in E) y[u][v]*V[u][v];

subject to
{

forall(u,v in E,k in K) 
{
forall(k in K) sum(w in N) x[u][w][k]-sum(v in N) x[v][u][k]==  
( (u==C0)?1:(u==U[k]?-1:0) );

forall(u,v in E,k in K) x[u][v][k]<=y[u][v];
}
}
于 2019-06-27T14:25:56.503 回答