۷۱

خروجی های نرم افزار

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

در این فصل به تشریح خروجی های استاندارد، خطاهای متداول و بهبود خروجی GAMS مورد بحث قرار خواهند گرفت.
مثال کاربردی ۱ -که قبلاً کد نویسی کردیم- را در نظر بگیرید. این مدل کاملاً آماده ی حل و گرفتن نتایج حاصله می باشد. برای حل یک مدل چند مسیر عمومی وجود دارد که نهایتاً نتیجه ی یکسانی خواهند داشت. ۱- به منوی File/Run می رویم. ۲- دکمه ی F9 را فشار می دهیم. ۳- در روش سوم طبق شکل زیر در قسمت Command Line دستور ساده ی gams example1 را تایپ می کنیم.

how-to-run

۳- روش سوم که بسیار متداول تر می باشد، استفاده از دکمه ی Run که در شکل زیر نشان داده شده است می باشد.

how-to-run-2

مدل را Run کنید. پس از Run کردن مدل، بلافاصله پنجره ی پویای Proccess Window باز خواهد شد. این پنجره فرآیند کد خوانی GAMS، پیشرفت مرحله به مرحله ی حل مدل، فازهای مختلف آن، زمان شروع و زمان پایانِ حل مسئله، میزان Gap و کران های بالا و پایین، Errorهای احتمالی و اطلاعات لحظه ای این فرآیند را نشان می دهد. در این پنجره Error ها با رنگ قرمز و موقعیت ها و شرایط مهم به هنگام حل مدل (بعضا تغییر در رویه ها و نتیجه گیری های مختلف توسط GAMS و…) با رنگ آبی نشان داده می شوند. با دبل کلیک روی سطر قرمز به سطر مربوط به خطا در کد نوشته شده(یا مکان نما در فایل lst) خواهیم رفت. همچنین با دبل کلیک روی سطر آبی به زیر فرآیند مربوطه در فایل lst خواهیم رفت. توجه شود که Error ها در همین فصل به طور کامل و کاربردی، مورد بحث و گفتگو قرار خواهند گرفت و در صورت مشاهده ی هر گونه خطا در برنامه ی خود به این بخش مراجعه کنید.

process-window

به علاوه Process window دو کلید و دو گزینه نیز دارد.
Summary only : در صورت زدن تیک این گزینه ، تنها خطوط با رنگ آبی یا قرمز و خطوطی که با (—-) شروع شده اند نمایش داده می شوند. به این ترتیب تعداد خطوط نمایش داده شده، کم خواهند شد.
Update : در صورت زدن تیک این گزینه ، همزمان که فرایندِ حل پیشرفت می کند کاربر قادر خواهد بود بدون scroll کردن، آخرین گزارش اجرایی را همزمان با پیشرفت حل مدل ببیند. اگر این تیک برداشته شود، تنها با scroll کردن می توان سطور مختلف این پنجره را مشاهده نمود.
Stop : با زدن این دکمه، تمامی فرایند حل مدل قطع خواهد شد. اگر مدل کاملاً حل شده باشد، دکمه stop به open log تبدیل خواهد شد.
شایان ذکر است که همزمان با حل مدل، سه فایل دیگر همنام با فایل example1.exe ولی با فرمت های متفاوت شامل، .log و .lxi و .lst در دایرکتوری GAMS -که شامل خروجی های GAMS می باشند- تولید می شوند.
یک log file ، فایلی با فرمت (.log) می باشد (در مثال مورد بررسی ما example1.log) که بلافاصله پس از Run کردن مدل در دایرکتوری GAMS تولید می شود. در واقع یک log file همان اطلاعات موجود در process window است که به صورت ایستا برای زخیره سازی و استفاده ی مجدد تعریف شده است. این فایل با استفاده از برنامه های editor (مانند notepad) نیز قابل خواندن می باشد.
یک lxi :
یک فایل lst اصلی ترین خروجی در نرم افزار GAMS می باشد. این خروجی به طور کامل در بخش بعد تحت عنوان خروجی استاندارد تشریح خواهد شد.



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

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

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

 

71 دیدگاه در “خروجی های نرم افزار

  1. سلام ببخشید که مزاحم میشم. من مدلمو تو GAMS نوشتم و Run کردم. مدل به صورت MINLP هست. تو روند حل تا Iteration آخر مینویسه OPT و مقدار تابع هدف منطقی و ثابت هست اما تو آخرین تکرار مینویسه No feasible و مقدار تابع را صفر قرار میده. برای یه مثال کوچیکتر جواب داده و مدل شدنی بوده. می خواستم اگه بشه راهنماییم کنید که چرا جواب نمیده؟ و اینکه ممکنه به خاطر تعداد بالای تکرار باشه و اگه آره میشه جوری تنظیم کرد که در سطح پایین تری متوقف شه؟
    زمان Run حدودا بیست دقیقه ست و Solver استفاده شده Bonmin هست

    • سلام
      این جوابی که داده به خاطر نشدنی بودن مسئله شما هست احتمالا. مدل رو بررسی مجدد کنید.
      بله میشه حتی زمان رو gap رو محدود کرد.
      واسه شرط توقف زمانی از دستور reslim
      و برای توقف از نظر gap: از دستور optcr استفاده کنین.
      مثال:

      option reslim=3600;
      option optcr=0;

      من توصیه م انه که از baron هم استفاده کنین.

  2. با عرض سلام و تشکر
    زمانی که برای زمان اجرا از دستور reslim استفاده میکنیم، اگر زمان رسیدن به جواب بهینه کمتر از زمانی است که ما نوشتیم چگونه میتوان به زمانی که جواب مدل به بهینه خود رسیده است را بیابیم.
    باتشکر

  3. با عرض سلام و تشکر
    زمانی که برای زمان اجرا از دستور reslim استفاده میکنیم، اگر زمان رسیدن به جواب بهینه کمتر از زمانی است که ما نوشتیم چگونه میتوان به زمانی که جواب مدل به بهینه خود رسیده است را بیابیم?
    باتشکر

  4. سلام

    ممنون از سایت خوبتون

    ببخشید چه جوری میشه وسط ران کردن گمز، برنامه را متوقف و جواب را مشاهده کرد؟

    باتشکر

    • سلام
      مرسی و خواهش میکنم.
      شما وقتی مدل رو ران میکنین، یه پنجره دیگه باز میشه که اسمش process window هست. همزمان که مدلتون داره ران میشه، دو تا گزینه تو این پنجره میبینین، یکیش stop و اون یکی هم interrupt هست. interrupt رو بزنین، اگه گمز تا اون لحظه به جوابی شدنی رسیده باشه، بهترین جواب شدنی رو بهتون نشون میده. اگه نه که همه متغیرا رو صفر میده. stop که کلا همه چیو متوقف میکنه
      موفق باشین

  5. سلام . وقت بخیر. دوتا سوال دارم
    اول اینکه بعد از اجرای برنامه توی بخش equation وقتی می خوام یکی از توابع رو چک کنم جلوش نوشته none . دلیلش چیه و چطور می تونم تابع رو ببینم؟

    دوم اینکه چطور می تونم زمان اجرای برنامه رو با دستور display نشون بدم؟؟

  6. سلام . آیا توی گمز دستوری وجود داره که زمان اجرای چند خط از برنامه رو نشون بده؟
    مثلا برای ماتریس Q می خوام مقدار زیر رو حساب کنم و سپس زمان محاسبه ش رو بهم نشون بده
    A1(i)=sum(j,Q(i,j));
    A(i)=A1(i)+c(i);
    M=smax(i,A(i));

    • سلام به طور واضح وجود نداره. ولی میتونین با دستورات زیر این زمان رو محاسبه کنین. عبارت YOURCODE همون کد شماست که زمانش رو میخواین محاسبه کنین. توجه کنین در صورتی که از لوپ استفاده نکنین. احتمالا جواب صفر به شما میده. چون زمان محاسبه ساده تو گمز خیلی پایینه.

      scalar starttime; starttime = jnow;
      YOURCODE
      scalar elapsed; elapsed = (jnow - starttime)*24*3600;
      display elapsed;

      • ممنون از پاسختون.
        یه سوال دیگه
        چند تا مدل نوشتم که همشون از روش LP و یکیشون از روش MIQCP حل میشه. جواب بهینه مسائل LP رو میده اما جواب بهینه مسأله MIQCP رو صفر میده. دلیلش چی هست؟

        • سلام
          فضای شدنی همه یکی هست؟ یعنی این Lp ها و این MIQCP دقیق داده ها و محدودیت های مشترکی دارن یا خیر؟

        • داده های مشترکی دارند. اما محدودیت ها مشترک نیستند. امکان داره مشکل از لایسنس باشه؟

        • محدودیت مشترک نباشه تضمینی نیست که جوابا یکی باشه. ممکنه از لایسنس هم باشه. چند خط آخر process window رو مشاهده کنین.

  7. سلام و خسته نباشید. ممکنه ببینین سوال من راه حلش چیه؟
    من یک مساله نمونه با ابعاد بزرگ رو می خوام با بارون حل کنم. تو نمونه های کوچیک حواب می ده ولی در حالت بزرگ، وقتی reslim رو مثلا ۷۰۰۰ میزارم روی حدود یکساعت نرم افزار خود به خود قطع میشه و پیام stop workingمیده. برای چک کردن قدرت کامپیوتر مدل رو خطی و ساده تر کردم و با سیپلکس حل کردم تا حدود سه ساعت هم مشکلی پیش نیومد. به نطرتون چه باید کرد؟

    • سلام
      اروری که داد ارور گمز بود یا از این خطاهایی که ویندوز میده رو داده بود؟
      بله این مشکل پیش میاد بعضی وقتا. پیشنهاد من اینه که از لیندو استفاده کنین. تاپیک زیر رو بخونین حتما
      دانلود گمز به همراه لایسنس و راهنمای نصب
      البته یه پیشنهاد دیگه هم اینه که روی آیکون (یا شورتکات یا جایی که نصب شده یا تو منوی start) گمز کلیک راست کرده و properties رو بزنین. بعد compatibility رو بزنین، بعد تیک run this program رو بزنین، و گزینه ی windows xp (service pack 2) رو انتخاب کنین. شاید درست شد. و اینکه اگه سیستم عامل شما ویندوز نیست من پیشنهادی ندارم

        • متاسفانه هنوز حل نشده . از سالور دیگه ای به جز لیندو استفاده کردم و روی مدل باز کار کردم. ولی بازهم روی حدود ۳ ساعت نتونست جواب پیدا کنه و ارور متوقف شدن نرم افزار اومد (پنجره … has stop working ) و بعد در process window ذکر شد که جوابی پیدا نشد.سیستم عامل هم ویستا است. آیا به نظرتون لیندو می تونه کاری که بارون نتونست رو انجام بده؟

        • سلام
          ممکنه بتونه. از سالورهای دیفالت مث دیکاپت و کوناپت هم استفاده کنین. شاید شد.
          اگه باز موفق نشدین، بهترین کار اینه که مدل رو خطی کنین. البته اگه قابلیت خطی سازی در مدل وجود داره

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

  8. منظور از عبارات Best possible، Absolute gap، MIP Solution، ،Relative gap، Final Solve چیه؟
    مدل من یه مدل خطی هست و انتظار دارم جواب بهینه دقیق به دست بیارم. چرااین اتفاق نمی افته؟

  9. سلام می بخشید من یه مدل LP-METRIC دارم وقتی تابع z اصلی که ترکیب ۴تا هدفه را مینویسم ارور میده
    Model Assemble /all/ ;
    Solve Assemble using nlp minimizing f1 ;
    Solve Assemble using nlp maximizing f2 ;
    Solve Assemble using nlp minimizing f3 ;
    Solve Assemble using nlp maximizing f4 ;

    Solve Assemble using nlp minimizing Z ;

    objective..z=e=(w1*((f1-z1)/z1)**(p)+w2*((z2 -f2)/z2 )**(p) +w3*((f3- z3 )/z3 )**(p)+w4*((z4 – f4 )/ z4 )**(p))**(1/p)

    — objective =E=

    objective.. (0)*f1 + (0)*f2 + (0)*f3 + (0)*f4 + z =E= 0 ; (LHS = UNDF)

    • سلام
      این روش سوال پرسیدن نیست. شما ارور رو باید بفرستین. ضمن اینکه تو مخرج ها معمولا ماکسیمم f رو مینتویسن. مثلا میزنن f1max-z1/(f1max-f1min)

  10. با سلام خدمت شما.ممنون از سایت مفیدتون
    من یک مسأله minlp نسبتا در ابعاد بزرگ دارم که توابع مثلثاتی توش هست و از dicopt استفاده کردهام. وقتی برنامه را اجرا میکنم اول infeasibility میاره بعد نیم ساعتی objective را نشان میدهد و بعد این پیامoptimal solution convergence too slow و میگه که تغییرات تابع هدف برای چند تکرار خیلی کم بوده و بعد احساس میکنم برنامه واگرا میشه.
    خواستم ببینم آیا دستوری هست که اگه تابع هدف برای چند تکرار یک مقدار داشت، برنامه باز ادامه بده و اون پیامی که گفتم را نیاره.

    • سلام
      مرسی و خواهش میکنم.
      بله همچین دستوری وجود داره. شما باید از optionی به نام continue استفاده کنین که مقدارش صفر باید باشه. کد زیر رو بین دستور Model و solve کپی کنین. yourmodelname هم اسم مدل شماست.

      $onecho > Dicopt.opt
      continue 0
      $offecho
      Your_mode_name.optfile=1;

  11. با سلام و خسته نباشید.
    من یک مدل گمز دارم که وقتی اجرا میکنم در قسمت خروجی میگه جواب بهینه است اما یک مقدار گپ هم نشون میده!!!! زمان حل رو زیاد کردم و تا یک ساعت رسوندم اما هنوز جوابی که نشون میده گپ داره. مساله هم زیاد بزرگ نیست.
    ایراد از چیه؟ آیا مدل ریاضی هم ممکن است ایراد داشته باشد؟

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

  12. سلام ممنون از سایت خوبتون.
    ببخشید من برای یه مسئله ای کد کوچیکی در گمز نوشتم که جواب تابع هدف رو صفر میاره نمیدونم مشکلش چیه. من کد گمز و صورت مدل رو ایمیل کردم براتون اگر ممکنه راهنمایی بفرمایید ممنون میشم

    • سلام
      علت نشدنی بودن معمولا ایناست:
      ۱- ساختار مدل اشتباه باشه و مدل نویسی مشکل داشته باشه. پس مدل رو با مقالات پایه مقایسه کنین و بیشتر روش فکر کنین. دستورات شرطی خیلی ساده هم روی جواب تاثیر داره. کم کم محدودیت ها رو مدل اضافه کنین و پیدا کنین که کدوم محدودیتا به هم تناقض دارن. تحلیل کنین.
      ۲- داده هایی که مدل داده شده مناسب نباشه. بهتره با یه مثال ساده شروع کنین کار رو.

  13. سلام
    معذرت میخوام من یک مدل غیر خطی بهینه سازی دارم که در گمز کدنویسی کردم و خروجی هم گرفتم ولی در status model ،حالت locally optimal به جای بهینه کلی نوشته شده.میشه لطفا راهنمایی کنید چیکار کنم تا به جواب بهیه کل برسم؟
    اکتفا به همین جواب درسته یا غلط؟
    با تشکر

    • سلام
      اکتفا بهش نمیشه چیزی خواصی در موردش گفت. گپی هم که اعلام کرده مهمه.
      اولا شرط زمان رو مد نظر داشته باشین شما. محدودیت زمانی شما باید بر حسب زمان حل مدل شما باشه. مثلا اگه تو هزار ثانیه متوقف شده و این پیام رو داده، زمان حل رو بیشتر کنین.
      ثانیا یکی از روش هایی که از لوکال خارج میکنه مسئله رو، جواب آغازین هست. شما یه جواب آغازین به متغیرهاتون بدین. مثلا x.l=5 تا جوابای دیگه ای هم بتونه تولید کنه.
      از سالورهای دیگه هم کمک بگیرین.

  14. سلام
    خیلی ممنون از اینکه جواب دادید.
    میشه لطفا بفرمایید زمان حل را چطور افزایش بدم.
    .سالورهای دیگه برای مدل غیر خطی را میشه خواهش کنم نام ببرید.
    سپاسگذارم

    • سلام
      این کد رو به قبل از دستور solve انتقال بدین و مسئله رو ران کنین. ۲۰۰۰۰ همون زمان توقف هست به ثانیه.
      option reslim=20000;
      سالورای زیادی هستن که برای غیر خطی میتونن مناسب باشن. مثلا بارون، لیندو، دیکاپت، اس بی بی. شما اینا رو میتونین تو بخش file/option/solvers ببینین.

  15. با عرض سلام
    معذرت میخوام در نرم افزار گمزی که من نصب کردم بیشتر سالورها در حالت Demo هستند.میشه لطفا یه لینک معرفی کنید که لایسنسی داشته باشه که کل سالورها رو در حالت Full داشته باشه.
    اگر باید تاریخ کامپیوتر هم تغییر بدم لطفا بفرمایید.
    سپاس

    • سلام
      خب مهندس یه سرچ میزدین تو همین سایت پیدا میکردن حتما.
      تو بخش مطالب، یه دسته له نام دانلود و نصب گمز گذاشتیم. همون رو دنبال کنین مشکل حل میشه.

  16. سلام
    خیلی ممنون از مطالب مفید سایت شما.
    یک سوال داشتم در یک محدودیت می خوام مجموع ظرفیت های i در هر سال برابر با سهم همان سال به علاوه ی مجموع سهم باقیمانده از سال های قبل.چطوری باید متغیر ها رو اندیس بذارم.هر جور مینویسم ارور میده.
    محدودیت مورد نظر:
    con..SUM(i,X(yr,i))=E=UP(yr)+SUM(yr-1,(UP(yr-1)-SUM(i,X(yr-1,i))));
    میشه لطفا بفرمایید درست عبارت بالارو چه جوری بنویسم؟
    ممنون

    • سلام
      مرسی و خواهش میکنم.
      محدودیت رو اشتباه نوشتین.
      con(yr)..SUM(i,X(yr,i))=E=UP(yr)+SUM(yrprime$(ord(yrprime) <= ord(yr) ),(UP(yr-1)-SUM(i,X(yr-1,i)))); ypprime رو باید الیاس yr کنین. مفهومش رو من کاری ندارم.

  17. سلام
    خسته نباشید.ممنون از راهنمایی های خوب شما.
    ببخشید اگر بخواهیم یک قید را به صورت شرطی با دستور if بنویسیم امکانش هست؟
    از دستور if نمیدونم چه جوری استفاده کنم.ممنون اگر کمک کنید.

  18. سلام
    آقای محمودی میشه لطفا بفرمایید چطور باید این شرط رو در ساختار مدلم بنویسم؟
    تابع هدف من حاصلضرب مجموع سود ۵ کشاورز است.برخی کشاورزها مجموع سودشان صفر می شود و همین باعث میشه کل تابع هدف صفر بشه.یه دستور می فرمایید که بنویسم و با اون به مدل بگم اگر مجموع سود یک مزرعه صفر شد در تابع هدف اون مزرعه وارد نشود.
    sumation(f)=E=sum(yr,benefit(yr,f);
    تابع هدف
    prod(f,sumation(f))
    تابع هدف بالایی است.اون شر را می فرمایید چیکار کنم؟
    خیلی خیلی ممنون و متشکر

    • سلام
      ابتدا بفرمایین که این ضرب کردن سودها معنی خاصی میده؟ درسته که اینا خوبه که بالا باشن، ولی این ضربشون چه مفهومی پشتش هست؟

  19. سلام
    هدفم استفاده از یک تابع معروف به نام تابع ضربی نش است که میخوام حاصلضرب سود ۵ مزرعه باهم ماکزیمم شود.یه سوال واسم پیش اوم دوباره از شما بپرسم به علاوه سوال قبلم.
    در گمز برای اینکه سود این ۵ مزرعه که هرکدام یک تابع غیر خطی هستند را در تابع هدف ضرب کنم باد از دستور prod استفاده کنم؟
    میشه لطفا فرم صحیح نوشتن prod را بفرمایید.همش به مشکل می خورم.دسترسی ندارم به چیزی فقط از شما میتوونم کمک بگیرم.
    این فرمت درسته آیا؟
    z= prod(f,benefit(f))
    که تابع benefit(f)=E= sum(c,prc(f,c)*y(f,c)*Area(f,c))-sum(c,crop(f,c)*Area(f,c))-sum(c,cw(f,c)*nw(f,c)*Area(f,c))-prc*volume(f);
    می باشد.
    نباید در z =e=prod((f,c),benefit(f)) بنویسم؟
    واقعا ممنون

  20. سلام. من مدلی در گمز نوشتم . این عبارت مربوط به تابع هدفشه که قسمت اول اون رو صفر برمیگردونه… در حالیکه n مجموعه سال هاست و مقدار گرفته
    ممکنه راهنمایین کنین… واقعاً کلافه شدم … خیلی راه ها رو امتحان کردم.. نمیدونم مشکل از کجاست. CF هم یک متغیرثابته…

    Cobj=e=sum(n,(CF**ord(n))*sum(s,F(s,n)*C0(s,n)))

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

  21. با سلام و ضمن تشکر از سایت خوبتون.
    من مدلی در گمز پیاده کردم و Option reslim=3600; قرار دادم. خروجی زیر رو در بخش Solution Report گرفتم:
    MIP status(107): time limit exceeded
    Cplex Time: 3601.25sec (det. 335583.58 ticks)
    Fixing integer variables, and solving final LP…
    Fixed MIP status(1): optimal
    Cplex Time: 0.14sec (det. 22.24 ticks)
    Resource limit exceeded.
    این خروجی دقیقا بعد از ۳۶۰۰ ثانیه به دست اومده. الان یعنی به جواب بهینه رسیده؟ یا یکی از جوابهای موجه رو گزارش میکنه؟
    و اینکه من بر اساس مطالبی که در سایت خوندم برای تعیین زمان اجرای مدل عبارت display Untitled_1.resusd; رو اضافه کردم. با اینکه پس از یک ساعت نرم افزار خروجی رو به من داده ولی به ازای display Untitled_1.resusd; خروجی زیر رو گرفتم:
    —- ۳۷۹ MODEL Untitled_1.ResUsd = 3601.688

    EXECUTION TIME = 1.154 SECONDS 7 MB 24.8.3 r60202 WEX-WEI
    یعنی مدل من در حدود ۱٫۱۵ ثانیه حل شده؟!!
    این در حالیه که حتی در حالت قبل هم که پیش فرض Option reslim=1000; بود نمی تونست جواب رو به دست بیاره…
    ممنون میشم راهنمایی بفرمایید.

    • سلام
      تشکر.
      نه یه جواب موجه رو داره گزارش میکنه. gap رو ببینید. اونجایی که آخر تو پنجره ی process window نوشته absolute gap و relative gap. این میشه مقدار خطایی که با جواب بهینه ی احتمالی داره. نرم افزار خودش اینو حساب میکنه و گزارش میده.
      برا زمان حل هم خیر! همونطور که میبینید نوشته ۳۶۰۱٫۶۸۸ این زمان نهایی حل هست. که یه ثانیه ش تقریبا برا خوندن داده ها و سایر مواردی که گمز رو اماده میکنه تا شروع به حل مدل و توقف کردن مدل هست. اون تایم آخر هم که یه ثانیه ست باید نگاه کنین کجا اینو گفته. احتمالا برای display کردن داده ها و نشون دادن solvar اینا باشه. و قطعا ربطی به زمان حل مدل نداره.

      • ممنونم از راهنماییتون.
        الان خروجی که به من داده این هست:
        MIP Solution: 725.645867 (600530 iterations, 529 nodes)
        Final Solve: 725.645867 (11 iterations)

        Best possible: -924.198551
        Absolute gap: 1649.844418
        Relative gap: 1.000000
        این جواب Best possible مربوط به چی هست؟ راجع به این گپ ها توضیح میدین؟ اون Absolute gap یعنی جواب به دست اومده انقدر با جواب بهینه فاصله داره؟!

        • سلام
          برای گپ:
          گمز یا solver های مرتبط، در حل مسائل MIP دو تعریف عمده دارن. best integer و best estimate . اولی یعنی جواب بهینه مسئله و تو همه محدودیت ها صدق میکنه.
          دومی به این معنیه که بهترین جوابی که میتونه بدون در نظر گرفتن محدودیت integer بودن متغیرها به دست میاد هست.
          تفاوت این دو تعریف میشه absolute gap و اگه به شکل درصدی هم بیانش کنیم میشه relative gap
          جهت مشاهده فرمول دقیق و محاسبات اینجا کلیک کنید.

          برای اینکه الان گپ رو یک داده، این یعنی اینکه مدل فقط تونسته یه جواب شدنی برا مدل تولید کنه و تو این زمانی که دادین نتونسته مسئله اولیه رو به دوگان نزدیک کنه. پس شما باید سعی کنین که جواب رو بهترش کنین.
          زمان رو ببرین بالا
          مدلسازی رو بهترش کنین.
          از شرط ها استفاده کنین که مقداری محدودیت ها کمتر بشه و …
          برای تابع هدفتون هم (در صورتی که باید بزرگتر مساوی صفر باشه) حداقل مقدار صفر قرار بدین. z.lo=0

    • سلام
      چند تا دلیل داره:
      ۱- ممکنه واقعا جواب بهینه ش همین باشه.
      ۲- ممکنه نشدنی باشه با این شرایط و باید چک کنین که توی پنجره ی process window چیزی در مورد نشدنی بودن مدل گفته یانه. این نشدنی بودن ممکنه به چهار دلیل باشه. داده نا مناسب. ضعف سالور. اشتباه بودن مدل سازی. اشتباه بودن کد نویسی.
      ۳- ممکنه لایسنس نداشته باشین. برا لایسنس برید تو بخش دانلود نرم افزار گمز همین سایت. راهنمایی کردیم اونجا.
      همه موارد رو باید چک کنید.

پاسخ دهید

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