Merhaba bu gün basit bir modeli GAMS kodunu göreceğiz. Daha sonra daha zor modeller gelecek. Şimdilik basit bir model nasıl GAMS e geçiliyor onu görelim.
Modelimiz şöyle olsun
Maks z = 3x1 + 2x2 (Amaç fonksiyonu)
s.t.
2x1 + x2 ≤ 100 (Montaj kısıdı)
x1 + x2 ≤ 80 (Marangozluk kısıdı) x1 ≤ 40 (Talep kısıdı)
x1, x2 ≥ 0 (İşaret sınırlamaları)
Bunun GAMS kodu şu şekilde oluyor
sets
x üretim emri /1,2/
s kısıtlar /1,2,3/;
parameters
sag(s) kısıtların sag taraf degerleri /1 100,2 80,3 40/
amacf(x) amaç fonksyonu katsaıyları /1 3,2 2/ ;
table tablo(s,x) kısıtlardaki sayılar
1 2
1 2 1
2 1 1
3 1 0
;
positive variables
uret(x) x. ürünün üretim miktarı;
;
variables
z amaç;
equations
objective
kisitlar (s)
;
objective.. z =e= sum(x,amacf(x)*uret(x)) ;
kisitlar (s)..sum (x,tablo(s,x)*uret(x)) =l=sag(s) ;
model arp /all/ ;
solve arp using MIP maximizing z;
Ama farklı bir biçimde de yazılabilir. Bu şekilde girmek baya bi parametrik oldu. Aslında böyle girmek lazım. Çünkü daha kolay değiştirilir. Büyük modellerde karışıklığı önler. Aşağıda parametrik olmayan şekli var. İkisi de aynı sonucu verir. Hangisini seçeceğiniz size kalmış. Kafanıza göre takılın.
sets
x üretim emri /1,2/
positive variables
uret(x) x. ürünün üretim miktarı;
;
variables
z amaç;
equations
objective
k1
k2
k3
;
objective.. z =e= 3*uret('1')+2*uret('2');
k1 .. 2*uret('1') + uret('2') =l= 100;
k2 .. uret('1') + uret('2') =l= 80;
k3 .. uret('1') =l= 40;
model arp /all/ ;
solve arp using MIP maximizing z;
max z= 60x1+30x2+20x3
ReplyDeletes.t. 8x1+6x2+x3<=48 (Lumber constraint)
4x1+2x2+1.5x3<=20 (Finishing constraint)
2x1+1.5x2+0.5x3<=8 (Carpentry constraint)
x2<=5 (Limitation on table demand)
x1, x2, x3 >=0
GAMS kodu nasıl olur yardımcı olabilir misiniz?
variables
Deletex1,x2,x3,z;
positive variables
x1,x2,x3;
equations
objective
st1
st2
st3
st4;
objective.. z =e= 60*x1+30*x2+20*x3;
st1.. 8*x1+6*x2+x3 =l=48;
st2.. 4*x1+2*x2+1.5*x3 =l=20;
st3.. 2*x1+1.5*x2+0.5*x3 =l=8;
st4.. x2 =l=5;
model ornek/all/
solve ornek using lp maximizing z;
This comment has been removed by the author.
ReplyDelete