Tuesday, December 22, 2020

Lisans sınırı

Merhaba ,


Gams te lisans sınırı var. Böyle bir hata alırsanız anlayın ki modeliniz çok büyük. Bunu gams ye çözemezsiniz.



 

Monday, June 3, 2019

Gams ödevleri

Merhaba ,

Uzun zamandır yazmıyordum.

Mail adresim blogda var oradan mail atanlar oluyor.

Mail atabilirsiniz ama sıfırdan gams modeli kurmak gibi şeyler yapmıyorum. Lütfen böyle şeyler istemeyin. Para karşılığı ödev isteyenler oluyor. Para karşılığı ödev yapmıyorum.

Mail atarken

- Bir yöneylem modeli
- Bir gams modeli
- Modelin sorusu

Bunları gönderebilirseniz soruyu çözmek daha kolay oluyor.

Bu blogu yazdığımda öğrenciydim. Şu anda çalışıyorum artık mezun oldum. Her gün vaktim olmayabilir.

Tuesday, January 17, 2017

Askerlik durumu

Merhaba millet,

Ben nisan 15 e kadar askerdeyim bu nedenle bloga bakamıyorum.

Saturday, October 11, 2014

Hakkımda

Ben de sizin gibi öğrenciydim Bu sene mezun oldum. Bu nedenle bana bey diye hitap etmenize gerek yok.

GAMS kullanımı

Merhaba bu zamana kadar hep hatalardan bahsettik GAMS için bir kullanım klavuzu buldum internet üzerinde google drive linkini paylaşıyorum buradan indirebilirsiniz. İçinde örnek sorular da var.

GAMS eğitim sunusu

Örnek bir GAMS sorusu

Buradaki soru Winston kitabındandır.
Soru :
Sailco şirketi gelecek dört mevsimde kaç adet yelkenli üreteceğine karar verecektir. Talep sırasıyla 40, 60, 75 ve 25 yelkenlidir. Sailco tüm talepleri zamanında karşılamalıdır. Başlangıçta Sailco'nun envanterinde 10 yelkenli vardır. Normal mesai ile bir mevsimde 40 yelkenli üretebilen şirket yelkenli başına $400 işçilik maliyetine maruz kalmaktadır. Fazla mesai ile yapılan her ek yelkenli için ise işçilik maliyeti $450'dır. Herhangi bir mevsimde yapılan yelkenli ya talebi karşılamak için kullanılıp satılır ya da envantere konulur. Bir yelkenlinin bir mevsim envanterde tutulması durumunda ise $20 envanter taşıma maliyeti oluşmaktadır.

Yanıt
t = 1,2,3,4 için karar değişkenleri
xt = t. mevsimde normal mesai ile üretilen yelkenli sayısı
yt = t. mevsimde fazla mesai ile üretilen yelkenli sayısı
Envanter hesaplarının yapılabilmesi için kullanılacak değişkenler:
it = t. mevsimin sonunda envanterdeki yelkenli sayısı
dt = t. dönem için yelkenli talebi
Veri xt ≤ 40, ∀t

Mantıksal olarak it = it-1+ xt + yt - dt, ∀t.
Talep karşılanmalı it ≥ 0, ∀t
(İşaret sınırlamaları xt,yt≥0, ∀t)
Bu kısıt kümelerini kullanarak toplam maliyet z’yi enküçüklemeliyiz:

Modelde şöyle bir durum var ilk başta envanter olduğu için onu direk kullanıyoruz. İlk dönem 40 talep var elimde de 10 tane vardı zaten bu nedenle 10 tane daha az üretsem bir şey olmaz. Ama bu 10 taneyi elimde tutmanın maliyetini modele yansıtmadım çünkü zaten kesinlikle olacak bir şey ve optimizasyona girmiyor.

GAMS koud şu şekilde
sets
t zaman /1,2,3,4/
;
parameters
aylik aylik üretim miktarı /40/
d(t) t. dönem için yelkenli talebi /1 30,2 60,3 75,4 25/
*dönem başı envanter talepten düşüldü  dönem başı envanter = 10
normalMesai yelkenli başına normal mesai maliyeti/400/
fazlaMesai  yelkenli başına fazla mesai maliyeti/450/
eldeTutma Bir yelkenlinin bir mevsim envanterde tutulmasının maliyeti /20/
;
positive variables
x(t) t. mevsimde normal mesai ile üretilen yelkenli sayısı
y(t) t. mevsimde fazla mesai ile üretilen yelkenli sayısı
i(t) t. mevsimin sonunda envanterdeki yelkenli sayısı
;

variables
z amaç
;

equations
objective
aylikUretim (t)
envanter (t)
;
objective.. z =e= normalMesai*sum(t,x(t)) + fazlaMesai*sum(t,y(t)) + eldeTutma*sum(t,i(t));
aylikUretim (t) .. x(t) =l= aylik;
envanter (t) .. i(t) =e= i(t-1) + x(t) + y(t) - d(t);
model arp /all/  ;
solve arp using MIP minimizing z;


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;

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.


Wednesday, January 22, 2014

Örnek bir GAMS hatası ve çözümü

Merhaba uzuuuuun zamandır burada yazmıyordum. Fakat aldığım mailler sebebiyle buraya yazma ihtiyacı hissettim. Çünkü elime çok gams dosyası geçti bunları sizlerle paylaşmak istedim.

Şimdi sorunun hatalı halini alalım.
--------------------------------------------------------------------------------------------------------
Set
I /Ocak, Subat, Mart, Nisan/
J /Year1, Year2/
Table NIW(I,J) Flow values
        Year1   Year2
Ocak     50      10
Subat    40      20
Mart     35      50
Nisan    45      25
;
Parameters
S_min     Minimum reservoir volume  /0.01/
S_max     Maximum reservoir volume  /3.42/
S_int     Initial reservoir volume  /3.00/
RW        Residual water amount for the downstream /2.00/
O_max     Maximum outflow that can be used for energy generation /72.32/

Variables
TE    Total Energy Generation
R(I, J) Residual water amount
Sp(I, J) Spilling water amount
O(I, J)  Outflow water amount for energy generation
S(I, J) Reservoir storage volume
H(I, J) Head value
E(I, J) Energy generation
Srule(I) The desired reservoir storage volume for the months;




Equations
Residual 
Spilling 
Outflow 
Storage 
Head 
Energy 
toplam hukjyuk;

Residual .. R(I, J) =E= min(S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - S_min, RW);

Spilling .. Sp(I, J) =E= max(S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - O_max- R(I, J)-S_max, 0) ;

Outflow  .. O(I, J) =E= max(min(S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - Sp(I, J)- R(I, J)-Srule(I),O_max),0) ;

Storage  .. S(I, J) =E= S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - Sp(I, J)- R(I, J) - O(I, J) ;

Head     .. H(I, J) =E=  -0.5783*S(I, J)**2 + 11.581*S(I, J) + 330.227;

Energy   .. E(I, J) =E= H(I, J) * O(I, J) * 0.89* 9.81;

toplam .. TE =E= Sum((I,J), E(I,J));

MODEL TRANSPORT /ALL/ ;
SOLVE TRANSPORT USING NLP MAXIMIZING TE ;


bu  hatalı hali şimdi hatalarını alalım
--------------------------------------------------------------------------------------------------------

--- Job Untitled_7.gms Start 01/22/14 19:32:40 24.2.1 r43572 WEX-WEI x86_64/MS Windows
GAMS 24.2.1   Copyright (C) 1987-2013 GAMS Development. All rights reserved
Licensee: GAMS Development Corporation, Washington, DC   G871201/0000CA-ANY
          Free Demo,  202-342-0180,  sales@gams.com,  www.gams.com   DC0000
--- Starting compilation
--- Untitled_7.gms(46) 3 Mb 13 Errors
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 300 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Remaining errors not printed for this line
--- Untitled_7.gms(47) 3 Mb 28 Errors
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 300 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Remaining errors not printed for this line
--- Untitled_7.gms(48) 3 Mb 46 Errors
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 300 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Remaining errors not printed for this line
--- Untitled_7.gms(49) 3 Mb 65 Errors
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 154 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Set for 'ord' is not controlled
*** Error 300 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Remaining errors not printed for this line
--- Untitled_7.gms(50) 3 Mb 71 Errors
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
--- Untitled_7.gms(51) 3 Mb 77 Errors
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
*** Error 149 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Uncontrolled set entered as constant
--- Untitled_7.gms(57) 3 Mb 78 Errors
*** Error 257 in C:\Users\Furkan\Downloads\Untitled_7.gms
    Solve statement not checked because of previous errors
--- Untitled_7.gms(60) 3 Mb 78 Errors
*** Status: Compilation error(s)
--- Job Untitled_7.gms Stop 01/22/14 19:32:40 elapsed 0:00:00.191
Exit code = 2
--------------------------------------------------------------------------------------------------------
Açıklamalar 

-Görüldüğü gibi bir çok uncontrooled set zımbırtısı var bunun çözümü için kısıtları değiştirmek yeterli olacak
 - Bir başk hata ise çözüm tipinin yanlış girilmesi o hata konusunda bir bilgim yok ama DNLP yapınca geçti.
düzgün kod aşağıdaki gibidir.

NOT : DEĞİŞTİRDİĞİM KISIMLARI KIRMIZI İLE BELİRTTİM 



Set
I /Ocak, Subat, Mart, Nisan/
J /Year1, Year2/
 Table NIW(I,J) Flow values
        Year1   Year2
Ocak     50      10
Subat    40      20
Mart     35      50
Nisan    45      25
;
 Parameters
 S_min     Minimum reservoir volume  /0.01/
S_max     Maximum reservoir volume  /3.42/
S_int     Initial reservoir volume  /3.00/
RW        Residual water amount for the downstream /2.00/
O_max     Maximum outflow that can be used for energy generation /72.32/
  Variables
 TE    Total Energy Generation
R(I, J) Residual water amount
Sp(I, J) Spilling water amount
O(I, J)  Outflow water amount for energy generation
S(I, J) Reservoir storage volume
H(I, J) Head value
E(I, J) Energy generation
Srule(I) The desired reservoir storage volume for the months;
     Equations
Residual (I, J)
Spilling    (I, J)
          Outflow   (I, J)
Storage  (I, J) 
Head     (I, J) 
Energy    (I, J) 
toplam hukjyuk;
 Residual (I, J) .. R(I, J) =E= min(S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - S_min, RW);

Spilling(I, J) .. Sp(I, J) =E= max(S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - O_max- R(I, J)-S_max, 0) ;

Outflow (I, J) .. O(I, J) =E= max(min(S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - Sp(I, J)- R(I, J)-

Srule(I),O_max),0) ;

Storage (I, J) .. S(I, J) =E= S_int $(ord(I) eq 1 and ord(J) eq 1)+S(I-1, J)$(ord(I) gt 1)+S('Nisan', J-1)$(ord(I) eq 1 and ord(J) gt 1)+ NIW(I, J) - Sp(I, J)- R(I, J) - O(I, J) ;

Head  (I, J)   .. H(I, J) =E=  -0.5783*S(I, J)**2 + 11.581*S(I, J) + 330.227;

Energy (I, J)  .. E(I, J) =E= H(I, J) * O(I, J) * 0.89* 9.81;
 toplam .. TE =E= Sum((I,J), E(I,J));
  MODEL TRANSPORT /ALL/ ;
SOLVE TRANSPORT USING DNLP MAXIMIZING TE ;
   


Wednesday, June 5, 2013

Duyuru

    Uzun zamandır buraya yazmıyorum. Paylaşmak istediğiniz bir proje falan olursa bana mail atabilirsiniz ben de onu buraya yazarım.

    Bu blogun bir GAMS forumu gibi olmasını isterim çünkü bu program hakkında çok az bilgi var ve endüstri mühendislerinin belası olmuş bir program.

    Bu belayı gördüğüm için bende bir programcı olarak. Kendi programımı yazıyorum. Belkide Türkiye'nin ilk yerli yöneylem programı olacak. Bu projede bana yardım etmek isteyen olursa benimle iletişime geçebilir.

    Programı c# diliyle yazıyorum şu an 9000 satır civarındadır. Benim yazacağım program öğrencilere yönelik olacak mesela içinde tüm sezgisel yöntemler olacak. Mesela dicez ki bunu şu sezgiselle çöz o da çözüp söyleyecek. Şu an dinamik programlama , M yöntemi , dual alma ,dual çözme ve düzeltilmiş simpleks var. Şu an tamsayılı programlama için çalışıyorum.

Düzenleme :

Programı artık java dilinde yazıyorum şu an M yöntemi , dual alma ,dual çözme ve düzeltilmiş simpleks var. İsteyen olursa programa katkıda bulunabilir.


    iletişim adresi

katifurkan@gmail.com

faceboook

https://www.facebook.com/furkan.kati

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.