Saturday, October 11, 2014

GAMS örnek soru

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;

3 comments:

  1. max z= 60x1+30x2+20x3
    s.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?

    ReplyDelete
    Replies
    1. variables
      x1,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;

      Delete
  2. This comment has been removed by the author.

    ReplyDelete