Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- set vessels;
- set ports;
- param cost{vessels};
- param capacity{vessels};
- param I{ports};
- param II{ports};
- param III{ports};
- param available{ports};
- param fcost{ports};
- param demand >= 0;
- #amout of cargo picked up by vessel i at port j
- #var x{vessels,ports};
- var x{vessels,ports}>=0;
- var x1{vessels,ports} >= 0;
- var x2{vessels,ports} >=0;
- var x3{vessels,ports} >=0;
- #1 if port j was used, else 0
- var y{ports} binary >= 0;
- #1 if vessel i was used, else 0;
- var z{vessels} binary >= 0;
- #1 if ship i visited port j else 0
- var k{vessels,ports} binary >=0;
- var p1{vessels,ports} binary>=0;
- var p2{vessels,ports} binary>=0;
- var p3{vessels,ports} binary>=0;
- #sum {i in vessels,j in ports} x[i,j] * t[i,j]+
- minimize totcost: sum{i in vessels,j in ports} (x1[i,j]*I[j]+x2[i,j]*II[j]+x3[i,j]*III[j])+
- sum {i in ports} y[i]*fcost[i]+
- sum {i in vessels} z[i]*cost[i];
- #y=1 if x>0 and makes sure availability restrictions on each port is met
- subject to port_Capacity{j in ports}:
- sum {i in vessels} x[i,j] <= available[j]*y[j];
- #demand should be met
- subject to DEMAND: sum{i in vessels,j in ports} x[i,j] = demand;
- #z=1 if x>0 and makes sure capacity on each ship is met
- subject to FIXED_COST {i in vessels}:
- sum {j in ports} x[i,j] <= z[i]*capacity[i];
- #each vessel allowed to visit max 2 ports
- subject to maxVisits {i in vessels}:
- sum {j in ports} k[i,j] <= 2;
- #k is 1 when x is > 0
- subject to Amount {i in vessels, j in ports}:
- k[i,j]*999999999>=x[i,j];
- #k is 0 when x is 0
- subject to kFollowX{i in vessels, j in ports}:
- k[i,j]<=x[i,j];
- subject to one{i in vessels,j in ports}:
- p1[i,j]+p2[i,j]+p3[i,j]<= 1;
- subject to X1{i in vessels, j in ports}:
- x1[i,j]<=99999*p1[i,j];
- subject to X1small{i in vessels, j in ports}:
- x1[i,j]>=0;
- subject to X2small{i in vessels,j in ports}:
- 100000*p2[i,j]<=x2[i,j];
- subject to X2big{i in vessels,j in ports}:
- x2[i,j]<=179999*p2[i,j];
- subject to X3small{i in vessels,j in ports}:
- 180000*p3[i,j]<=x3[i,j];
- subject to X3big{i in vessels,j in ports}:
- x3[i,j]<=999999999*p3[i,j];
- subject to xp1{i in vessels,j in ports}:
- p1[i,j]<=x1[i,j];
- subject to xp2{i in vessels,j in ports}:
- p2[i,j]<=x2[i,j];
- subject to xp3{i in vessels,j in ports}:
- p3[i,j]<=x3[i,j];
- subject to X{i in vessels,j in ports}:
- x[i,j]=x1[i,j]+x2[i,j]+x3[i,j];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement