Originally posted by: Rym
Did you have a proposition in modifying some constraints in order to have a feasible submodel, without a relaxed solution
themodel is:
int M=10000000000;
int n=1;
int p=4;
range N=1..n;
int nd=8;
range ND=1..nd;
int PDCBW[ND][ND];
int PDC[1..nd][1..nd]=[
[0,0,0,0,1,0,0,0],
[0,0,0,0,1,0,0,0],
[0,0,0,0,0,1,0,0],
[0,0,0,0,0,1,0,0],
[1,1,0,0,0,0,1,1],
[0,0,1,1,0,0,1,1],
[0,0,0,0,1,1,0,0],
[0,0,0,0,1,1,0,0]
];
;
int PDCBWx=10;
execute xc
{
for (var x=1;x<=nd;x++)
{
for(var y=1;y<=nd;y++)
{
if(PDC[x][y]==1)
{
PDCBW[x][y]= PDCBWx;
}
}
}
//writeln("P=",PDCBW);
}
tuple edge // link definition
{
int i;
int j;
}
{edge} liaisonp = { <i,j> | i in 1..p,j in 1..p:i!=j};
int LR[N][liaisonp]=[[0, 0, 48, 0, 0, 0, 0, 0, 0, 48, 0, 0]];
int LRb[N][liaisonp]=[[0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0]];
//Definition of the model
dvar boolean lumdabw[N][liaisonp][ND][ND];
dvar boolean Vd[N];
dexpr int lumdij[i in ND][j in ND]=sum(f in N,l in liaisonp)lumdabw[f][l][i][j]*LR[f][l];
dexpr int maxbw=max(i,j in ND)lumdij[i][j];
dexpr int o= sum(f in N) Vd[f];
dvar boolean vdf[N];
maximize o;;
subject to
{
//capacity link constraint
clc:
forall (i in ND, j in ND)
sum(f in N,l in liaisonp)(lumdabw[f][l][i][j])*LR[f][l]<=PDCBW[i][j];
//flow constraint
flc:
forall(f in N,l in liaisonp,i in ND)
{(i==l.i) => ((sum(j in ND) (lumdabw[f][l][i][j])- sum(j in ND) (lumdabw[f][l][j][i]))==LRb[f][l]);
(i==l.j) => ((sum(j in ND) (lumdabw[f][l][i][j])- sum(j in ND) (lumdabw[f][l][j][i]))==-LRb[f][l]);
((i!=l.i)&&(i!=l.j)) => ((sum(j in ND) (lumdabw[f][l][i][j])- sum(j in ND) (lumdabw[f][l][j][i]))==0);
}
//A virtual link can be embedded into one physical path(a set of physical links)
rgv:
forall(f in N,l in liaisonp,i in ND)
sum(j in ND)(lumdabw[f][l][i][j])<=1;
// a virtual link can be embedded into only a existing physical link
thn:
forall(f in N, l in liaisonp,i,j in ND)
lumdabw[f][l][i][j]<=PDC[i][j];
//lumdaBw existe si seulement si LR existe
yhj:
forall(f in N,l in liaisonp,i,j in ND)
lumdabw[f][l][i][j]<=LRb[f][l];
forall(f in N)
(1/M)*(sum(i,j in ND,l in liaisonp)lumdabw[f][l][i][j])<=Vd[f];
}
Thanks
#CPLEXOptimizers#DecisionOptimization