You are on page 1of 1

Facility Location

int numT=6;
range rangeT=1..numT;
float P[rangeT]=[3,8,2,12,7,10];
float k[rangeT][rangeT]= [[1000,50,26,1000,15,32],
[50,1000,1000,34,28,1000],
[26,1000,1000,29,40,17],
[1000,34,29,1000,18,24],
[15,28,40,18,1000,43],
[32,1000,17,24,43,1000]];
int d[rangeT][rangeT]= [[1,0,1,0,1,0],
[0,1,0,0,1,0],
[1,0,1,1,0,1],
[0,0,1,1,1,1],
[1,1,0,1,1,0],
[0,0,1,1,0,1]];
dvar boolean S[rangeT];
dvar boolean X[rangeT];
maximize sum(i in rangeT) P[i]*X[i];
subject to{
forall(i in rangeT){
X[i]<=sum(j in rangeT) d[i][j]*S[j];
}
sum(i in rangeT)
S[i]<=2;

Result:
Si

1 0

2 0

3 0

4 1

5 1

6 0

You might also like