what should i add to prevent this?
i'm very very beginner at this.
Code: Select all
set i cities /i1,i2,i3,i4,i5,i6,i7,i8,i9/;
alias(i,j);
table d(i,j) distance from i to j
i1 i2 i3 i4 i5 i6 i7 i8 i9
i1 0 246 176 286 198 184 264 246 182
i2 246 0 175 156 148 236 263 165 234
i3 176 175 0 196 153 137 190 147 136
i4 286 156 196 0 200 251 238 155 239
i5 198 148 153 200 0 211 264 180 213
i6 184 236 137 251 211 0 181 197 102
i7 264 263 190 238 264 181 0 199 132
i8 246 165 147 155 180 197 199 0 184
i9 182 234 136 239 213 102 132 184 0
;
variable Tdist total distance;
binary variable x(i,j) 1 iff go from i to j;
equations in(i) going in city i once
out(i) leaving city i once
obj total distance
cl subtour elimination contraint
c2 subtour elimination contraint
c3 subtour elimination contraint
c4 subtour elimination contraint
c5 subtour elimination contraint
c6 subtour elimination contraint
c7 subtour elimination contraint
c8 subtour elimination contraint
c9 subtour elimination contraint
c10 subtour elimination contraint
c11 subtour elimination contraint
c12 subtour elimination contraint
c13 subtour elimination contraint
c14 subtour elimination contraint
c15 subtour elimination contraint
c16 subtour elimination contraint
c17 subtour elimination contraint
c18 subtour elimination contraint
c19 subtour elimination contraint
c20 subtour elimination contraint
c2l subtour elimination contraint
c22 subtour elimination contraint
c23 subtour elimination contraint
c24 subtour elimination contraint
c25 subtour elimination contraint
c26 subtour elimination contraint
c27 subtour elimination contraint
c28 subtour elimination contraint
c29 subtour elimination contraint
c30 subtour elimination contraint
c3l subtour elimination contraint
c32 subtour elimination contraint
c33 subtour elimination contraint
c34 subtour elimination contraint
c35 subtour elimination contraint
c36 subtour elimination contraint ;
in(i).. sum(j, x(j,i)) =e= 1;
out(i).. sum(j, x(i,j)) =e= 1;
obj.. sum((i,j),d(i,j)*x(i,j))=e= Tdist;
cl.. x('i1','i2') + x('i2','i1') =l= 1;
c2.. x('i1','i3') + x('i3','i1') =l= 1;
c3.. x('i1','i4') + x('i4','i1') =l= 1;
c4.. x('i1','i5') + x('i5','i1') =l= 1;
c5.. x('i1','i6') + x('i6','i1') =l= 1;
c6.. x('i1','i7') + x('i7','i1') =l= 1;
c7.. x('i1','i8') + x('i8','i1') =l= 1;
c8.. x('i1','i9') + x('i9','i1') =l= 1;
c9.. x('i2','i3') + x('i3','i2') =l= 1;
c10.. x('i2','i4') + x('i4','i2') =l= 1;
c11.. x('i2','i5') + x('i5','i2') =l= 1;
c12.. x('i2','i6') + x('i6','i2') =l= 1;
c13.. x('i2','i7') + x('i7','i2') =l= 1;
c14.. x('i2','i8') + x('i8','i2') =l= 1;
c15.. x('i2','i9') + x('i9','i2') =l= 1;
c16.. x('i3','i4') + x('i4','i3') =l= 1;
c17.. x('i3','i5') + x('i5','i3') =l= 1;
c18.. x('i3','i6') + x('i6','i3') =l= 1;
c19.. x('i3','i7') + x('i7','i3') =l= 1;
c20.. x('i3','i8') + x('i8','i3') =l= 1;
c2l.. x('i3','i9') + x('i9','i3') =l= 1;
c22.. x('i4','i5') + x('i5','i4') =l= 1;
c23.. x('i4','i6') + x('i6','i4') =l= 1;
c24.. x('i4','i7') + x('i7','i4') =l= 1;
c25.. x('i4','i8') + x('i8','i4') =l= 1;
c26.. x('i4','i9') + x('i9','i4') =l= 1;
c27.. x('i5','i6') + x('i6','i5') =l= 1;
c28.. x('i5','i7') + x('i7','i5') =l= 1;
c29.. x('i5','i8') + x('i8','i5') =l= 1;
c30.. x('i5','i9') + x('i9','i5') =l= 1;
c3l.. x('i6','i7') + x('i7','i6') =l= 1;
c32.. x('i6','i8') + x('i8','i6') =l= 1;
c33.. x('i6','i9') + x('i9','i6') =l= 1;
c34.. x('i7','i8') + x('i8','i7') =l= 1;
c35.. x('i7','i9') + x('i9','i7') =l= 1;
c36.. x('i8','i9') + x('i9','i8') =l= 1;
x.fx(i,i) = 0;
model tsp /all/;
solve tsp using rminlp min Tdist;
display x.l,Tdist.l;