Wednesday, November 14, 2012

Başlıca GAMS hataları

Domain list redefined hatası

Bu ne demek ? Bu şu demek aynı isimle başka bir şey yapmışın ve aynı zamanda da farklı parametre kullanmışın gülüm demek.

Mesela
U(m,k) dedin m elemanın k. ya uzaklığı bir de aşağıda

U(m) demişsin m. elemanın bir şeyi atıyorum o zaman bu hata çıkar işte

Symbol redefined  with a different type hatası

Bu şu demek

F(a,b) demişsin bu bu tablo diyelim

bir de F diye bir küme tanımlamışsın o yüzden de different type diyor.

Set expected Hatası
Bu da toplam sembolü kullanırken hata yaptın demek. Neye göre toplayacağını söylemedin demek.

sum(F(a,b)) demişsin ama neye toplican a ya göre mi b ye göre mi ?

Uncontrolled set entered as constant hatası 

Burda da şu durum var.

kısıt.. sum(a,F(a,b)) yaptın diyelim.

Burda kısıt adlı eşitlik b yi kontrol etmiyor yani her "b" için ayrı bir eşitlik yok. 1 tane eşitlik var o yüzden b ye göre de toplaman lazım. Demek istiyor tüm elemanları kullan diyor. Eğer her b için varsa bu eşitlik zaten b ye göre toplayamazsın. Ama yoksa ona göre toplaman lazım.

Bu hata bir de şöyle çıkar

sum((a,b), T(a,b)) * U(a,b) dedin demek işte onu da toplamın içine yaz bu yanlış olanı

sum( (a,b), T(a,b) * U(a,b)   ) böyle yap


Unknown symbol hatası 

Bu ne zaman olur? Bir değişkeninin ismini değiştirirsin ama onu aşağıda yazmasın mesela Ab(a,b) vardır bunu A yaparsın sonra da adam Ab yi görünce "bu ne" der.

')' expected 

parantez hatası yaptın demek

Dimension different hatası 

M(a,b) diye bir şey tanımlamışsın

sonra da aşağıda

M(a,b,c) demişsin boyutu farklı olmuş

Domain violation for set hatası 

M(a) diye bir şey tanımlamışın bu a kümesi için dimi heh sonra da demişin ki

M(b)  o zaman GAMS de diyor ki "hani  a içindi niye "b" yazıyosun ?

Objective Variable is not a free variable hatası

diyelim ki amaç değişkeni z olsun

z yi positive variable olarak tanımlanmışın demektir ama variable olarak tanımlaman gerekiyor.

 Unknown identifier entered as set hatası

küme olmayan bir şeyi küme olarak belirtmişin demek

sets
a
b
;
paramater A(ali,veli)

ali ve veli diye küme yok o zamanbu hata çıkar

şimdilik bu kadar bunlar benim bulduğum hatalar isterseniz siz de hatalarınızı bana söyleyin beraber burda bu işi halledelim

Örnek bir soru

Evet başlayalım bu sorumuz kitaptan 21. soru konular bitince gelen sorular var ya heh ordan işte. Hikayemiz şöyle

Bir şirket 4 yeni,ürünü 3 farklı atölyede üretmek istiyor ama 2. atölyede 3. ürün üretilemiyor. Bunun dışında her ürün her atölyede üretilebiliyor. Aşağıdaki tabloda da maliyetler kapasiteler ve  talepler verilmiş. İstenen şey ise şu bu ürünleri farklı atölyelerde üretelim mi yoksa üretmeyelim mi ? Yani hangisinin en iyi çözümü daha iyi bunu soruyor adam.

Şimdi tabloya gelelim.

1. ürün 2. ürün 3. ürün 4. ürün kapasite
1. atölye 41 27 28 24 75
2. atölye 40 29 23 75
3. atölye 37 30 27 21 45
talep 20 30 30 40


durum böyle şimdi GAMS kodunu veriyorum ama bu aynı ürünü farklı yerde üretebilirim içindir

_______________________________________________________________________________
sets
a  atölyeler /A1*A3/
u  ürünler /U1*U4/;

table M(a,u) maliyetler
   U1 U2 U4
A1 41 27 24
A2 40 29 23
A3 37 30 21;

parameters
Mal(u)
/
 U1 28
 U2 27
 U4 30/
Kap(a)    kapasite
/
A1 75
A2 75
A3 45/
Tal(u) talep
/
U1 20
U2 30
U3 30
U4 40
/;

positive variables
uret(a,u) a. atölyede üretilen b. mal miktarı;

variables
z amaç fonksiyonu;
equations
amacf amaç f
K(a) kapasite kısıtı
T(u) talep kısıtı  ;

amacf .. z =e= sum((a,u), M(a,u)) + sum(u,Mal(u));
K(a)  .. sum(u,uret(a,u)) =l= Kap(a);
T(u) ..  sum(a,uret(a,u))  =g= Tal(u);

model uretim /all/ ;
solve uretim using lp minimizing z ;
display uret.l, uret.m ;

_______________________________________________________________________________

Soru zaten basit bir soru en azından sürekli olarak karşılaştığımız bir soru tipi . Üretim planlama sorusu. Modeli de yazarım ama şimdilik GAMS üzerine durcam. Şimdi bu kod çalışıyor tamam orda sorun yok ama hatalar var GAMS de dimi şimdi bu hatalar üzerinde duracaz.


Takıldığım bir konu var sorunun ikinci kısmında şöyle bir sorun var. Burada indis belli değil. Yani hangi ürünün nerede üretileceği belli değil. O yüzden şöyle bir karar değişkeni var.

U(u) u. malın  üretildiğ atölye   demeliyiz çünkü u. mal  zaten 1 tek atölyede üretilebilir. bu yüzden bu bir karar değişkeni oldu ama bunu GAMS e yansıtamadım .Bakalım bir yolunu bulacaz şimdlik beklemedeyim.

Sunday, November 11, 2012

İlk adım ve merhaba

Merhaba arkadaşlar. Size daha önce GAMS hakkında bilgi vermiştim. Olasılık blogundan olanlar bilirler. Şimdi de yeni bir olay olan GAMS e başlicaz. Buna başlama sebeplerim.

-GAMS in forumu olmaması
- Gerçek hayatta da endüstri mühendislerinin karşısına çıkabilecek bir program olması
- Hatalara karşı GAMS in verdiği saçma ve kısa cevaplar
- Hataların çözümünün herhangi bir yerde olmaması
 - Soru soracak birini bulamamak

Değineceğim şeyler
 -Öncelikle hatalar
- Örnek sorular ve çözümler.
- Aynı soru için farklı çözüm önerileri
- Toplu soru ve cevap ortamı hazırlamak


-Örnek GAMS kodlarınızı burada özgürce paylaşabilirsiniz ben öyle yapacağım çünkü.

Şimdilik bu kadar ilk bir giriş yaptım ileride görüşürüz.