Equation Listing

اولین خروجی مربوط به دستور solve، نام معادلات به همراه فرمول گسترده آنها می باشد. این بخش تحت عنوان Equation Listing در فایل lst زخیره می شود.

بخش معادلات گسترده در مثال کاربردی ۱ به صورت شکل زیر خواهد بود. همانطور که ملاحظه می کنید، تابع هدف مسئله به صورت گسترده به همراه تمامی ضرایب، متغیرها و اندیس های مختلف آورده شده است. محدودیت اول به ازای مقادیری که اندیس i (1و۲و۳) به خود می گیرد، به سه محدودیت دیگر تبدیل شده است.

equatin listing

توجه! : به یاد دارید که پس از Run کردن مدل، پنجره ی Process Window اطلاعاتی کلی در مورد مدل ارائه می دهد. یکی از این اطلاعات، تعداد محدودیت های گسترده و تعداد متغیرها می باشد. طبق شکل زیر، این مقادیر تحت عناوین row و column بیان می شوند.

number of row and columns

توجه! : در listing file، به تعداد دستورات solve که در برنامه نوشته ایم Equation Listing خواهیم داشت.
 اگر تعداد محدودیت ها زیاد باشد، و یا فرمول گسترده ی آنها طولانی باشد، GAMS تعدادی (به صورت پیش فرض سه عدد) از این محدودیت ها را برای نمونه در lst نشان می دهد و پس از آن، تنها تعداد فرمول های باقی مانده را ذکر می کند.
توجه! : در صورتی که مایلید تعداد محدودیت ها در این لیست بیشتر باشند می توانید دستور option limrow=h ; را در برنامه اضافه کنید. در اینجا (h) تعداد محدودیت های است که مایل به مشاهده ی فرمول گسترده ی آنها در این لیست هستید.

خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش column listing، در نوار کناری سمت راست (منوی داینامیک دسته بندی) مراجعه نمایند.

با تشکر
مدیریت سایت gamsbook.ir

ایمیل: Support@gamsbook.ir
شماره تماس: ۳۳۲۵-۴۰۵—۰۹۱۹

 

این مقاله برای شما مفید بود؟

مطالب مشابه

2 دیدگاه

  1. محمودی

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

    من متغیرها را به صورت زیر فیکس کردم:
    e30..z(‘0′,’1’)=e=1;
    e31..z(‘1′,’3’)=e=1;
    e32..z(‘3′,’5’)=e=1;
    e33..w(‘1′,’2′,’1’)=e=1;
    e34..wb(‘2′,’3′,’1’)=e=1;
    و در حالی که هیچکدام محدودیت ۵ مرا نقض نمی کنند ولی در بخش Equations در خروجی با حالت زیر مواجه می شوم:
    —- e5 =E=

    e5(1).. z(0,1) + z(2,1) + z(3,1) + z(4,1) + w(2,1,0) + w(2,1,1) + w(3,1,0)

    + w(3,1,1) + w(4,1,0) + w(4,1,1) + wh(2,1,0) + wh(2,1,1) + wh(3,1,0)

    + wh(3,1,1) =E= 1 ; (LHS = 0, INFES = 1 ****)

    e5(2).. z(0,2) + z(1,2) + z(3,2) + z(4,2) + w(1,2,0) + w(1,2,1) + w(3,2,0)

    + w(3,2,1) + w(4,2,0) + w(4,2,1) + wh(1,2,0) + wh(1,2,1) + wh(3,2,0)

    + wh(3,2,1) =E= 1 ; (LHS = 0, INFES = 1 ****)

    e5(3).. z(0,3) + z(1,3) + z(2,3) + z(4,3) + w(1,3,0) + w(1,3,1) + w(2,3,0)

    + w(2,3,1) + w(4,3,0) + w(4,3,1) + wh(1,3,0) + wh(1,3,1) + wh(2,3,0)

    + wh(2,3,1) =E= 1 ; (LHS = 0, INFES = 1 ****)
    اگر درست فهمیده باشم INFES = 1 را معادل نقض محدودیت به دلیل مقادیر فیکس شده در نظر گرفتم.
    ممنون می شوم اگر راهنمایی کنید که برداشت من درست است یا نه و اگر چنین است چرا مقادیر متغیری که به ازای آن محدودیت برقرار است، در خروجی به این شکل نشان داده می شود که محدودیت نقض می شود.

    1. محمودی

      سلام
      اینکه بگیم فلان متغیر فیکس شده دلیلی بر این نیست که سایر مقادیرش دیگه برابر صفر هستن. مثلا z21 رو شاید مدل میگه اینم باید ۱ بشه، ولی چون از قبل z01 برابر یک شده، مجموعشون نمیشه ۱ و نشدنیه.
      ضمنا برای فیکس کردن نیازی به افزودن محدودیت نیست. کافیه قبل از دستور solve بنویسین:

      z.fx('0','1')=1;
      

دیدگاهی دارید؟