Urgent, Please Help...

Problems with syntax of GAMS
Post Reply
gpolicroniadesch
User
User
Posts: 2
Joined: 5 years ago

Urgent, Please Help...

Post by gpolicroniadesch »

Im trying to run a VRP Model, but i have some issues; this is my model:

1.- HOW CAN I MAKE THAT THE VEHICLE BEGIN IN THE DEPOT, AND HOW CAN I MAKE THE SUBINDEX i BE DIFFERENT TO J IN THE SUM ...


sets
i /i1*i7/
m /m1*m7/
;
alias (i,j,k);

alias (subi,subj);
Sets offdiag0(i,j)
offdiag1(i,j)
offdiag2(i,j)
offdiag3(i,j)
offdiag4(i,j);

offdiag0(i,j)=yes;
offdiag0(i,i)=no;

scalar

Q /50/;

parameters

D(i)
/i2 150
i3 250
i4 300
i5 450
i6 345
i7 260 /
;

table c(i,j) 'distance matrix (KM)'


i1 i2 i3 i4 i5 i6 i7
i1 97 205 139 86 60 220
i2 129 103 71 105 258
i3 219 125 175 386
i4 167 182 180
i5 51 296
i6 279
i7

;



c(i,j) = max(c(i,j),c(j,i));

set arcs(i,j);
arcs(i,j)$c(i,j) = yes;

set i0(i) /%depot%/;

set i2(i);
i2(i)$(not i0(i)) = yes;

scalar n 'number of nodes';
n = card(i);

binary variables x(i,j,m);

variable
z
y(i)
f
V
;

equations
R1(j)
R2(i)
R3(l,m)
R4(m)
R5(m)
R6(i,j)
R7
R8
R9
cost
;


R1.. sum((i2(j),m), x('%depot%',j)$offdiag0)) =e= 1; (i must to be diferent to j)

R2.. sum((i2(i),m), x(i,'%depot%')) =e= 1;

R3.. sum((i2(k),m), x('%depot%',k))- sum((i2(k),m), x(k,'%depot%')) =e= 0

R4.. sum((i2(i),m), x(i,'%depot%')) =l=1

R5.. sum((i2(j),m), x('%depot%',j)) =l=1

R6.. y(j) =g= y(i) + D(j) - Q + (Q*((x(i,j,m)+(x(j,i,m))-((D(j)+D(i))*((x(j,i,m))

R7.. y(j) =l= (y('%depot%',j,m))*D(j)+(1-(x('%depot%',j,m)))*Q

R8.. D(i)=l=y(i)=l=Q

R9.. sum((i2(j),m), x('%depot%',j)) =e= V

cost.. z =e= sum(arcs, c(arcs)*x(arcs));


model carro3 /all/;
*carro3.optfile=1;
solve carro3 using mip minimizing z;
User avatar
Renger
Posts: 639
Joined: 7 years ago

Re: Urgent, Please Help...

Post by Renger »

Hi
If you want to sum over i leaving out the element j, you can do this as follows:

Code: Select all

myeq(j)
      A(j) =E= sum(i$(not sameas(i,j), X(i,j));
How can you ensure that they start from the depot is, so I believe already part of your model:

Code: Select all

sum((i2(j),m), x('%depot%',j)$offdiag0)) =e= 1; (i must to be diferent to j)
Cheers
Renger
____________________________________
Enjoy modeling even more: Read my blog on modeling at The lazy economist
gpolicroniadesch
User
User
Posts: 2
Joined: 5 years ago

Re: Urgent, Please Help...

Post by gpolicroniadesch »

Thanks alot :) :)
Post Reply