آموزش شبیه سازی در گمز GAMS

زبان برنامه نویسی گمز نیز همچون زبان برنامه نویسی متلب یکی از زبان‌های پرکاربرد است که کاربران بسیاری مخصوصا دانشجویان رشته‌های فنی و مدیریتی تمایل دارند تا این زبان برنامه نویسی را فرا بگیرند. چندی پیش در مقالات متلب آنالیز به آموزش شبیه سازی در گمز GAMS پرداختیم و در انتها نیز یک مثال برق قدرت را در کنار یکدیگر حل کردیم؛ حال در این مقاله تصمیم داریم تا به یک مثال دیگر بپردازیم، پس تا انتهای مقاله همراه متلب آنالیز باشید.

نرم افزار گمز یکی از نرم افزار های قوی و با قابلیت های زیاد می باشد که به دلیل پیچیدگی آن کمتر مورد توجه قرار گرفته است. این نرم افزار توانایی بهینه سازی مسائل مختلف در رشته های فنی و مهندسی را دارد. چنانچه یک مسئله بهینه سازی را بتوان به فرم ریاضی تبدیل کرد، نرم افزار گمز GAMS قابلیت حل این مدل و ارائه جواب بهینه آن را دارد. به همین دلیل آموزش شبیه سازی در گمز  GAMS برای بسیاری از متخصصین رشته های مهندسی لازم می باشد. برای درک بهتر این موضوع مثال هایی از مسائل برق قدرت فراهم شده است که در آنها فرم ریاضی به آسانی قابل روئت نیست و نیاز به بررسی و تحلیل های اولیه دارد. در مثال های قبل در خصوص اطلاعات ورودی به گمز و نحوه وارد کردن آنها آموزش های لازم ارائه شد. در این مقاله آموزشی به ارائه یک مثال دیگر و آموزش نحوه بررسی خروجی ها پرداخته می شود.

آموزش برنامه نویسی در گمز

آموزش برنامه نویسی در گمز

در این مثال همچون مثالی که در مقاله قبلی توضیح دادیم ED را به کار می‌گیریم و مقدار ۳ ساعت را نیز برای UC انتخاب می‌کنیم. پس با این اوصاف تقاضا‌ها به شرح زیر خواهند بود:

T1=150        t2=500         t3=400

البته ژنراتور نیز دارای مقادیر رزرو شده زیر است:

واحد ۱ = ۱۵   و  واحد ۲ – ۵۰   و   واحد ۳ – ۴۰

علاوه بر موارد فوق، اطلاعات زیر را نیز برای مثال خود داریم:

GAMS-1

برای مثال بالا، برنامه ما به صورت زیر باید نوشته شود:

SETS

/K index of periods of time /1*4

J index of generators /1*3
TABLE            GDATA (J,*)             generator input data
PMIN         PMAX      T             S            A           B           C            E
Ramp        Ramp       Fixed    Variable     Start     Shutdown                                      *
Down         Up          Cost      Cost          UP         Cost                                      *
Limit         Limit                                                 Cost                                       *
(kW)         (kW)   (kW/h)    (kW/h)        (E)       (E)          (E)       (E/kWh)              *

۰٫۱۰۰         ۰٫۵          ۲۰         ۵           ۲۰۰          ۳۰۰       ۳۵۰           ۵۰                ۱

۰٫۱۰۰         ۰٫۳           ۱۸         ۷          ۱۰۰          ۱۵۰       ۲۰۰           ۸۰                ۱

۰٫۱۵۰         ۱٫۰             ۵         ۶          ۱۰۰          ۱۰۰       ۱۴۰           ۴۰                ۱

TABLE      PDATA (K,*)        data per period

                       D                     R

*                    Load                 Reserve

*                    (kW)                  (kW)

۱۵                     ۱۵۰                       ۲

۵۰                     ۵۰۰                       ۳

;۴۰                     ۴۰۰                       ۴

VARIABLES

z         objective function variable

p(J,K)    output power of generator j at period k

v(J,K)    is equal to 1 if generator j is committed in period k

y(J,K)    is equal to 1 if generator j is started-up at the beginning of period k

;s(J,K)    is equal to 1 if generator j is shut-down in period k

نوع متغیر‌ها و مقادر اولیه آن‌ها نیز به شرح زیر خواهد بود:

;(POSITIVE VARIABLES   p(J,K

Status decisions are modeled using binary variables            ***

;(BINARY VARIABLES   v(J,K),y(J,K),s(J,K

           Initial values are stated for some variables            ***

;v.fx(J,’۱’)=۰

;p.fx(J,’۱’)=۰

EQUATIONS

COST                                  objective function

PMAXLIM(J,K)                 maximum output power equation

PMINLIM(J,K)                 minimum output power equation

LOAD(K)                      load balance equation

RESERVE(K)                   spinning reserve equation

LOGIC(J,K)                   start-up shut-down and running logic

RAMPUP(J,K)                  maximum up ramp rate limit

RAMPDOWN(J,K)                maximum down ramp rate limit;

  The objective function is an equality equation. The remaining      **

constraints are defined for all periods K, except for the initial one. To

.model this exception the $(ord(K) GT 1) condition is included

COST  ..  z=e=SUM((K,J),GDATA(J,’A’)*v(J,K)+GDATA(J,’B’)*y(J,K)+GDATA

;((J,’C’)*s(J,K)+GDATA(J,’D’)*p(J,K)

;(PMAXLIM (J,K)$(ord(K) GT 1)  ..   p(J,K) =l= GDATA (J,’PMAX’) * v(J,K

;(PMINLIM (J,K)$(ord(K) GT 1)  ..   p(J,K) =g= GDATA (J,’PMIN’) * v(J,K

;(’LOAD (K)$(ord(K) GT 1)  ..   SUM (J, p(J,K))=e=PDATA(K,’D

 * ;(RESERVE (K )$(ord(K) GT 1)    ..   SUM (J,GDATA (J,’PMAX

;(’v(J,K))=g=PDATA(K,’D’)+PDATA(K,’R

;(LOGIC (J,K)$(ord(K) GT 1)  ..   y(J,K)-s(J,K)=e=v(J,K)-v(J,K-1

;(’RAMPUP (J,K)$(ord(K) GT 1)  ..   p(J,K)-p(J,K-1)=l=GDATA(J,’S

;(’RAMPDOWN (J,K)$(ord(K) GT 1)  ..  p(J,K-1)-p(J,K)=l=GDATA(J,’T

MODEL

;/MODEL   uc    /ALL

نکته: در زمانی که در کد نویسی از ALL استفاده می‌شود، هدف حل کردن uc با در نظر گرفتن تمام قید‌ها است. اما اگر بخواهیم us را با قبول تمام قیود به جز قید رزرو حل کنیم، باید به صورت زیر کد‌های خود را تکمیل نماییم:

;/MODEL   uc   /COST,PMAXLIM,PMINLIM,LOAD,LOGIC

SOLVE

;SOLVE uc USING MIP MINIMIZING z

حال برنامه شما همانند شکل زیر در گمز (GAMS) اجرا خواهد شد:

GAMS-2

خروجی گمز و روش حل کردن مثال فوق:

با در نظر گرفتن تمام قید‌ها در این مثال، کد ما بدین شکل خواهد بود:

  ۸۸VARIABLE p.L output power of generator j at period k    ——-

                 ۴             ۳                  ۲

۲۶۰٫۰۰۰      ۳۵۰٫۰۰۰         ۱۵۰٫۰۰۰                  ۱

      ۱۰۰٫۰۰۰                                      ۲

۲۶۰٫۰۰۰      ۳۵۰٫۰۰۰                                      ۳

 ۸۸VARIABLE z.L    =    ۷۷٫۳۰۰ objective function variable——-

در این صورت، بعد از حل کردن کد‌ها توسط برنامه، نتیجه به شکل زیر نمایش داده خواهد شد:

GAMS-3

اما اگر ما بخواهیم تمام قیود را بدون در نظر گرفتن قید رزرو برای حل مثال استفاده کنیم، کد ما به شکل زیر خواهد بود:

    ۸۷VARIABLE p.L output power of generator j at period k  —–

                 ۴             ۳                  ۲

۳۲۰٫۰۰۰      ۳۵۰٫۰۰۰         ۱۵۰٫۰۰۰                 ۱

۸۰٫۰۰۰      ۱۵۰٫۰۰۰                                     ۲

۸۷VARIABLE z.L    =    ۶۷٫۰۰۰ objective function variable  —-

با نوشتن این کد، مثال ما بدین شکل در برنامه گمز اجرا و نمایش داده خواهد شد:

GAMS-4

همان طور که در این مقاله از متلب آنالیز مطالعه کردید، با یک مثال دیگر در خصوص برق قدرت در این زبان برنامه نویسی آشنا شدیم. همراه متلب آنالیز باشد تا به امید خدا در طول مقالات آتی هر چه بیشتر با زبان‌های برنامه نویسی عددی آشنا شویم.

چنانچه اموزش های نیازمند آموزش های تخصصی تر در زمینه آموزش برنامه نویسی در گمز GAMS  هستیدمیتوانید با ما از طریق ایمیل زیر در ارتباط باشید

matlabanalysis2012@gmail.com