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 ;