set i /i1*i50/ set j /facility1,facility10/ parameter maxdist /40/; set c /x,y/ Table dloc(i,c) x y i1 65 84 i2 8 72 i3 57 28 i4 70 79 i5 82 80 i6 87 95 i7 14 98 i8 28 6 i9 62 22 i10 22 80 i11 31 94 i12 87 74 i13 80 32 i14 92 48 i15 22 74 i16 0 42 i17 80 90 i18 100 56 i19 73 1 i20 82 84 i21 7 15 i22 3 19 i23 99 89 i24 56 94 i25 18 35 i26 8 30 i27 71 19 i28 10 66 i29 7 71 i30 13 66 i31 68 14 i32 95 43 i33 23 50 i34 95 43 i35 4 63 i36 51 13 i37 56 26 i38 41 56 i39 75 72 i40 41 68 i41 57 91 i42 16 63 i43 75 82 i44 44 94 i45 79 32 i46 72 5 i47 4 52 i48 16 20 i49 31 60 i50 92 63 ; scalar M /1000000/ variable floc(j,c) n binary variables isopen(j) assign(i,j) equations *distance, distance,assigndemand,closed,numfacilities,order; distance(i,j).. (sum(c,dloc(i,c)- floc(j,c)))**2 =l= Maxdist**2 + M*(1-assign(i,j)); assigndemand(i).. Sum(j,assign(i,j)) =e= 1; closed(i,j).. assign(i,j) =l= isopen(j) ; Numfacilities.. n =e= sum(j,isopen(j)); order(j+1).. isopen(j) =g= isopen(j+1); model location /all/ option limcol = 180; option limrow =180; solve location minimizing n using MIQCP; display n.l,floc.l;