۱۹

Solution Report

در این بخش از خروجی اطلاعاتی کلی در مورد خروجی مدل، چگونگی حل و نتایج مرتبط با آن منتشر می شود. این بخش از خروجی شامل solve summary ، solequ و solvar می باشد و در صورتی که پس از دستور solve از display هم استفاده کرده باشیم، display را هم در آن مشاهده می کنیم. در عکس زیر قسمت model summary را مشاهده می کنید. خروجی های مربوط به model, type و solver بدیهی بوده و از توضیح آن می گذریم. می توان گفت مهم ترین بخش solution report مربوط به solver status و model status می باشد. برای اینکه مطمئن شویم که مدل ما درست حل شده و یا اینکه شرایط حل آن به خوبی پیش رفته یا نه، باید این دو بخش را مطالعه کنیم. برای اینکه متوحه شوید که هر کدام از عبارات بالا چه مفهومی را ارائه می دهند اینجا کلیک کنید. در ادامه هم جواب ارائه شده برای تابع هدف به همراه گپ و lower bound جزو خروجی های این بخش است. در بخش بعدی نیز زمان حل مدل به همراه تعداد تکرار های مورد استفاده ی در حل مدل ارائه خواهند شد.

 

solution report

قسمت solveEqu و solvar هم به ترتیب اطلاعاتی در مورد محدودیت ها و متغیرهای مدل ارائه می دهند. این اطلاعات شامل مقادیر بهینه (در ستون level)، مقادیر دوگان در ستون marginal و مقادیر مربوط به کران های مربوطه می باشد. (این پست قبلا منتشر شده بود ولی به علت مشکلات دیتا بیس حذف شده است. و اجباراً پست از نو نوشته شده است و قطعا از پست قبلی کیفیت پایین تری دارد. از این بابت از شما عزیزان پوزش می طلبیم)

آموزش گام به گام در اینجا به اتمام می رسد. و خواننده از این به بعد فقط با تمرین و ممارست و کد نویسی مدل های مختلف و مطالعه ی عمیق تر می تواند در استفاده از گمز تبحر پیدا کرده و سطح آکاهی خود را از مبتدی به حرفه ای و سپس توسعه دهنده ارتقا دهد. سایر بخش های مختلف سایت را نیز مطالعه کنید. و به یاد داشته باشید سه مورد به شما خیلی کمک خواهند کرد. ۱- استفاده از help نرم افزار و سایت gams.com و ۲- کامنت های سایت گمز بوک که با در انها سعی شده است با دقت به کاربران پاسخ مناسبی ارائه شود. ۳- مطالعه و استفاده مستمر

منتظر محصولات تصویری ما در آینده ای نزدیک باشید.

موفق و پیروز باشید

19 دیدگاه در “Solution Report

  1. سلام
    روز به خیر
    موضوع پایان نامه من برنامه ریزی شیفت چند هدفه استç
    تابع هدف objective .. z=e=w1*t/1560+w2*q/26+w3*fn/3800000;

    ودر آخر شرط scalar o;
    for (o=0.09 to 0.9,
    w1=o; w2=o+0.01; w3=1-2*o-0.01);
    برای تغییر وزنها قرار دادم ولی بعد از اجرا فقط تابع هدف تغییر می کند و اهداف t,q,fn همچنان ثابت هستند و تغییر نمی کنند . من برای حل پارتو , با تغییر وزنها با حلقه for به تغییر ۳ هدف نیاز دارم. ممنون می شم اگر راهنمایی کنید.

    • سلام
      وزن ها رو درست تولید میکنه؟
      دستور solve رو به چه شکل گذاشتین؟
      در هر بار solve شدن مدل چه چیزهایی رو و به چه شیوه ای ذخیره میکنین؟

  2. سلام
    :رو به این شکل گذاشتم solve دستور

    model shiftscheduling /all/;
    scalar o;
    for (o=0.09 to 0.9, w1=o; w2=o+0.01; w3=1-2*o-0.01);
    solve shiftscheduling using Mip minimizing z;
    display t.l,q.l,fn.l,z.l ;
                                                                                                                                                               :تابع هدف و محدودیتها 
    objective   .. z=e=w1*t/780+w2*q/13+w3*fn/645000;
    *co1(i)      .. sum(j,xd(i,j))=e=d(i);
    *co2(i)      .. sum(j,xm(i,j))=e=m(i);
    co3(i,j)$((ord (i) ne 6)and (ord (i) ne 7))    .. xd(i,j)+xm(i,j)+xr(i,j)=e=1;
    co31(i,j)..  xd(i,j)+xm(i,j)=e=1;
    co4(i,k)    .. sum(j,yd(i,j,k))=l=2;
    co5(i,k)    .. sum(j,yd(i,j,k))=g=1;
    co6(i,k)    .. sum(j,ym(i,j,k))=l=2;
    co7(i,k)    .. sum(j,ym(i,j,k))=g=1;
    *co8(i,j)    .. sum(k,yd(i,j,k))=l=3;
    *co9(i,j)    .. sum(k,yd(i,j,k))=g=1;
    *co10(i,j)   .. sum(k,ym(i,j,k))=l=3;
    *co11(i,j)   .. sum(k,ym(i,j,k))=g=1;
    co12(i,j)   .. xd(i,j)=l=sum(k,yd(i,j,k));
    co13(i,j)   .. 20*xd(i,j)=g=sum(k,yd(i,j,k));
    co14(i,j)   .. xm(i,j)=l=sum(k,ym(i,j,k));
    co15(i,j)   .. 20*xm(i,j)=g=sum(k,ym(i,j,k));
    co16(j)     .. sum(i,xr(i,j))=e=1;
    *co17(j)     .. sum(i,xd(i,j))+sum(i,xm(i,j))=e=6;
    co18(j)     .. sum(i,sum(k,a(k)*(yd(i,j,k)+ym(i,j,k))))=l=t;
    co19(j)     .. sum(i$((ord(i) ne 6)and (ord(i) ne 7)),(xd(i,j)+xm(i,j))*r(i,j))=l=q;
    co20        .. sum(i,sum(j,(xd(i,j)+xm(i,j))*s(i,j))+fn-fp)=e=645000;
    

    .داد t,q,fn و یک w1,w2,w3 هر سه هدفم تغییر کنه ولی به من فقط یک for من میخوام با تغییر وزن ها به وسیله حلقه

    • سلام
      شما باید دستور solve رو بذارین تو for که تعریف کردین. این for که تعریف کردین فقط میاد w ها رو حساب میکنه و آخرین wای که به دست آورده رو میبره تو دستور solve و حل میکنه. این درست نیست.
      اینجوری بنویسین:

      for(....
      w1=....
      .
      .
      solve mYmodel.......
      tFinal(o)=t.l;
      qFinal(o)=q.l;
      fnFinal(o)=fn.l;
      zFinal(o)=z.l;
      );
      display zFinal,tFinal,q.Final,fn.Final
      

      همونطور که میبینین، تمامی دستور ها رفتن تو دستور for و هر بار که o عدد میگیره، مدل حل میشه و مقادیر هر متغیر تو پارامتر جدیدی که براش تعریف شده ذخیره میشه و درنهایت مقادیر ذخیره شده display میشه. اون پارامترایی که جدیدن رو باید بع عنوان parameter تعریف کنین.

    • سلام
      بله. باید این کارو بکنین. پیشنهاد من اینه که با loop حلقه رو بنویسین، دردسراش خیلی کمتره و راحت تره. پارامترها هم همونجوری که تو کد نوشتم تعریف کنین. tFinal(o) مثلا
      میگه بعد از این دستور باید set استفاده کنین.

  3. سلام
    من مبحث انواع حلقه رو مطالعه کردم .درسته o نمیتونه set باشه ولی من دلیل خطای ۱۲۱ (set expected) نفهمیدم.پارامترهایی که گفته بودید رو درست تعریف کردم؟ در قسمت پارامتر fnFinal,qFinal,tFinal ,zFinal تعریف کردم.

  4. سلام
    ببخشید ممکنه در این مدل حلقه Loop رو چطور می شه نوشت؟
    آیا این درسته؟ ; loop (o, w1=o ; w2=o+0.01
    ; w3=1_2*o_0.01
    ; solve model using mip minimizing
    ; tFinal(o)=t.l
    ; qFinal(o)=q.l
    ; fnFinal(o)=fn.l
    ; zFinal(o)=z.l
    ;(
    ; display zFinal,t.Final,qFinal,fnFinal
    من o رو چطوری میتونم به صورت مجموعه تعریف کنم؟ می خوام بین ۰.۰۹ و ۰.۹ تغییر کنه .
    o باید scalar باشه یا به صورت set تعریف کنم؟

    • بهترش کردین آفرین. فقط میمونه تعریف o که بر اساس set باید تعریف بشه.

      set o/9*90/
      

      و تو حلقه هم برای w ها این شکلی بنویسین مثلا:

      w1=ord(o)/100;
      
    • سلام
      ممکنه نشدنی شده باشه مدل شما، و یا اینکه مدل به نفعش باشه که ضفر بشه. هر دو حالت رو چک کنین شما. پیام های solver status و model status رو چک کنین.

  5. سلام ،پس از ران کر دن مدل هیچ اروری نمیده ولی تمامی متغیرها و تابع هدف صفر شده چطوری بفهمم مشکل از کجاست؟ممنون میشم کمکم کنید

پاسخ دهید

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