گروه آموزشی و پژوهشی مهندسی صنایع، مدیریت و کسب و کار بهینه یار

شروع سریع گمس GAMS

پروژه خود را در اینجا ثبت کنید

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

GAMS (General Algebraic Modeling System) یک سیستم مدل سازی سطح بالا برای مسائل برنامه نویسی ریاضی است. این آموزش برای تازه واردان در این حوزه می باشد. توجه داشته باشید که این آموزش از آموزش شروع سریع بروس مک کارل اقتباس شده است.
gams

GAMS (General Algebraic Modeling System) یک سیستم مدل سازی سطح بالا برای مسائل برنامه نویسی ریاضی است. این آموزش برای تازه واردان در این حوزه می باشد. توجه داشته باشید که این آموزش از آموزش شروع سریع بروس مک کارل اقتباس شده است.

سه مدل اصلی

اکثر مدلسازان علاقه مند به GAMS حداقل به دنبال حل یکی از مسائل های زیر هستند:

  • آنها می خواهند مسائل بهینه سازی محدودیت دار با توابع هدف حل کنند.
  • آنها به دنبال سیستمی برای حل مسائل تعادل عمومی هستند که در زمینه های مختلف اقتصاد بوجود آمده است.
  • آنها مایل به حل سیستم های معادلات غیر خطی به وجود آمده در زمینه مهندسی هستند.

GAMS مجهز به مدل سازی و حل هر سه نوع مسئله است. ما با معرفی نمونه هایی برای هر سه حوزه شروع می کنیم و بحث های بعدی به این سه مثال اساسی اشاره می کند.

مثال اول: حل مسئله برنامه نویسی خطی (LP)

ساده ترین مسئله بهینه سازی محدود LP است. در ادامه یک مسئله برنامه ریزی خطی ساده آورده شده است که در آن سود حداکثر می شود:

توجه داشته باشید که سه متغیر تصمیم وجود دارد:  Xcorn نشان دهنده زمین اختصاص داده شده به کشت ذرت ، Xwheat زمین اختصاص داده شده به کشت گندم و Xcotton نشان دهنده زمینی است که پنبه در آن کشت می شود. در خط اول کل سود به عنوان تابعی از زمین اختصاص داده شده به سه محصول بیان می شود، ضرب کننده ها سود مورد انتظار در هکتار را بسته به نوع محصول نشان می دهند. محدودیت اول محدودیتی برای زمین موجود، محدودیت دوم محدودیتی برای نیروی کار موجود و سه خط پایانی متغیرهای تصمیم را به مقادیر غیر منفی محدود می کند.

توجه داشته باشید که سه متغیر تصمیم وجود دارد:  Xcorn نشان دهنده زمین اختصاص داده شده به کشت ذرت ، Xwheat زمین اختصاص داده شده به کشت گندم و Xcotton نشان دهنده زمینی است که پنبه در آن کشت می شود. در خط اول کل سود به عنوان تابعی از زمین اختصاص داده شده به سه محصول بیان می شود، ضرب کننده ها سود مورد انتظار در هکتار را بسته به نوع محصول نشان می دهند. محدودیت اول محدودیتی برای زمین موجود، محدودیت دوم محدودیتی برای نیروی کار موجود و سه خط پایانی متغیرهای تصمیم را به مقادیر غیر منفی محدود می کند.

این مسئله ممکن است در GAMS به شرح زیر بیان شود:

Positive Variables    Xcorn, Xwheat, Xcotton;
Variables             Z;

Equations     obj, land, labor;

obj..  Z =e= 109 * Xcorn + 90 * Xwheat + 115 * Xcotton;
land..             Xcorn +      Xwheat +       Xcotton =l= 100;
labor..        6 * Xcorn +  4 * Xwheat +   8 * Xcotton =l= 500;

Model farmproblem / obj, land, labor /;
solve farmproblem using LP maximizing Z;

مثال دوم: حل تعادل اقتصادی(Economic Equilibrium)

ساده ترین مدل تعادل عمومی ، مسئله تک کالا و تک بازار است. فرض کنید می خواهیم مسئله تعادل زیر را حل کنیم:

اجزای مدل

اکنون که مدل اصلی خود را در اختیار داریم، آنها را تجزیه و تحلیل کرده و اجزای آنها، از جمله متغیرها، معادلات ،تعاریف مدل ، شرایط حل و نقاط شروع را مورد بحث قرار می دهیم.

متغیرها

متغیرهای موجود در GAMS باید به عنوان متغیرهایی با دستور متغیر اعلام شوند. جملات متغیر در مثالهای بالا در زیر تکرار می شوند:

Positive Variables    Xcorn, Xwheat, Xcotton;
Variables             Z;

توجه داشته باشید که GAMS به حروف کوچک و بزرگ حساس نیست و اجازه می دهد تا از تعریف در خطوط مجزا به جای کاما استفاده شود. بنابراین، سه نگارش متغیر زیر همه معتبر هستند و تأثیر یکسانی دارند:

POSITIVE VARIABLES  Xcorn, Xwheat, Xcotton;
Positive Variables  xcorn, 
                    xwheat, 
                    xcotton;
positive variables  Xcorn
                    Xwheat , Xcotton;

در فرمول GAMS مسئله مورد نظر، ما متغیر Z را علاوه بر سه متغیری که در فرمول ریاضی مشخص شده است، معرفی کرده ایم. توجه داشته باشید که GAMS به مدل بهینه سازی نیاز دارد:

Maximize cx

فرم زیر را داشته باشد:

Maximize z
         z = cx

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

با توجه به نیاز یک متغیر تابع هدف در یک مسئله بهینه سازی، ما باید یک متغیر آزاد جدید تعریف و معادله ای برای آن معرفی کنیم. در این مثال ما Z را به عنوان یک متغیر آزاد اعلام کردیم، سپس معادله obj را تعریف کردیم و به حل کننده دستور دادیم که Z را به حداکثر برساند. خطوط مربوطه کد از مثال اول به شرح زیر است:

Variables     Z;

Equation     obj,  land ,  labor;

obj..   Z =e= 109 * Xcorn + 90 * Xwheat + 115 * Xcotton;

solve farmproblem using LP maximizing Z;

معادلات در مدل

هر معادله در یک مدل ابتدا باید با یک بیانیه اعلام معادله اعلام و سپس با یک بیانیه تعریف معادله تعریف شود. ما عبارت مربوطه را از مثال زیر تکرار می کنیم:

Equations     obj, land, labor;

obj..  Z =e= 109 * Xcorn + 90 * Xwheat + 115 * Xcotton;
land..             Xcorn +      Xwheat +       Xcotton =l= 100;
labor..        6 * Xcorn +  4 * Xwheat +   8 * Xcotton =l= 500;

توجه داشته باشید که بیانیه اعلام معادله با کلمه کلیدی Equation (s) شروع می شود. هدف اصلی این کار تعریف نام برای هر معادله می باشد.

ساختار جبری معادله در عبارت تعریف معادله مشخص شده است ، جایی که نام معادله با دو نقطه دنبال می شود .. و رابطه. رابطه بین سمت چپ و سمت راست با نمادهای خاصی مشخص می شود که نوع معادله را مشخص می کند. رایج ترین نمادها = e = برای برابری ، = l = برای رابطه کمتر یا مساوی و = g = برای رابطه بزرگتر یا مساوی است.

تعاریف مدل

وقتی همه عناصر ساختاری یک مدل تعریف و مشخص شدند ، از یک عبارت مدل برای تعریف مدلی که حل می شود استفاده می شود.

Model farmproblem / obj, land, labor /;

حالت های حل

پس از تعریف مدل، باید حل شود، یعنی یافتن راه حلی برای متغیرها. دستور حل به GAMS دستور می دهد تا از یک حل کننده برای بهینه سازی مدل یا حل سیستم معادلات استفاده کند.

solve farmproblem using LP maximizing Z;

اجرای برنامه GAMS

فرمول مدل یک مدل GAMS در یک فایل متنی با پسوند .gms ذخیره می شود ، به عنوان مثال myfile.gms. سپس فایل به GAMS ارسال می شود. GAMS دستورالعمل های فایل .gms را اجرا می کند ، در نتیجه محاسبات انجام می شود ، از حل کننده ها استفاده می شود و یک فایل خروجی با نتایج راه حل ایجاد می شود. فایل خروجی را فایل فهرست نیز می نامند. به طور پیش فرض ، فایل فهرست نام فایل ورودی myfile.gms myfile.lst خواهد بود.

دو روش برای ارسال کد به GAMS وجود دارد: از طریق خط فرمان و از طریق GAMS IDE.

اجرای GAMS در خط فرمان

فرمول مدل یک مدل GAMS در یک فایل متنی با پسوند .gms ذخیره می شود ، به عنوان مثال myfile.gms. این فایل ممکن است با GAMS با استفاده از تماس زیر اجرا شود:

   > gams myfile

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

   > gams trnsport pw=80 ps=9999 s=mysave

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

اجرای GAMS با IDE

محیط توسعه یکپارچه GAMS یک رابط کاربری گرافیکی برای Windows است که ویرایش ، توسعه ، اشکال زدایی مدل های GAMS و اجرای مشاغل GAMS را تسهیل می کند.

بررسی خروجی

خروجی اجرای GAMS در فایل خروجی یا فهرست ذخیره می شود. در این بخش خروجی تولید شده با اجرای مدل نمونه را بررسی می کنیم.

Echo Print

فایل فهرست همیشه با echo print شروع می شود. echo print یک کپی از فایل ورودی است که شماره خط به آن اضافه شده است. به عنوان مثال ، یک نمونه از echo print در ادامه آورده شده است.

۱  Positive Variables    Xcorn, Xwheat, Xcotton;
   ۲  Variables             Z;
   ۳
   ۴  Equations     obj, land, labor;
   ۵
   ۶  obj..  Z =e= 109 * Xcorn + 90 * Xwheat + 115 * Xcotton;
   ۷  land..             Xcorn +      Xwheat +       Xcotton =l= 100;
   ۸  labor..        6 * Xcorn +  4 * Xwheat +   8 * Xcotton =l= 500;
   ۹
   ۱۰  Model farmproblem / obj, land, labor /;
   ۱۱
   ۱۲  solve farmproblem using LP maximizing Z;

بعلاوه توجه داشته باشید که echo print به عنوان یک راهنمای مرجع مهم عمل می کند، زیرا GAMS شماره خطوط خطاهای شناسایی شده و دستورات حل را بر پایه همین شماره گذاری در echo print گزارش می کند.

خروجی تولید مدل

هنگامی که GAMS فایل ورودی را با موفقیت کامپایل کرد و هرگونه محاسبات عددی انجام شد، دستورات حل اجرا می شود. اولین قدم ایجاد نسخه قابل خواندن کامپیوتر از معادلات در مسئله است که به یک سیستم حل کننده مناسب منتقل می شود. در مرحله تولید مدل ، GAMS خروجی زیر را ایجاد می کند:

  • فهرست معادلات مدل.
  • فهرستی از متغیرهای مدل
  • خلاصه ای از ساختار مدل
  • اگر خطاهایی در هنگام تولید مدل تشخیص داده شود ، آنها نیز گزارش خواهند شد.

لیست معادلات

فهرست معادله اولین قسمت از خروجی است که توسط یک دستور حل تولید می شود.

Equation Listing    SOLVE farmproblem Using LP From line 12


---- obj  =E=

obj..  - 109*Xcorn - 90*Xwheat - 115*Xcotton + Z =E= 0 ; (LHS = 0)


---- land  =L=

land..  Xcorn + Xwheat + Xcotton =L= 100 ; (LHS = 0)

فهرست ستون

فهرست ستون یا متغیر شامل لیستی از ضرایب است که بر اساس ستون و نه بر اساس سطر مرتب شده اند (مانند فهرست معادله). به طور پیش فرض ، سه ورودی اول برای هر متغیر، همراه با حد پایین .lo ، حد بالا .up و سطح سطح فعلی .l نشان داده می شود. فهرست ستون دو متغیر اول برای هر مثال در زیر آورده شده است.

Column Listing      SOLVE farmproblem Using LP From line 12


---- Xcorn

Xcorn
                (.LO, .L, .UP, .M = 0, 0, +INF, 0)
     -۱۰۹       obj
        ۱       land
        ۶       labor


---- Xwheat

Xwheat
                (.LO, .L, .UP, .M = 0, 0, +INF, 0)
      -۹۰       obj
        ۱       land
        ۴       labor

آمار مدل

در حالی که مدلی برای حل آماده می شود، اطلاعات نهایی تولید شده بلوک آمار است. بارزترین کاربرد آن ارائه جزئیات در مورد اندازه و غیر خطی بودن مدل است. آمار مدل نمونه در ادامه آمده است.

MODEL STATISTICS

BLOCKS OF EQUATIONS           6     SINGLE EQUATIONS            6
BLOCKS OF VARIABLES           6     SINGLE VARIABLES            6
NON ZERO ELEMENTS            20     NON LINEAR N-Z             10
DERIVATIVE POOL              20     CONSTANT POOL              16
CODE LENGTH                  22

گزارش راه حل

آخرین جزء اصلی فایل فهرست، خروجی حل است. این شامل خلاصه، مقداری خروجی مخصوص حل کننده و گزارش راه حل معادلات و متغیرها می باشد.

خلاصه حل کنید

خلاصه حل بسیار مهم است زیرا شامل یک مرور کلی از اطلاعات کلیدی راه حل است. خلاصه یک نمونه حل در زیر آورده شده است.

              S O L V E      S U M M A R Y

     MODEL   wall                OBJECTIVE  ba
     TYPE    NLP                 DIRECTION  MINIMIZE
     SOLVER  CONOPT              FROM LINE  16

**** SOLVER STATUS     1 Normal Completion
**** MODEL STATUS      2 Locally Optimal
**** OBJECTIVE VALUE                1.0000

 RESOURCE USAGE, LIMIT          0.034      1000.000
 ITERATION COUNT, LIMIT         7    2000000000
 EVALUATION ERRORS              0             0

گزارش حل کننده

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

CONOPT 3         24.7.3 r58181 Released Jul 11, 2016 DEG x86 64bit/MacOS X
 
 
    C O N O P T 3   version 3.17A
    Copyright (C)   ARKI Consulting and Development A/S
                    Bagsvaerdvej 246 A
                    DK-2880 Bagsvaerd, Denmark

                  Pre-triangular equations:   0
                  Post-triangular equations:  0
 
 
 ** Optimal solution. There are no superbasic variables.

فهرست حل

لیست حل ها به ترتیب سطر به ستون و سپس ستون به ستون از راه حل هایی است که توسط برنامه حل کننده به GAMS بازگردانده می شود. هر معادله و متغیر جداگانه شامل سطح و مقادیر حاشیه ای آنها و مرزهای پایین و بالای آنها فهرست شده است. لیست راه حل نمونه به شرح زیر است:

                           LOWER          LEVEL          UPPER         MARGINAL

---- EQU obj                 .              .              .             1.0000
---- EQU land              -INF          100.0000       100.0000        52.0000
---- EQU labor             -INF          500.0000       500.0000         9.5000

                           LOWER          LEVEL          UPPER         MARGINAL

---- VAR Xcorn               .            50.0000        +INF             .
---- VAR Xwheat              .            50.0000        +INF             .
---- VAR Xcotton             .              .            +INF          -13.0000
---- VAR Z                 -INF         9950.0000        +INF             

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *