۱۴۳

انتخاب نوع solver

مدل هایی که در GAMS نوشته می شوند به طور مستقیم با استفاده از برنامه های دیگر نظیر Cplex, Baron, Lingo و… حل می شوند. هر مدلی که می نویسید باید و باید solver مربوطه را نیز مشخص کنید. این عمل به دو صورت امکان پذیر است.

روش اول: در روش اول، با استفاده از دیالوگ مربوطه در مسیر File/Options/Solver برای انواع مدل ها، solver مخصوص را مشخص می کنیم. البته نرم افزار GAMS برای هر نوع مدل، حل کننده ای را تعیین کرده است و شما می توانید از دیفالت نرم افزار استفاده کنید.
روش دوم: با استفاده از یک دستور ساده نیز، می توان برای مدل خود یک solver تعیین کرد. این دستور در خود برنامه و به دلخواه و توسط کاربر وارد می شود. این دستور را می توان در قالب کلی زیر خلاصه کرد:

Option modeltype = solver name ;

شکل زیر تعیین می کند که مدل های Lp، NLP، QCP و MIP به ترتیب با استفاده از solverهای LINGO، CONOPT، BARON و CPLEX حل شوند:

option-solverType

به عنوان مثال، در شکل بالا به GAMS دستور داده شده است که اگر مدلی دیدی که از نوع mip بود، آن را با حل کننده ی cplex حل کن!

توجه!: دقت کنید solverی که برای حل مدلتان انتخاب می کنید، واقعاً توانایی حل مدل شما را داشته باشد. مثلا Lingo baron نرم افزار قدرت مندی برای حل مسائل غیر خطی است ولی سرعت پایینی در حل مسائل دارد. و برای هر نوع مدلی نباید مورد استفاده قرار گیرد. پس شناخت solver ها یک رکن اساسی در حل مدل ها به وسیله GAMS خواهد بود. در صورت نیاز به بخش حل کننده ها مراجعه کنید. خاتمه

بپردازیم به ادامه ی مثال کاربردی۱:
همانطور که می دانید مثال کاربردی۱ مدلی خطی می باشد و همچنین solverی مناسب برای حل مدل های خطی cplex خواهد بود.
بنابر آنچه که گفته شد، ادامه ی مثال کاربردی۱ : به صورت زیر خواهد بود:

example1-solver

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

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

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

 

143 دیدگاه در “انتخاب نوع solver

  1. سلام.
    در کدنویسی گمزی که انجام دادم تا پیش از اینکه دستور solve رو وارد کنم هیچ خطایی وجود نداره، اما با نوشتن دستور حل خطای ۵۳ و ۲۵۶ رو تشخیص میده، نمیتونم مشکلش رو پیدا کنم. اگه راهنماییم کنید ممنون میشم.
    مرسی از پاسخگویی سریع و کاملتون و خسته نباشید.

  2. با سلام
    راستش من تو گمز مدل خطی که میزنم حل میشه و مشکلی نداره اما وقتی مدلم غیر خطی میشه هر solverی که انتخاب میکنم ایراد میگیره.

    baron: no license found/ to update your license, please contact your distributor
    SCIP: use of scip is limited to academic users/ please contact koch@zib.de to arrange for a license
    bonmin: no soulution found. best possible=5.6e+006/ only reliable for convex models

    الان نمیدونم مدلم ایراد داره یا license. البته همونطور که گفتم برای mip با cplex جواب میده و مشکلی نداره. اگه لطف کنید راهنمایی کنید ممنون میشم
    با تشکر

  3. سلام و خسته نباشید
    من یک مدل غیرخطی عددصحیح مختلط دارم که در گمز کدنویسی کردم اما نمیدونم با چه SOLVER باید حلش کنم، میشه طفا راهنماییم کنید؟
    کلا برای انتخاب solver برای مسائل minlp باید کدام را انتخاب کرد؟
    آیا داشتن لایسنس در جواب تاثیری داره؟

    • سلام
      ممنون
      از سالورهایی نظیر dicopt و baron استفاده کنید. اگر جواب دقیق نداد از شروط توقف زمان و گپ استفاده کنید

  4. با سلام
    ببخشید آقای محمودی ،مسیله ای که در مورد متغییرهای باینری بود تنظیمات را اجرا کردم ولی بازم dicopt میباشد و لایسنس مربوطه را پیدا نمیکنه .
    البته ورژن گمز من ۲۴٫۱٫۲ میباشد و سالور baron رو نداره .

    • سلام
      از solver های دیگه گمز که مناسب مدلتون هست استفاده کنین، این سالورها رو تو منوی options میتونین ببینین
      خواهش میکنم

  5. سلام
    وقتتون به خیر
    عذر میخوام مزاحمتون میشم
    بنده یک مدل MINLP دارم، با سالور Baron و با هر لایسنسی که امتحان میکنم باز هم خطای زیر رو میده، میشه راهنمایی کنید که چ طور میتونم این مشکل رو حل کنم؟
    Terminated due to a licensing error
    خیلی ممنون

  6. با سلام
    خیلی ممنون از سایت مفیدتون
    عذر میخوام مزاحمتون میشم یه سوال داشتم
    من یه مدل MINLP دارم و با سالور BONMIN و سالورای دیگه که حل کردم در قسمت خروجی همه متغیرها و تابع هدفایی که دارم رو صفر میده . این خطاها رو هم بهم داده. میشه راهنمایی کنید که مشکل از کجاست. خیلی ممنونم

    **** SOLVER STATUS 13 System Failure
    **** MODEL STATUS 13 Error No Solution
    **** OBJECTIVE VALUE NA

    RESOURCE USAGE, LIMIT NA 1000.000
    ITERATION COUNT, LIMIT NA 2000000000
    EVALUATION ERRORS NA 0
    *** Failure calling solver: BONMIN (rc=1)

    No solution returned

    =C*** Failure calling solver: BONMIN (rc=1)

  7. با سلام
    خیلی ممنون از سایت مفیدتون
    عذرمیخوام مزاحم وقتتون شدم یه سوال داشتم
    من یه مدل MINLP دارم و با سالور BONMIN و سالورای دیگه که حل کردم. در قسمت خروجی به همه متغیرها و تابع هدفم جواب صفر میده. این خطاها رو هم داده.
    امکانش هست راهنمایی کنید که مشکل از کجاست؟
    با تشکر

    **** SOLVER STATUS 13 System Failure
    **** MODEL STATUS 13 Error No Solution
    **** OBJECTIVE VALUE NA

    RESOURCE USAGE, LIMIT NA 1000.000
    ITERATION COUNT, LIMIT NA 2000000000
    EVALUATION ERRORS NA 0
    *** Failure calling solver: BONMIN (rc=1)

    No solution returned

    =C*** Failure calling solver: BONMIN (rc=1)

      • خیلی ممنون از راهنماییتون
        متاسفانه هیچ کدوم از لایسنسایی که نصب میکنم این دو تا سالور رو نداره و جلوشون زده Demo. تاریخ کامپیوتر هم ۲۰۰۴ زدم ولی باز هم با هر دوش جواب همینه.
        **** SOLVER STATUS 7 Licensing Problems
        **** MODEL STATUS 11 Licensing Problem
        **** OBJECTIVE VALUE 0.0000

        RESOURCE USAGE, LIMIT 0.000 1000.000
        ITERATION COUNT, LIMIT 0 2000000000
        EVALUATION ERRORS 0 0

        *** No license found
        *** To update your license, please contact your distributor.
        *** Too many equations for global demo mode
        *** Number of equations : 2284
        *** Maximum allowed : 10
        *** Too many variables for global demo mode
        *** Number of variables : 1671
        *** Maximum allowed : 10

        No solution returned

  8. خیلی ممنون از راهنماییتون
    متاسفانه هیچ کدوم از لایسنسایی که نصب میکنم این دو تا سالور رو نداره و جلوشون زده Demo. تاریخ کامپیوتر هم ۲۰۰۴ زدم ولی باز هم جواب همینه.
    **** SOLVER STATUS 7 Licensing Problems
    **** MODEL STATUS 11 Licensing Problem
    **** OBJECTIVE VALUE 0.0000

    RESOURCE USAGE, LIMIT 0.000 1000.000
    ITERATION COUNT, LIMIT 0 2000000000
    EVALUATION ERRORS 0 0

    *** No license found
    *** To update your license, please contact your distributor.
    *** Too many equations for global demo mode
    *** Number of equations : 2284
    *** Maximum allowed : 10
    *** Too many variables for global demo mode
    *** Number of variables : 1671
    *** Maximum allowed : 10

    No solution returned

    • سلام
      لایسنس مناسب برا نسخه خودتون دانلود کنید، نرم افزار رو uninstall کنین و باز نصب کنین و لایسنس رو بزنین.

  9. علت اینکه یک لایسنس واحد در یک کامپیوتر solver baron را demo نمایش میدهد و در یک کامپیوتر دیگر full چیست؟ تاریخ را عقب میکشم اما باز هم درست نمی شود

  10. سلام
    میخواستم بدونم برای مدل های VRP (مسیریابی) کدام solver سریعتر بهم جواب میده؟ “مدل MIP هستش و یه مقدار زمان حل طولانی”

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

        • خواهش میکنم.
          این ها که فرمودین دو تا دستور هستن که هر کدوم معنی خواصی دارن.
          option توقف زمانی برای مسائلی استفاده میشه که زمان حلشون بالاست. مثلا شما یه مدل دارین و دارین حلش میکنین. این مدل زمان بالایی میخواد واسه حلش. مثلا ۱۰۰۰۰ هزار ثانیه وقت میبره تا کامل حل بشه و خود گمز متوقف بشه. حالا شما می تونین با این option به گمز بفهمونین که “آقای گمز درسته واسه حل مدلم ۱۰۰۰۰ ثانیه وقت میخوای، ولی سر هزار ثانیه متوقف شو و بهترین جوابی که بهش رسیدی بهم نشون بده” . یه کاربرد دیگه این دستور اینه که شما نتیجه ای که گمز به دست آورده رو با نتیجه ای که الگوریتمای دیگه مث ژنتیک مقایسه کنین و تو یه جدول گذارش بدین.
          option توقف گپ هم به گمز دستور میده که ” درسته واسه رسیدن به گپ صفر (گپ صفر یعنی جواب کامل) وقت بیشتری میخوای، ولی وقتی به گپ فلان رسیدی متوقف ش” یا مثلا بهش بگی که تا وقتی گپ صفر نشده متوقف نشو.
          دیگه اینجوریا

  11. سلام خسته نباشید،ببخشید من وقتی کدم را ران میکنم ارور ۶۶ را می دهد با این مضموم که سیمبل نشان داده شده تعریف نشده،در صورتی که متغیر مورد نظر جمع توابع هدف است که باید مینیمم شود و قبلا تحت عنوان متغیر تصمیم تعریف شده،لطفا مرا راهنمایی بفرمایید با تشکر

    آخرین قسمت کد

    model main /all/ ;
    option MIP=Cplex ;
    solve main using mip Minimizing zt ;

    • سلام
      ارور رو دستور solve هست؟
      شما مطمئن بشین که همه پارامترهایی (به طور کلی داده های ورودی) که تعریف کردین مقدار دهی شدن. نتیجه رو بگین در هر صورت.

      موفق باشین

  12. سلام. تشکر ویژه از سایتتون و ممنون از این دقت و حوصله ای که بکار میگیرین تا سوالای مارو جواب بدین. من یه سوال دارم که به تجربه شما مربوط میشه:
    آیا اگه مدلی رو
    الف) به صورت غیرخطی و با سالورهای غیرخطی با گمز حل کنیم
    ب) مدل را اول خطی کنیم و با سالورهای خطی حل کنیم،
    جواب در این دو حالت متفاوت خواهد بود؟؟
    مسأله من مسیریابی-مکانیابی هست.
    خیلی خیلی ممنونم

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

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

  13. منظورم اینه که در حالتی که بصورت غیرخطی حل کردم، گمز بعد از ۱۶ دقیقه جواب پیدا شده رو اعلام میکنه (یعنی از گمز نخواستم که بیشتر بگرده). یعنی در این حالت (حل غیرخطی) جواب دقیق نیست. حالا اگه بخوام خطیش کنم و دوباره حل کنم (البته اگه گمز بتونه، چون کلی محدودیت اضافه میشه) ممکنه جوابی که گمز پیدا میکنه بهتر باشه.

  14. با سلام

    من برای انجام برنامه ریزی تصادفی نیاز به حل کننده lindo دارم ولی تو هیچ کدوم از لایسنس هایی که دانلود کردم full نداره چطور می تونم این solver رو هم نصب کنم.
    ممنون میشم این رو هم بگید که برای برنامه ریزی تصادفی غیر خطی چه سالورهای دیگه ای وجود داره؟

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

  15. با سلام و خسته نباشید خدمت شما، می خواستم بدانم وقتی یک پرانتز به توان میرسد چگونه کد آن را باید نوشت؟ و وقتی علامت سیگما بروی مثلا s زیر مجموعه q است چگونه در گمز کد نویسی می شود.با تشکر

  16. سلام. خسته نباشید. من یه مدل مکان یابی مسیریابی غیرخطی دارم که مدل به صورت MINLP هست. جوابی که گمز بهم میده جواب بهینه است؟ از کجا مطمئن شم جواب بهینه محلی نمیده و حتما جواب بهینه global بهم میده؟

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

      option optcr=0;

        • یه سوال دیگه هم داشتم. گمز مدل ۲ هدفه که توابع هدف رو جدا از هم بنویسیم حل میکنه یا باید از روش وزن دهی و اپسیلون حتما استفاده بشه؟

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

        • شما باید زمان بالایی رو در نظر بگیرین. که کمبود وقت نیاره گمز. به جواب میرسه. از طرفی هم solver status هم چک کنین.

      • سلام
        حل کننده ی بارون در اصل برای مثائل غیر محدب طراحی شده ولی همه چیو حل میکنه. خیلی گله
        من هر جا که گیر کنم به بارون میگم کمک کنه. معمولا هم کمک میکنه

  17. سلام.تو مدلی که من نوشتم خطای اندیس میده میخواستم ببینم اندیسهام اشتباه وارد شدن؟
    (sum(i,v1k(i)*xk(i))+sum(f,w1k(f)*z1k(f)))-sum(r,u(r)*(yk(r)+dyk(r))+sum(f,w(f)*(z5k(f)+dz5k(f))))=g=0;
    اینجا متغیرهایی که درکنارK نوشته شده اند، جزو پارامترهای مساله هستند و برای هرکدامشون یه حلقه تعریف شده است.

    • سلام
      توی تعریف مجموعه و پارامترها دقت کنین. و ببینید هر پرانتز درست بسته شده یا نه.

      sum(i,v1k(i)*xk(i))
      +sum(f,w1k(f)*z1k(f))
      -sum(r,u(r)*(yk(r)+dyk(r)))
      +sum(f,w(f)*(z5k(f)+dz5k(f)))
      =g=0;

      اگه ارور داد میل کنید تا رفع کنم.

  18. با سلام
    بعد از ران کردن در قسمت solver status پیام شماره ۶ میاد با این عنوان
    Capability problems
    برای رفع این حالت چکاری باید انجام داد؟
    مدل minlp هست و سالور را بارون گذاشتم
    اگر لطف کنید راهنمایی کنید ممنون میشم
    با تشکر

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

      • با سلام.
        در مدل تابع لگاریتم یا توابع دیگه نیست
        تمام سالورهایی که minlp رو پوشش میدادن امتحان کردم یسریاشون پیغام Resource interrupt میدادن که با وجود اینکه زمان حل رو زیاد گذاشته بودم باز نهایت همون پیغام رو نشون میداد یسری ها هم پیغام Error system failure میدادند.
        ممنون میشم راهنماییم کنید
        با تشکر

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

  19. سلام خسته نباشید:
    من توی پیغام ها دیدم بچه هایی که مدلشونMINLP هستش و گمز جوابها غیر منطقی داده(اینتیجر نداده) بهشون فرمودید که “اگه جواب شدنی داشته باشه مدل شما و دستور زیر رو وارد کنین قبل از دستور solve و سالور مناسبی مث baron رو انتخاب کنین. بله بهینه هست. شرط توقف زمانی هم یادتون نره

    option optcr=0”
    اما چرا ؟
    این دستور مربوط به relative gap هستش.با تغییر این اپشن ما نمی تونیم مطمین بشیم که جواب بهینه محلی نیس.من با تغییر این اپشن متوجه شدم مدلها بسیار به این پارامتر و absolute gap حساس هستند.
    ممنون میشم نظرتون رو راجع به کاربرد absolute gap وrelative gap بدونم
    سپاس

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

  20. سلام و خسته نباشید
    ببخشید می خواستم بدونم آپشن epint رو چجوری میشه تغییر داد؟من تغییراتش رو در قسمت utilities>>option editor اعمال کردم سیوشم کردم و تو خود کد دستور option EpInt=0.01;رو میذارم ولی ارور ۲۵۰ رو میده میشه بفرمایید مشکل کجاست؟
    ممنون از لطفتون

  21. سلام آقای محمودی. ببخشید مزاحم شدم. من یک مساله minlp دارم و اون رو با LGO حل می‌کنم. چون تنها با این سالور جواب feasible می‌گیرم.
    منتها مشکل اینجاست که MaxInf و SumInf یک اعداد کوچک مثلا ۱ هستند. ولی به قیود که نگاه میکم میبینم در هرکدام Infeasibility حداقل برابر ۱٫۵ است.
    ثانیا در تکرارهای قبل مقادیر MaxInf و SumInf خیلی کوچک و در حد e-5 هستند ولی جواب در آنها متوقف نمی‌شود و در مقادیر بالاتر متوقف می‌شود.
    ممنون اگه جواب رو زود بفرستید.

    • سلام
      سالور baron و یا lindo رو امتحان کنین. تو سایت هست، نسخه های مختلف رو گذاشتیم. شما برای استفاده از lindo باید نسخه ی ۲۴٫۷٫۳ رو دانلود کنین. ولی بارون معمولا با نسخه ی ۲۳ خوب جواب میده. از sbb هم غافل نشید.

  22. با سلام
    جناب محمودی ،بنده در گمز یک مسئله دارم که به صورت خطی می باشد و خروجی آن را با mip می گیرم چگونه میشود خروجی را بهصورت غیر خطی یامکمل خطی حل کرد
    Obj.. Num_PMU=e=sum(j,u(j));
    Observability(i).. f(i)=e=sum(j,a(i,j)*u(j)+a(i,j)*z(j)*y(i,j));
    Observability_Con(i).. f(i)=g=1;
    Zero_inj(j).. sum(i,a(i,j)*y(i,j))=g=z(j);
    Zero_inj1(j).. sum(i,a(i,j)*y(i,j))=l=z(j);
    *No_PMU_Zero(j).. z(j)*u(j)=e=0;
    *Loss_measurment(i).. f(i)+sum(j,a(i,j)*y(i,j))=g=2;
    *******************************************************
    model Placement /all/;
    solve Placement using mip minimizing Num_PMU;

    با تشکر

    • سلام
      زمانی که در مساله دو متغیر در هم ضرب یا تقسیم شوند مساله غیر خطی هست. یا اینگونه غیر خطی کنید یا اگر می خواین با سالور غیر خطی مدلتونو حل کنید به جای mip مدلتونو nlp کنید یا minlp . و قبل خط solver بنویسید : option minlp=baron; به جای بارون می تونید هر سالوری که دوست دارید بنویسید.

    • سلام جمع چی ؟ نابرابری i و ii این جوریه

      set
      i/1*10/
      alias(i,ii);
      equation
      eq;
      eq(i,ii)$(ord(i) ne ord(ii))..

      اگر درست فهمیده باشم این دستور می تونه کمکتون کنه . اگر سوالتون در مورد چیز دیگری بود درباره بپرسین.

  23. با سلام
    سوال ۱)
    آیا در گمز میتوان چند خروجی متفاوت برای بهینه بودن گرفت؟
    سوال ۲)
    آیا در گمز این امکان وجود دارد چند خروجی گرفت ؟
    به عبارتی :
    من در خروجی گمز اعداد ۳-۵-۶-۴ را گرفتم آیا میشود ده عدد چهار رقمی بمن بده و من تشخیص بدم کدام را میخواهم استفاده کنم؟

    با تشکر

    • سلام
      جواب بهینه منحصر به فرد است. پس چند تا جواب بهینه برای یک مدل و یک داده نداریم.
      می تونید با یغییر داده ها جواب های بهینه بیشتری از مساله تون بگیرید.
      یعنی چه جوری ۱۰ تا عدد بهتون بده؟
      خود نرم افزار تشخیص میده کدوم جواب بهتر است.

      • با سلام
        آیا گمز در cplex از چند الگریتم استفاده میکند و هر کدام زود تَر به جواب رسید اون رو در نظر میگیره؟؟؟

        آیا میشود از کد برنامه چند خروجی احتمالی گرفت؟
        شما میتوانید این کار را انجام بدید؟ منتظر جوابتون هستم؟؟؟؟
        با تشکر

  24. سلام. از سایتتون که بارها کمکم کرده متشکرم. ممکنه این سوال من رو جواب بدید؟
    یک مساله خیلی بزرگ رو با سالور های مختلف مناسب ماهیت مساله (مثل baron, dicopt , lindo ) می خوام حل کنم ولی نمی تونن و بعد از چند ساعت یا پیام exit code 3 می اد یا می گه حافظه کافی وجود ندارد (enough memory … ). چه باید بکنم؟ امکان ساده سازی مدل هم وجود ندارد.

  25. سلام یه سوال داشتم ممنون میشم کمک کنید.
    بنده مدلم رو تو گمز کد کردم اما واسه بخش فازیش باید همین مدل رو با مقادیر متفاوتی از دو پارامتر ران بگیرم. به ازای ٢٠ مسئله ران گرفتم. متوسط زمان اجراش حدودا ۴۵ دقیقه شد.
    اما به طرز عجیبی برای ۴ تا از این مسائل گمز تو حدود ۴ یا ۵ دقیقه جواب میده اونم با اختلاف زیادی بزرگتر از جوابای دیگه(تابع هدف هزینه) و با گپ صفر که غلطه جوابش. سالورم هم سیپلکسه. بعد از اون یه محدودیت به مدل اضافه کردم که مثلا مقدار تابع هدف کوچکتر مساوی آخرین جوابی که با گپ صفر داده بشه که بعد از اجرا جواب بهتری از اون داد!! تصمیم گرفتم سالورو عوض کنم و از سالور gurobi استفاده کردم که وقتی با این سالور ران گرفتم همون جوابی رو داد که بعد از اضافه کردن اون محدودیت و ران گرفتن بهش رسیدم. حالا نمی دونم که این سالور تا چه اندازه جواب درستی میده. ممکنه راهنمایی کنید؟
    بعد از اون هم نسخه ی گمز رو عوض کردم و جوابی بهتر از جواب های قبل داد. اینکه جواب بهینه ی گلوبال از نسخه ای به نسخه ی دیگه تغییر کرده علتش چه چیزی میتونه باشه؟
    ممنونم

    • سلام
      اینکه نسخه ها ممکنه جواب متغاوتی داشته باشند بله ممکنه و این اشکال اصلی گمزه، معمولا بهتره با نسخه ۲۳٫۳٫۳ و ۲۴٫۵٫۶ و ۲۴٫۷٫۳ جوابا رو با هم مقایسه کنین.
      اینکه هدف مقدار بزرگی بگیره به خاطر اینه که جواب بی نهایت شده با توجه به این داده ها! اگه مدل غیرخطی صحیحه که از لیندو استفاده کنین، اگه خطی صحیحه از سیپلکس.
      اینم تو خاطرتون باشه که اگه جواب بی نهایت داشته باشین یعنی یا مدل غلطه یا داده ها. تو دنیای واقعی بی نهایت نداریم.

  26. باسلام
    مدلی MIP را با سالور CPLEX در نسخه ۲۴٫۷٫۳ گمز حل کردم. با فرض اینکه مسئله ماکزیمم سازی و مشروط بر یکسری محدودیت ها است، یک جواب نهایی مثلاً عدد ۱۰۰ گزارش شد که GAP آن هم صفر بود (در کد option optcr=0 لحاظ شده بود)، اما خروجی به نظر غیرمنطقی می رسید. لذا مدل را مجددا حل کردم و این بار محدودیتی اضافه کردم که میزان تابع هدف بیش از فرضا ۱۰۰٫۵ باشد. با توجه به اینکه مقدار بهینه در گام اول ۱۰۰ بود مسئله باید غیرموجه می شد چون قاعدتاً جواب بهتری با گپ صفر نمی توانست وجود داشته باشد. اما جالب بود که پس از حل جوابی بهتر از گام اول داد مثلاً ۱۰۶٫ این جواب معقول تر بود ولی باز هم به نظر بهینه نبود لذا مجددا مدل را حل کردم ولی این بار با این شرط که جواب از ۱۰۶٫۵ بیشتر باشد. بعد از حل مجدد جواب بهتری گزارش شد مثلاً ۱۰۸٫ مجدد مسئله را حل کردم مشروط بر اینکه میزان تابع هدف از ۱۰۸٫۱ بیشتر باشد که این بار جواب غیرموجه گزارش شد و این یعنی همان ۱۰۸ بهترین جواب ممکن بوده است. این نشان می دهد که حتی اگر گمز با سالور CPLEX گپ صفر هم گزارش دهد ممکن است جواب نهایی اصلاً بهینه نباشد و حتی فاصله ی زیادی با جواب بهینه داشته باشد. با سالور Gurobi هم همین مثال را حل کردم و جالب اینکه در این سالور هم همین تکرار برای برخی مسائل لازم بود. علت این اتفاق چیست؟

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

  27. سلام
    مدل بنده یک مدل MIP هست ولی میخوام توابع هدف رو با روش تئوری مطلوبیت جمع کنم و چون مینیمم سازی هست زمانی که استار ها رو بر توابع هدف تقسیم میکنم پیغام میده که در مدلهای خطی ممکن نیست و وقتی از سولورهای MINLP هم استفاده میکنم بدون اینکه ارور بده هیچ جوابی هم ارائه نمیده. ممنون میشم اگه راهنمایی کنید که بهتره چیکار کنم

  28. با سلام.
    من یک مدل غیر خطی وسیع با چند تابع هدف در گمز نوشتم که با سالور conopt حل میشه و با سالور های دیگه متاسفانه حل نمیشه. میخواستم بدونم پاسخ های بهینه در روشهای مختلف تفاوت زیادی داره؟
    ضمنا از کجا میتونم اطلاعاتی در مورد سالور conopt و نحوه عملکرد اون بدست بیارم؟

    • سلام
      اینکه با سالورای دیگه حل نمیشه رو بهتره دقیق تر بررسی کنین. اولا مطمئن شین که لایسنستون مناسب هست. تو سایت هست.
      لایسنس مناسب برای گمز
      بعدش اینکه بله ممکنه متفاوت باشه. وقتی مدلتون غیر خطی باشه، هر کدوم از سالورها از الگوریتم ها و رویه های مخصوص به خودشون میرن جواب رو پیدا کنن. ممکنه جواب همشون یکی نشه. بهتره بیشتر از ساختار تحدب و تعقر مدلتون شناخت داشته باشین. در مورد non-convex programming مطالعه کنین. نکته ی دیگه اینکه تا جایی که میتونین مدل رو خطی کنین.
      برای اطلاعات در مورد سالور سایت خود گمز مناسب هست.
      سایت گمز

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

  29. سلام. خسته نباشید. من یک مدل تصادفی دارم که به قطعی غیر خطی غیر محدب تبدیلش کردم. میخوام بدونم از کدوم حل کننده استفاده کنم و چه تعییراتی در آپشنش بدم؟ ممنون میشم کمکم کنید

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

        • از baron استفاده میکنم مدل شدنی میشه و جواب شدنی میده. ولی از ipopt استفاده میکنم جواب نمیده. lindo هم همش حالت دمو هست. چطور ازش استفاده کنم؟؟؟؟

        • برای استفاده از لیندو بخش دانلود و نصب نرم افزار رو بخونین حتما. لایسنس مناسبی براش گذاشتیم

        • سلام
          یه جواب آغازین تو همه ی سالورها ممکنه مفید باشه.
          مثلا شما حدس میزنین که جواب x حدود ۴۳ میشه. قبل از دستور solve شما میتونین بنویسین x.l=43 و این یه جواب آغازی برای سالور محسوب میشه.

  30. مدلم حالتی کل تا بع هدف به توان دو می رسد و غیر خطی minlp می شود با سالور baron حل می کنم جواب نمیده، لایسنس ها را از سایت شما دانلود کردم نصب کردم

  31. با سلام، ببخشید میخوام تو گمز پارامتر minimum uptime (مدت زمانی که یک واحد پس از روشن شدن، باید روشن بماند) و minimum downtime (مدت زمانی که یک واحد پس از خاموش شدن، باید خاموش بماند) رو داخل مدلم، پیاده سازی کنم، مدل مربوط به درس بازار برق هست و تو بازه زمانی ۲۴ ساعت، روشن یا خاموش بودن واحدها رو مشخص میکنه تا ماکزیمم توان رو داشته باشم، ممنون میشم اگه راهنمایی کنید. با تشکر
    تا این حد هم کد رو نوشتم و میخوام از روش ۳binary Variable Formulation حل بشه.
    .
    .
    .

  32. سلام ممنون بابت سایت خوبتون. مدل من minlp هستش با سالور baron هم حل کردم ولی این اخطار وو میده:
    The symbol shown has not been defined or assigned
    A wild shot: You may have spurious commas in the explanatory
    text of a declaration. Check symbol reference list.
    دلیل اخطار چیه؟
    از پاسخگوییتون کمال تشکر رو دارم.

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

  33. سلام خسته نباشید راه اول که فرمودید برای پیدا کردن سالور و در نهایت نوشتن اون هست؟ینی در هر صورت باید دستور optionنوشته شود؟این کار رو خود نرم افزار با توجه به مدلی که نوشتیم انجام نمیده که خودش تشخیص بده و از سالور مناسب استفاده کنه؟

    • سلام
      چرا خودش یه سری دیفالت داره. تو تنظیمات میتونین ببینین.
      ولی همیشه تشخیصش درست نیست. پس بهتره که با توجه به شناختی که از مدلتون دارین سالور رو براش تنظیم کنین.

  34. سلام. خسته نباشید. مدل من غیر خطی است . برای دستور solve آن
    solve elec using MIP Minimizing Cobj
    نوشتم. خطای ۲۵۷ میده. علتش چیه؟
    از راهنماییتون سپاسگزارم

  35. با سلام و عرض ادب

    ببخشید من یک مسئله minlp دارم که با solver sbb حل میکنم مینویسه terminated by solver وقتی با baron یا dicopt هم حل میکنم فقط ساعت ها فقط تعداد تکرارش اضافه میشه خیلی طول میکشه نمی دونم چیکارش کنم ممنون میشم راهنمایی کنین.

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

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

  36. سلام
    ببخشید برنامه من مقدار تابع هدف را برای J /1*2/ با وقتی کهJ /1*5/ متفاوت میده.
    یعنی مثلا واحد ۱ وقتی تعداد واحدها بیشتر میشه تغییر میکنه. در صورتی که نباید تغییر کنه. چون ارتباطی وجود نداره بین واحدها. فقط در هر بار اجرای برنامه تعداد واحدهای تحت ارزیابی تغییر میکنه
    تورو خدا کمکم کنید
    راستی مدلم غیرخطیه و
    option NLP=IPOPT;
    F11222.iterlim = 1000;

  37. ببخشید پی به اشتباهم بردم.
    یه سوال دیگه داشتم.
    من از لایسنسی استفاده میکنم که سالور مورد نظرمو full نشون میده.
    ولی موقع اجرای برنامه ابتدای کار مینویسه above license is invalid
    آیا به مقادیری که بعد از اجرا بهم میده اعتماد کنم؟؟؟!!!! یا لایسنس مشکل داره؟؟؟؟

    • سلام
      این کد رو بین دستور model و دستور solve قرار بدین:

      $onecho > cplex.opt
      preind 0
      $offecho
      Your_mode_name.optfile=1;

      که در خط اخر باید به جای modelname اسم مدل خودتون رو بنویسین که با دستور model تعریفش کردین.

  38. با سلام
    من یه مسئله ی MINLP دارم که با هر SOLVER حل میکنم جواب صفر به من میده و من مطمئنم درست مدل کردم لطفا منو راهنمایی کنید

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

        • با این اوصاف ظاهرا مدل شما نشدنیه. process window رو ببینید. ببینید model status چی گفته. احتمالا گفته که نشدنیه. اگه اینو نگفته که کد رو بفرستین به ایمیل سایت که ببینیم چیه مشکل

  39. با سلام
    هر وقت گزینه ی run رو میزنم این پیغام میده
    the file you want to run is not in the current process directory ;start the run any way
    بعد کل جواب مسئله را صفر میده
    ممنون میشم منو راهنمایی کنید این مسئله رو برای پروژه ام میخوام ضروریه بازم ممنون

    • اینکه این پیغام رو میده به خاطر اینه که شما یه دایرکتوری ایجاد نکردین تو اون پوشه تون. اگه تو دایرکتوری ران کنین این پیامو نمیده. دایرکتوری دیفالت گمز اینه: documents/gamsdir/projdir
      صفر شدنش میتونه به دلیل نبود لایسنس یا نشدنی بودن یا مشکلات دیگه باشه.

  40. سلام اقای محمودی خوب هستید؟
    من مطالب سایت شما رو دیدم و استفاده کردم
    یک سوالی داشتم که نتونستم با سرچ پیدا کنم لذا از شما گفتم بپرسم
    من دارم روی پخش بار بهینه کار میکنم
    توی پایان نامه ام زیر به ریز بهینه سازی رو هم باید بیارم
    سوالم اینه:
    در بهینه سازی کلاسیک روش های مختلفی مثل نیوتن سیمپلکس و نقطه میانی و … وجود داره
    ما در استفاده از سالور هامون در گمز با توجه به نوع مدلمون که میتونه خطی یا غیر خطی و یا … باشه سالور رو انتخاب میکنیم اما روش ای که هر سالور برای رسیدن به جواب استفاده میکنه چیه؟
    مثلا از کجا میشه فهمید سالور MINOS از کدوم روش برای حل استفاده میکنه نیوتن نقطه میانی و و …؟؟
    سوال دیگه بنده نحوه ی بدست اوردن ضرایب لاگرانژ در گمز هست در صورتی که ما با روش لاگرانژ مسئله رو حل کنیم ضرایب لاگرانژ رو داریم چجور میشه که نرم افزار این حساسیت ها رو به ما میده در صورتی که قطعا با لاگرانژ مسئله رو حل نمیکنه؟!
    ممنون میشم پاسخ بدین و یا راهنمایی فرمائید

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

    • سلام
      مقادیر دوگان مربوط به متغیر یا محدودیت هست. به یاد داشته باشید که “مقدار مارجینال برای یه متغیر برابر است با مقدار اسلک محدودیت نظیر آن متغیر”.

پاسخ دهید

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