Sunday, March 30, 2014

Örnek bir araç rotalama problemi gams modeli

sets
i cikilan sehir /1,2,3,4,5,6/
k arac sayisi /1*120/
Alias (i,j);

parameters
bigm buyuk sayı /1000000000/
q(k) arac kapasitesi
a(i) dagıtim musterilerinin talebi /1 0, 2 80, 3 10, 4 30, 5 40, 6 30/
b(i) toplama musterilerinin arzı /1 0,2 30, 3 0, 4 20, 5 50, 6 0/
 ;

scalar m km basina tasima maliyeti /90/;

table t(i,j)
         1          2          3          4          5          6
1        0          232        446        363        441        548
2        232        0          224        131        364        316
3        446        224        0          355        212        171
4        363        131        355        0          495        352
5        441        364        212        495        0          316
6        548        316        171        352        316        0
;

parameter

c(i,j) sehirlerarasi tasima maliyeti ;
c(i,j)=m*t(i,j);
q(k)=66;

variables
z amaç;

binary variable
x(i,j,k)
u(i,k)
u(j,k)
v(j,k)
v(i,k);

equations
objective
k1(k)
k2(i)
k3(i)
k4(k)
k5(j,k)
k6(j,k)
k7(i,k)
k8(i,k)
;

objective.. z =e= 1 ;
k1(k)..sum (i, a(i)*u(i,k))=l= 66;
k2(i)$(ord(i) ge 2)..sum (k, u(i,k))=g= 1;
k3(i)$(ord(i) ge 6)..sum (k, v(i,k))=g=1;
k4(k)..sum (i$(ord(i) ge 6), b(i)*v(i,k))=l=66;
k5(j,k)$(ord(j) ge 2)..sum (i$(ord(i) ge 1), x(i,j,k))=e=u(j,k);
k6(j,k)$((ord(j) ge 6)and(ord(j) eq 1))..sum (i$(ord(i) ge 1), x(i,j,k))=e=v(j,k);
k7(i,k)..sum (j, x(i,j,k))=e=u(i,k);
k8(i,k)$(ord(i) ge 6)..sum(j, x(i,j,k))=e=v(i,k);


model arp /all/  ;
solve arp using MIP minimizing z;

Burada

x(i,j,k) k. aracın i. şehirden j. şehire gidip gitmeyeceğini belirtiyor.