Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. set vessels;
  2. set ports;
  3. param cost{vessels};
  4. param capacity{vessels};
  5. param I{ports};
  6. param II{ports};
  7. param III{ports};
  8. param available{ports};
  9. param fcost{ports};
  10. param demand >= 0;
  11.  
  12. #amout of cargo picked up by vessel i at port j
  13. #var x{vessels,ports};
  14. var x{vessels,ports}>=0;
  15. var x1{vessels,ports} >= 0;
  16. var x2{vessels,ports} >=0;
  17. var x3{vessels,ports} >=0;
  18.  
  19. #1 if port j was used, else 0
  20. var y{ports} binary >= 0;
  21. #1 if vessel i was used, else 0;
  22. var z{vessels} binary >= 0;
  23. #1 if ship i visited port j else 0
  24. var k{vessels,ports} binary >=0;
  25.  
  26. var p1{vessels,ports} binary>=0;
  27. var p2{vessels,ports} binary>=0;
  28. var p3{vessels,ports} binary>=0;
  29.  
  30. #sum {i in vessels,j in ports} x[i,j] * t[i,j]+
  31. minimize totcost: sum{i in vessels,j in ports} (x1[i,j]*I[j]+x2[i,j]*II[j]+x3[i,j]*III[j])+
  32. sum {i in ports} y[i]*fcost[i]+
  33. sum {i in vessels} z[i]*cost[i];
  34.  
  35. #y=1 if x>0 and makes sure availability restrictions on each port is met
  36. subject to port_Capacity{j in ports}:
  37. sum {i in vessels} x[i,j] <= available[j]*y[j];
  38.  
  39. #demand should be met
  40. subject to DEMAND: sum{i in vessels,j in ports} x[i,j] = demand;
  41.  
  42. #z=1 if x>0 and makes sure capacity on each ship is met
  43. subject to FIXED_COST {i in vessels}:
  44. sum {j in ports} x[i,j] <= z[i]*capacity[i];
  45.  
  46. #each vessel allowed to visit max 2 ports
  47. subject to maxVisits {i in vessels}:
  48. sum {j in ports} k[i,j] <= 2;
  49.  
  50. #k is 1 when x is > 0
  51. subject to Amount {i in vessels, j in ports}:
  52. k[i,j]*999999999>=x[i,j];
  53.  
  54. #k is 0 when x is 0
  55. subject to kFollowX{i in vessels, j in ports}:
  56. k[i,j]<=x[i,j];
  57.  
  58.  
  59. subject to one{i in vessels,j in ports}:
  60. p1[i,j]+p2[i,j]+p3[i,j]<= 1;
  61.  
  62. subject to X1{i in vessels, j in ports}:
  63. x1[i,j]<=99999*p1[i,j];
  64.  
  65. subject to X1small{i in vessels, j in ports}:
  66. x1[i,j]>=0;
  67.  
  68. subject to X2small{i in vessels,j in ports}:
  69. 100000*p2[i,j]<=x2[i,j];
  70.  
  71. subject to X2big{i in vessels,j in ports}:
  72. x2[i,j]<=179999*p2[i,j];
  73.  
  74. subject to X3small{i in vessels,j in ports}:
  75. 180000*p3[i,j]<=x3[i,j];
  76.  
  77. subject to X3big{i in vessels,j in ports}:
  78. x3[i,j]<=999999999*p3[i,j];
  79.  
  80. subject to xp1{i in vessels,j in ports}:
  81. p1[i,j]<=x1[i,j];
  82.  
  83. subject to xp2{i in vessels,j in ports}:
  84. p2[i,j]<=x2[i,j];
  85.  
  86. subject to xp3{i in vessels,j in ports}:
  87. p3[i,j]<=x3[i,j];
  88.  
  89. subject to X{i in vessels,j in ports}:
  90. x[i,j]=x1[i,j]+x2[i,j]+x3[i,j];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement