۱۴۰

سفارشی سازی خروجی

سفارشی سازی خروجی چند روش و با اهداف بعضاً مختلف دارد. در این تاپیک به معرفی دستور Display می پردازیم. هدف از حل یک مدل، مشاهده‌ی خروجی آن است.

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

Display Item1, Item2, Item3;

در قالب بالا، Display دستور نمایشگر، Items نیز می تواند شامل: اندیس، پارامتر، جدول، متغیر و محدودیت باشد.
Display برای اندیس ها، پارامترها، اکرونیم ها و اسکالرها فرمت یکسان و ساده ای دارد. مثال های زیر گویای این واقعیت اند.:

Display-Data

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

display-output-data

Display برای متغیرها مقداری با اندیس ها و پارامترها متفاوت است. به وسیله ی Display می توان ویژگی ها مختلفی از جمله مقدار بحرانی که متغیر در طول حل مسئله به خود می گیرید، کمترین مقدار و بیشترین مقدار و… را نشان داد. قالب کلی دستور Display برای متغیرها به شکل زیر خواهد بود.
Display VariableName.{variable attribute} ;
در قسمت Variablename نام متغیر را بدون هیچ پسوند، اندیس و وابستگی وارد می کنیم. پس از آن -طبق آنچه که در بخش تخصیص ویژگی به متغیرها گفته شد- نوعی ویژگی ای را که می خواهیم نشان دهد مشخص می کنیم.
قالب کلی دستور Display برای محدودیت ها نیز به همین شیوه می باشد. یعنی ابتدا نام محدودیت و سپس ویژگی مربوطه را ذکر می کنیم. این ویژگی ها در بخش ویژگی محدودیت ها آورده شده اند. در اینجا نیز باید به این نکته دقت نمود که از آوردن اندیس ها و پسوندهای اضافی باید خودداری کرد در غیر اینصورت برنامه با Error مواجه خواهد شد.
فرض کنید ما سه متغیر x,y,z و دو محدودیت cont1 و cont2 را داریم. در دستور زیر، از GAMS خواسته شده که تعدادی از ویژگی های به کار رفته در آنها را پس از حل مدل یکجا و مرتب نمایش دهد.

display-variables

در ادامه، مثال کاربردی ۱ به صورت زیر در خواهد آمد:

display-example1-code

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

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

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

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

 

140 دیدگاه در “سفارشی سازی خروجی

    • سلام
      یک تکنولوژی هست که به نام GDX شناخته می شه. شما با استفاده از این روش می تونین خواستتون رو اجرایی کنین. تقریباً مشابه کدی هست که واسه فراخوانی از اکسل استفاده می شه.
      می تونین فعلا به این لینک مراجعه کنین تا تاپیک مربوطه رو بذاریم.
      http://www.gams.com/docs/excel/
      موفق باشید

    • سلام
      اگر تابع هدفی به نام z داشته باشید که حاصل جمع دو بخش A و B باشد، ابتدا دو متغیر به نام مثلا z1 و z2 تعریف کنید. سپس یک محدودیت به مدل اضافه کنید که مثلا z1=e=A و z2=e=B باشد. و نهایتاً مقادیر A و B را با دستور display مشاهده کنید.
      موفق باشید

  1. سلام
    من دانشجوی مکانیک دانشگاه تهران هستم
    میخواستم knitro را به برنامه Eclipse که یک شبیه ساز برای مخازن نفتی است کوپل کنم چطور میتوانم؟
    در تزی در نروژ این کار شده بود…
    لطفا ایمیل بزنید
    با تشکر.

  2. سلام
    من یه table دارم به اسم k که ۲۰۰*۵ هستش،یعنی ۲۰۰ ستون و ۵ تا سطر داره،میخوام مسئله بهینه سازیم رو هر بار به ازای یه ستون از این جدول حل کنه و جوابش رو تو فایل excell بهم بده
    اگر راهنماییم کنید خیلی خیلی ممون میشم
    مرسی

  3. سلام
    با تشکر بابت مطالب مفیدتان یه سوال داشتم اگر بخام یه شرط بذارم که یه مجموعه ۳ تایی مثل (o,s,j) همزمان برابر با یه مجوعه دیگه مثل (op,sp,jp) نشه باید شرط رو چطور تعریف کنم؟ منظورم اینه همزمان هر سه عدد مجموعه اول برابر نشه با متغیر متناظرش در مجموعه دوم. یعنی مثلا (۲و۴و۱) اگر شد مجموعه اول (۲و۴و۵) قابل قبوله ولی (۲و۴و۱) غیر قابل قبول است.
    با تشکر

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

      c1(o,s,j,op,sp,jp)$(ord(o) <> ord(op) and ord(s) <> ord(sp) and ....)..

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

  4. سلام من می خواهم مقدار دوال متناظر یک قید رو در یک فایل خروجی داشتعپه باشم. چطور این کار امکان پذیره؟ البته با دستور زیر مقادیر نمایش داده می شه ولی در هنگام قرار دادن در فایل خروجی اشکال می گیره . مثلا مقدار دوال رو با دستور زیر نشان می ده ولی چگونه این مقدار جواب رو در یک فایل متنی ذخیره کنم. ممنون
    Display Const2.m;
    جواب:

    DMU23 0.028052, DMU24 3.071006

  5. با سلام میشه چگونگی اضافه کردن دستور gdx رو تو مثال زیر توضیح بدبن.ممنون

    $title CCR Model(Epsilon)
    $onsymxref
    $onsymlist
    $onuellist
    $onuelxref

    Sets
    i “Inputs” /input1*INPUT2 /
    r “Outputs” /output1/
    j “Units” /DMU1*DMU5/;

  6. با سلام و احترام
    یک سوال خیلی مهم و فوری دارم. یک پارامتر در قسمت display نوشتم که مقدار نهایی آن را نمایش دهد اما گمز آن را به صورت کامل نشان نمی دهد و به این صورت ۲٫۵۶۹۳۹۸E+8 جواب ظاهر می شود. آیا راهی وجود دارد که این پارامتر به صورت کامل مثلا به صورت ۲۵۶۹۳۹۸۵۳ نمایش داده شود.
    با سپاس فراوان

      • درستورشو از تو سایت خوبتون پیداش کردم. از دستور زیر استفاده میکنیم
        Option decimals=n;
        و اگه جای n عدد صفر بزاریم همه جوابا رو چه متغییر و چه توابع هدف رو به صورت عدد صحیح نشون میده.و اگه یک بزاریم همه رو تا یه رقم اعشار نشون میده و ….

  7. سلام خسته نباشید.مرسی که انقدر با صبر و حوصله جواب سوالامونو میدین.
    من برنامم و به نظرخودم!! کامل نوشتم اما ران که میکنم ارور۷۱و۲۵۶ میده.واقعا دیگه خسته شدم.این ارور ها برای چیه؟
    درضمن مساله م برنامه ریزی عددصحیحه و minسازی هست.حالا باید چکارش کنم…؟

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

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

  9. سلام.واقعا از اینکه وقت میذارین و جواب میدیم ممنون.اجرتون باخود خدا.
    یعنی مثالی که زدم نشدنیه دیگه؟اگر اعدادو…رو عوض کنم شاید جواب بده درسته؟
    آخه من اولین بارمه که گمز مینویسم…از ب بسم الله شروع کردم واقعن…شماخیلی کمکم کردین.
    متشکرم اگر بازم پاسخگو باشین

  10. با سلام
    پس از حل مدل
    خطایی حل کننده رخ می دهد

    MIP status(103): integer infeasible
    Cplex Time: 0.01sec (det. 1.29 ticks)
    Problem is integer infeasible.

    اگر راهنمایی کنید ممنون می شوم

    • سلام
      تو پیام سالور اون قسمتی که لازم بود رو جدا کردم.
      همون طور که مب بینین، مسئله شما برای متغیرهای گسسته و صحیحتون جواب شدنی نداره.
      شما باید مدل و یا داده های مسئله رئ تغییر بدین

  11. با عرض سلام و خسته نباشید.
    ببخشید یه سوالی داشتم در مورد خروجی گمز که در پنجره active process ظاهر می شود
    می خواستم ببینم برای اینکه بدونم قسمت های مختلف در واقع چه چیزی رو بیان می کنن چه فایلی رو پیشنهاد میکنین مطالعه کنم در مورد خروجی نرم افزار تو پنجره active process?
    , و یک سوال دیگه اینکه تعداد کل متغیرهای استفاده شده در مدل و تعداد محدودیت ها رو هم میده یا نه ؟
    با تشکر از وقتی که میزارین

  12. با سلام. من بعد ازحل مدل با این خطا مواجه می شم.
    MIP status(119): integer infeasible or unbounded
    Cplex Time: 0.06sec (det. 29.92 ticks)
    Problem is integer infeasible.
    برایچند تا مثال با داده های حختلف حل کردم ولی باز هم همین خطا رو میده.محدودیت ها هم درسته.مشکل چیه؟باید چه کار کنم؟

    • سلام
      مدلتون یا نشدنیه یا جواب بیکران داره. برای فهمیدن اینکه بیکرانه یا نه. شما یه حد بالا (یا پایین – یه عددی که خیلی بزرگ یا کوچیک نباشه) برای تابع هدف بذارین (تو محدودیت ها) که بی نهایت نشه. اگه مدل جواب داد که معلومه که مدل جواب بیکران داره و تکلیفش رو باید مشخص کنین. اگه باز نشدنی شد، معلومه یا مشکل از داده هاست، یا از مدل یا از کد. که باید با مثال با سایز کوچیک شروع کنین و یکی یکی محدودیت به مدل اضافه کنین تا مشکل رو حل کنین، تحلیل یادتون نره!

  13. سلام میشه لطفا اگر میدانید راهنمایی بفرمایید بعد از اینکه مدل را ساختیم اگر داده نداشته باشیم چگونه باید داده سازی کرد که گمز با مشکل روبرو نشه؟
    ممنون.

  14. سلام
    سوالی داشتم از خدمتتون
    چطور میشه در گمز از برنامه های زبان های برنامه نویسی دیگه مثل ++C استفاده کرد؟
    ممنون میشم اگه توضیح بدید

    • سلام بر اساس تجربه ای که ما داریم ارتباط برقرار کردن بین سی پلاس پلاس و گمز بهتون پیشنهاد نمی کنم . چون بعضی از حل کننده ها هستند که در سی پلاس پلاس قابل استفاده نیستند. برای مثال حل کننده ی BARON رو میشه توی متلب فراخوانی کرد اما در سی پلاس پلاس این امکان وجود نداره یا مثلا ANTIGONE.
      ولی در کل دستوری createprocess() هست.
      برای مثال

      CreateProcess(L"C:\\gams23.3\\gamside.exe",NULL,NULL,NULL,false,0,NULL,NULL,&si,&pi)

  15. سلام
    ممنونم از پاسختون
    برنامه ای دارم که در ++C و براساس فایل های ApI برای GAMS نوشته شده ( در واقع نوعی ابزار هست) ولی نمی تونم ازش استفاده کنم ممنون میشم اگر راهنمایی کنید.
    آیا این برنامه رو باید در خود ++C اجرا کنم یا در دایرکتوری apifiles در گمز بصورت cpp قرار داده و از ++C فراخوانی کنم.
    امکانش هست در مورد فایل های api توضیحی بدید؟

    ممنون از شما

  16. با سلام
    من هم سوال مطرح شده در این صفحه در تاریخ ۱۹ خرداد ۹۵ ساعت ۱۲:۵۹ دقیقه را داشتم.
    نوشته های درون process window شبیه جواب داده شده به سوال نیست.

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

    • سلام
      زمان حل مدل در گمز
      و مقدار گپ مدل در گمز
      رو با دستور زیر میتونین نشون بدین:

      display modelname.resusd;
      display ,odelname.optcr;

  18. سلام خسته نباشین.ببخشید من تو مدلم ۳ تا متغیر دارم
    (X(i,j و ( y(j و ( w(j
    طبق مطالبی که تو سایت شما خوندم تو قسمت display به اندیس کاری نداشتم و نوشتم display x.l,y.l,w.l اما توی فایلی که با پسوند lst ایجاد شده display ندارم و الان باید مقدار متغیرهامو کجا ببینم؟ ممنونم

  19. سلام خسته نباشین. از سایت بسیار عالیتون واقعا ممنونم. میشه لطف کنین معنی این جند خط رو تو ی برنامه گمز بهم بگین و اینکه به چه دردی میخوره و اگه نباشه چی میشه؟
    P.reslim=50000;
    P.Iterlim=5000000;
    P.optCR= 0;

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

  20. سلام خسته نباشید. من انتهای ی برنامه گمز چند خط کد دیدم که میخواستم اگه ممکنه راهنماییم کنین که چه خاصیتی دارن و تفاوتشون با display چی هستش و اصلا چرا از این کدها استفاده شده؟
    execute_unload “results.gdx” x.l , y.l , w.l
    execute ‘gdxxrw.exe results.gdx var=x.L rng=x!’
    execute ‘gdxxrw.exe results.gdx var=y.l rng=y!’
    execute ‘gdxxrw.exe results.gdx var=w.l rng=w!’

  21. سلام وقتتون بخیر
    من میخام سناریو تعریف کنم برای تقاضام
    فرض بر این که T=3 , در هر دوره من ۲ تا سناریو دارم
    تقاضا مشتری i در دوره t تحت سناریو s d (i,t,s)
    مثلا در دوره t1 ما دو تا سناریو s1,s2داریم چه جوری کد کنم

  22. سلام خسته نباشین. من ی مدل دو هدفه غیرقطعی دارم و کدشو نوشتم و جواب گرفتم اما با یه تکنیک رباست مدلو به قطعی تبدیل کردم و ۵تا error داره و هر کاری میکنم نمیتونم برطرف کنم؟میخواستم بدونم شما برا رفع این error ها چقد هزینه میگیرین و آیا انجام میدین یا ن

  23. اقا سلام بسیار لنگ هستم
    چطور میتونم مقدادیری ک مقدار صفر میگیره در گمز رو تو خروجی بجای فضای خالی ..همون مقدار صفر واردش بشه
    چون میخام بریزم تو مطلب. اونجا ی فضا خالی ایجاد میشه کل ماتریس بهم میخوره..
    ممنون میشم زود کمکم کنید
    مثلا pi خروجیاهاش بترتیب ۱ ۲ ۳ ۰ ۵ هستش…این صفرو نشون نمیده و گپ هستش….وقتی میفرستم مطبل ۵ جا صفرو میگیره… چکار کنم تو گمز همون صفر نشون بده.
    ممنون

      • مشکلم اینه یه ماتریس مثلا به اسم p که ۲*۲ هستش دارم. مثلا سطر دوم از ستون اولش مقدارش صفر شده تو گمز….حالا ک اینو میخام بفرستم تو مطلب بخونم….فقط ۳تا مقدار نشون میده….اون صفر کلا تو درایه های مطلب نشون نمیده. و میگه کلا ۳مقدار داره این مثلا p ….راهی هستش ک این مقدار صفرم بتونم برگردونم تو جواب؟

        درواقع من مثلا میخام یه ماتریس که ۱ سطر و ۲۴ ستون زمان داره رو برگردونم تو مطلب مقدارشو…. فرض کن ۲تا ستون مقدارش صفر شده… اینو اصلا تو مطلب نشون نمیده…خروجی مطلب ی ماترس یک در ۲۲ میده… میخام اون دوتا درایه ک صفر شدنم تو اون باشه ک کل جوابو بصورت یک سطر و ۲۴ ستون داشته باشم نشون نمیده….
        ببخشید بازم مزاحمت شدم

  24. مشکلم اینه یه ماتریس مثلا یک p که ۲*۲ هستش دارم. مثلا سطر دوم از ستون اولش مقدارش صفر شده تو گمز….حالا ک اینو میخام بفرستم تو مطلب بخونم….فقط ۳تا مقدار نشون میده….اون صفر کلا تو درایه های مطلب نشون نمیده. و میگه کلا ۳مقدار داره این مثلا p …………..راهی هستش ک این مقدار صفرم بتونم برگردونم تو جواب؟

    درواقع من مثلا میخام یه ماتریس که ۱ سطر و ۲۴ ستون زمان داره رو برگردونم تو مطلب مقدارشو…. فرض کن ۲تا ستون مقدارش صفر شده… اینو اصلا تو مطلب نشون نمیده…خروجی مطلب ی ماترس یک در ۲۲ میده… میخام اون دوتا درایه ک صفر شدنم تو اون باشه ک کل جوابو بصورت یک صطر و ۲۴ ستون داشته باشم نشون نمیده….
    ببخشید بازم مزاحمت شدم

  25. اقا میخام ی مقدار مثلا p که دو سطر و دو ستون(مثلا t1,t2) داره رو مقدارشو به مطلب انتقال بدم. فرض کن مقدار سطر اول ستون اول صفر شده… حالا وقتی از مطلب میخونم این مقدارو …میگه س مقدار داره این p و اون مقدار صفر شده رو نشون نمیده اصلا….
    میخام یکاری کنم که خود گمز اون مقدار صفر شده رو بجای اینکه گپ نشون بده تو خروجی خود گمز صفر یا اپسیلون بگیره بجاش ک مطلب بتوته اون مقدارو بخونه
    خلاصش چیکار کنیم ک تو خروجی گمز این مقدار ک صفر شده رو بجای گپ ،‌صفر بنویسه
    تو خروجی گمز فقط مینویسه مثلا
    p(1,1 )=x
    p(1,2)=y
    p(2,1)= gap….ya bedun megdar
    p(2,2)=z
    میخام این مقدار سومی رو صفر یا بصورت اپسیلون نشون بده

    • سلام
      خیلی متوجه نشدم. ولی قطعا این راهکار به دردتون میخوره. خب یه لوپ بنویسین، و بگین که هرجا به صفر رسیدی، به جاش مثلا بذار ۱۰۰۰٫ بعد تو متلب دوباره برشگردونین به همون حالت قبلیش. این واسه وقتیه که p پارامتره. اگه متغیره که باید یه پارامتر دیگه تعریف کنین، و مقادیر بهینه p رو بذارین توش، بعد سایر بلاها رو سرش بیارین

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

  27. سلام اقا ما دوباره اومدیم. ی سوال لطفامیتونیدبرنامه ۳،۴خطی این چیزی ک میگمو بنویسید/:
    میخام تو گمز بگم
    option rminlp = conopt ;
    solve new using RMINLP Minimizing z ;
    خب این حل شد و اینفیزیبل داد یعنی modelStat 2, solveStat 1. مخالف این دو مقدارو گرفت……… که از دستور زیر اینو میکشیم بیرون
    بعدش میام ازین دستور زیر استفاده میکنم…
    set stat /modelStat, solveStat/;
    parameter returnStat(stat);
    returnStat(‘modelStat’) = new.modelstat;
    returnStat(‘solveStat’) = new.solvestat;
    بعدش حالا چطوری شرط بزاریم که اگه modelStat 2, solveStat 1 برابر این دو مقدار نشد……….
    حالا برو از
    option rminlp = ipopt ; این استفاده کن
    اگه اینم لکالی فیزیبل نشد و ………………..
    ممنون میشم یکی اینو برام بنویسه……..گشتم و انجام دادن نتونستم راستش انجامش بدم

    • سلام
      خب این set که تعریف کردین اشتباهه. شما دو تا پارامتر تعریف کنین. بذارین تو یه دستور if اگه اوکی بود. که هیچی. اگه نبود متوقف بشه. اصن من جا شما باشم. خیلی ساده با جفتشون حل میکنم و نتیجه رو نگاه میکنم. همین

  28. سلام.
    ببخشید من یک تابع چند ضابطه ای دارم که تو قسمت معادلات تعریف کردم نرم افزار می گه از سالور DNLP باید استفاده کنم ولی من متغیر Integer هم دارم که تو این سالور تعریف نشده لطفا من را راهنمائی بفرمائید.
    باتشکر.

  29. باسلام و خسته نباشید به شما، ممنون از سایت خوبتون.
    بعد ازینکه مدل اجرا میشه، مینویسه modelstat=8، یعنی تابع هدف هم بهینه هست و هم شدنی؟

  30. سلام

    ممنون از سایت خوبتون.ببخشید من اگه بخام خروجی گمز تا ۵ رقم اعشار نمایش داده بشه چیکار کنم؟ چون دیفالتش ۴ رقمه.تشکر

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

    • مثلا میخوام تابع هدف مینیمم سازی x^2 رو با چند تا محدودیت حل کنم و جوابش رو بزارم در معادله X^3 تا مقدار این معادله رو در اون نقاط بده
      دستوری برای این کار هست؟؟
      خیلی گیرم و پایان نامم فقط منتظر این دستوره

      • سلام
        شما باید از variable attributes استفاده کنین.
        ببینید وقتی گمز به دستور solve میرسه، مدل رو حل میکنه. فرض کنیم یه متغیر دارین به اسم x، حالا که این متغیر حل شده و جوابش مشخص شده، میتونیم مقدار بهینه x رو ببینیم. با دستور x.L که L یعنی level و مقدار بهینه x رو نشون میده. تابعد هدف هم همینطوره z.L یا هر متغیر دیگه ای.
        حالا فرض کنیم میخوایم بعد از اینکه مدل حل شد، مقدار بهینه تابع هدف بره تو یه مدل دیگه و اون مدل حل بشه.
        اول zz رو به عنوان یه پارامتر جدید تعریف کنین.
        بعد از دستور solve مینویسیم. zz=z.l
        بعد تو مدل دوم به جای z عبارت zz رو استفاده میکنیم و تو مدل دوم به عنوان یه پارامتر با zz برخورد میشه.
        مشکلتون رفع شد؟

        • سلام آقای محمودی
          ممنون که حال ما دانشجو ها رو درک می کنید و جواب می دید
          فقط شرمنده من دقیق متوجه نشدم چطور باید کد نویسی بکنم
          راستش از دیروز که جواب دادید هر جور که حدس زدم چطور باید بنویسم انجام دادم ولی ارور داد و متنتون رو به استاد راهنمام هم فرستادم و ایشون هم نتونست بفهمه
          پرروییه ولی امکان داره یه مثال ساده را برام کد نویسی کنید تا روشش رو متوجه بشم
          مثلا مینیمم کردن ایکس به توان ۲ رو با یکی دو تا محدودیت حل کنه و بعد از حل بیهنه، نقاط حاصله را بزاره تو معادله x به توان ۳ و جوابش رو تو این معادله بدست بیاره

        • خواهش میکنم و نفرمایین خواهشن.
          یعنی بره تو معادله دومی و فقط محاسبه کنه همین؟ دیگه محدودیتی روش اعمال نشه؟ (یعنی یه مدل دیگه حل نشه و فقط جواب x که اولین بار به دست اومد رو بذاره تو x3؟)

  32. “یعنی بره تو معادله دومی و فقط محاسبه کنه همین؟ دیگه محدودیتی روش اعمال نشه؟ (یعنی یه مدل دیگه حل نشه و فقط جواب x که اولین بار به دست اومد رو بذاره تو x3؟)”
    بله دقیقا

  33. ببخشید، جابجایی محدودیت ها(ترتیب وارد کردن محدودیت ها) در محیط کدنویسی گمز، روی جوابهاsolutions تاثیری داره؟

  34. سلام. ممنون بابت مطالب مفیدتون. یه سوال داشتم. من داده هام از اکسل فراخوانی میشه و اونجا اعداد تا ده رقم اعشار هستند ولی وقتی تو گمز وارد میشه فقط تا سه رقم اعشارش استفاده میشه و همین موضوع باعث میشه مدلم نشدنی بشه. اگه راهنمایی کنید که چه جوری تو گمزم تا ده رقم اعشار استفاده بشه ممنون میشم

    • سلام
      میتونید داده ها رو scale کنین. مثلا تمامی اعدادی که تو مدلتون هست رو ضرب در هزار بکنین. یعنی عددی مثل ۰٫۰۰۱ رو وقتی ضرب در هزار بکنین، میشه ۱ پس تعداد دسیمال هاش هم کم میشه. ایده بهتری به ذهنم نمیرسه. فقط یه جوری این کارار رو انجام بدین که ماهیت مدل عوض نشه.

  35. ضمن عرض سلام و آرزوی توفیق روز افزاون خدمت شماعزیزان
    ممکنه در خروجی گمز اون جداولی که در تحقیق در عملیات۱ به صورت دستی حل میشد رو ملاحظه کرد؟؟
    متاسفانه برای تحلیل بیشتر نیاز به اون جداول دارم!
    ممنونم میشم اگر پاسخ رو به ایمیلم ارسال کنید .
    از لطف شما صمیمانه سپاسگذارم.

  36. سلام
    ممنون بابت مطالب خوبتون. یه سوال داشتم.
    اگر بخوام از کدم مثلا هزار بار ران بگیرم طوری که خروجی دوتا از متغیرها رو به صورت برداری داشته باشم (که بتونم میانگین و انحراف معیارشونو حساب کنم) و تعداد infeasibilityهارو هم بهم بده، باید از چه دستوری استفاده کنم؟

      • سلام
        بله داده تغییر میکنه.
        مسئله بهینه سازی رباست هست.
        هر بار گاما رو تغییر میدم در فایل اکسل و میخوام پارامترهای غیرقطعیم مثل تقاضا به صورت رندم مثلا ۵ درصد تغییر کنن.

        • شما یه لوپ تعریف کنین که هزار بار حل بشه پارامترها با تغییر تکرارهای لوپ پارامترها مقدار دهی بشن. برای نشدنی بودن هم model status رو بریزین تو یه پارامتر.

          loop(iter,
          a=something, you can call it from excel
          solve mymodel .......;
          infeasS=mymodel.modelstat;
          );
          display infeasS;

          این ایده براتون کافیه.

  37. با سلام وتشکر از سایت خوبتون.
    یک مساله بهینه سازی نامقید رو با گمز حل میکنم با اینکه از عبارت display استفاده کردم اما خروجی طاهر نمیشه
    و در خروجی عبارت
    status: Terminated due to a licensing error
    ظاهر میشود.
    آیا در نصب نرم افزار لایسنس وارد نشده؟؟
    البته دوباره نصب کردم اما به نتیجه ای نرسیدم.
    اگر راهنمایی بفرمایید ممنون میشم

  38. سلام جناب محمودی
    در خصوص خروجی گرفتن به صورت چارت با فرمت GCH در گمز، چطور میشه این فرمت را ایجاد کرد؟
    من مسئله ای دارم که مختصات را گرفته و پس از حل یک سری مختصات جدید ایجاد میکنه. چطور میشه این مختصات را در قالب یک نمودار در گمز نمایش داد؟

    با تشکر

    • سلام
      پیشنهاد میکنم از اکسل یا متلب استفاده کنین. گمز نمودارش خیلی محدوده و مناسب نیست. شما با گمز و متلب میتونین هر جوری که دلتون میخواد نمودار بکشین.
      ولی اگه اصرار دارین رو اینکار، اول یه فایل GDX تولید کنین که تو دو ستون مختصات نقاط رو گذاشته باشین. یعنی ستون اول بشه مشخصه x و ستون دوم بشه مشخصه y.
      حالا که فایل gdx تولید شد، تو محیط گمز بازش کنین، و روش کلیک راست کنین، chart رو بزنین، و مسیر Two Dimensions/2D charts/scater رو طی کنین، خروجی اون چیزی هست که شما میخواین. براش کد ننویسین. فقط به همین شکل رسم کنین.

پاسخ دهید

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