انتخاب نوع 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
شماره تماس: ۳۳۲۵-۴۰۵—۰۹۱۹

 

درباره نویسنده

236 دیدگاه

  1. VIONA

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

  2. mb

    با سلام
    راستش من تو گمز مدل خطی که میزنم حل میشه و مشکلی نداره اما وقتی مدلم غیر خطی میشه هر 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 جواب میده و مشکلی نداره. اگه لطف کنید راهنمایی کنید ممنون میشم
    با تشکر

    1. محمودی

      سلام
      مشکل لایسنس هست و همچنین احتمالاً مدل شما نشدنی است. احتمالاً
      خواهش میکنم

  3. فاطمه

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

    1. محمودی

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

  4. سلام
    زمانیکه تعدادی از متغیرها باینری انتخاب میشوند .در خروجی مقادیری غیر از ۰ و۱ بین این دو میباشد علت چیه ؟
    باتشکر

    1. محمودی

      سلام
      یا مدلتون نشدنیه، یا اینکه با الگوریتم دقیق حل نشده، تو کامنتا جواب این سوال رو بارها نوشتیم

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

    1. محمودی

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

  6. مهشید

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

        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)

  8. محمدی

    با سلام
    خیلی ممنون از سایت مفیدتون
    عذرمیخوام مزاحم وقتتون شدم یه سوال داشتم
    من یه مدل 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)

    1. محمودی

      سلام
      لطفا با baron و dicopt هم حل کنین و پیامش رو بذارین.

      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

  9. محمدی

    خیلی ممنون از راهنماییتون
    متاسفانه هیچ کدوم از لایسنسایی که نصب میکنم این دو تا سالور رو نداره و جلوشون زده 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

    1. محمودی

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

  10. زهرا

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

    1. محمودی

      سلام
      این مشکل وقتی پیش میاد که نسخه ها یکی نباشن. البته ۳۲ یا ۶۴ بیت بودن ویندوز هم بعضاً تأثیر گذاره

  11. فرشید

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

      1. فرشید

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

        1. محمودی

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

  12. narges

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

    آخرین قسمت کد

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

    1. محمودی

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

      موفق باشین

      1. narges

        من همه رو چک کردم دوباره مطمئنم مشکلی ندارن داده ها چون تا قبل از زدن کد solve گمز ران میشد و اروری نداشت!بعله ارور را روی solve نشان می دهد!

        1. محمودی

          بله ران میشه، ولی مقدار میخواد واسه داده هاتون تا بتونه جواب بگیره

  13. ثمین

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

    1. محمودی

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

      1. ثمین

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

        1. محمودی

          شرط توقف گپ رو هم بذارین.
          نه من عرض کردم جوابشون یکیه اگه دقیق باشه.

  14. ثمین

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

  15. فضلی

    با سلام

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

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

    1. محمودی

      سلام
      متاسفانه منم سراغش رو گرفتم. پیداش نکردم
      ممنونم. لطف دارین

  16. سارا

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

    1. سلام
      از دستور power(A,B) استفاده کن , A پایه و B توان هست یا اگه توان دو هست از دستور sqr(A) یا اینکه A**B.
      و جواب سوال دوم در تعریف مجموعه ها بنویس

      q/1*3/
      s(q)/1,3/;

      بعد هر موقع خواستی بگی عضو s باشه کافیه بگی $S

      1. سارا

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

  17. مهلا

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

    1. محمودی

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

      option optcr=0;

      1. مهلا

        با گذاشتن شرط توقف زمانی ممکنه به جواب بهینه نرسه؟ ممکنه تو زمان بیشتری به جواب بهینه global برسه

        1. مهلا

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

        2. محمودی

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

        3. محمودی

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

    1. مهلا

      سلام.برای حل برنامه ریزی غیر خطی ۰و۱ با دستور سالور baron حتما مسئله باید convex باشه؟

      1. محمودی

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

  18. SAMIRAAA

    سلام.تو مدلی که من نوشتم خطای اندیس میده میخواستم ببینم اندیسهام اشتباه وارد شدن؟
    (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 نوشته شده اند، جزو پارامترهای مساله هستند و برای هرکدامشون یه حلقه تعریف شده است.

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

      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;

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

  19. KM

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

    1. محمودی

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

      1. KM

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

        1. محمودی

          زمان رو چقد گذاشتین. بالای چند هزار هم امتحان کردین؟

      2. KM

        باسلام
        با زمان ۳۶۰۰ ثانیه هم امتحان کردم باز پیام Resource Interrupt داد.

        1. محمودی

          سلام
          یه عکس از process window بگیرین و بفرستین به ایمیل سایت

        2. محمودی

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

  20. nazi

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

  21. اسماعیلی

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

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

    1. محمودی

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

  22. saman

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

    1. محمودی

      سلام
      فایل opt بهتون داد؟ ذخیره ش کردین؟ فراخوانیش کردین؟

      1. saman

        سلام
        بله یک فایل به اسم cplex.opt ذخیره شد. چجوری باید فراخوانیش کنم؟

        1. محمودی


          YourModelName.optfile=1;

          اینو بین دستور model و solve بنویسین. YourModelName هم که اسم مدلتونه

  23. pouya

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

    1. محمودی

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

  24. کاکا

    با سلام
    جناب محمودی ،بنده در گمز یک مسئله دارم که به صورت خطی می باشد و خروجی آن را با 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;

    با تشکر

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

      1. کاکا

        با سلام
        جناب رمضانی این کار را انجام دادم اما برای minlp فقط جواب داد وبرای غیر خطی جواب نمیده ؟
        من میخواهم برای nlp هم جواب بده ،چیکار کنم؟

        با تشکر

        1. خوب این برای این هست که در مدلتون متغیر integer دارین (احتمالا متغیر باینری ) . باید اونو از بین ببرین تا بتونین از nlp استفاده کنین.

        2. saleh

          من چطوری میتونم انواع سالورها وکارایشون رو بدونم

  25. sadegh

    salam
    agar 2 sets i , ii dashte basham ke hardo ba ham alias shode bashand angah baraye jame to tame ke vabaste be in do mibashand dar sorate nabarbari i , ii chegone bayad shart ra nevesht

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

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

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

  26. کاکا

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

    با تشکر

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

      1. کاکا

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

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

        1. سلام سیمپلکس یک روش بهینه سازی هست . توضیحاتتون برای سایت بفرستید.

  27. ن ر

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

    1. سلام. یک راهش استفاده از الگوریتم های فراابتکاری هست. همان گونه که می دانید گمز توانایی حل مسائل متوسط و بزرگ را نداره

  28. ال

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

    1. محمودی

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

  29. محمد

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

    1. محمودی

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

  30. مسعود

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

    1. محمودی

      سلام
      احتمالا یه ارور آبی تقسیم برصفر داده، یا اینکه لایسنس ندارین، چک کنین حتما

    2. محمودی

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

  31. هادی

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

    1. محمودی

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

  32. مونا

    سلام و خسته نباشید. برای حل مدل دو هدفه باید چه کرد؟

    1. محمودی

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

  33. صابر

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

    1. محمودی

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

      1. صابر

        میشه مثلا برای solver ای مثل NLP=IPOPT نقطه شروع الگوریتم را تغییر داد تا مدل شدنی بشه؟
        لطفا بفرمایید چطور نقطه شروع را تغییر دهم

        1. صابر

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

        2. محمودی

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

        3. محمودی

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

  34. ریحانه

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

    1. محمودی

      سلام
      بدون توان چی میگه؟
      ده خط آخر لاگ رو بذارین اینجا لطفا.

  35. الهام

    با سلام
    من یک مدلی رو برای کد کردنبه ایمیلتون فرستادم میشه لطفا بررسی کنید

  36. محمد

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

    1. محمودی

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

      1. محمد

        ببخشید، من نمیدونستم. چطوری باید از روش ۳binary Variable Formulation استفاده کرد؟ در کل مقادیر باینری در چه قسمتی و چطور باید تعریف شوند؟ ممنون

        1. محمودی

          این ۳ قبل متن چیه؟
          میشه برنامه ریزی صفر و یک. شما اگه بهتون اینو گفتن که باید برنامه ریزی صفر و یک استفاده کنین. اون ۳ احتمالا سرفصلی چیزیه

        2. محمد

          واقعا پاسختون جامع و کامل بود .ممنون

        3. محمودی

          دیگه ببخشید سوال کلی رو نمیشه خوب جواب داد

  37. ریحانه

    توان یک جواب گرفتم.
    در این قسمت هیچ عکسی را نمی توان بارگذاری کرد . با ایمیل بفرستم

  38. وحید

    سلام ممنون بابت سایت خوبتون. مدل من 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.
    دلیل اخطار چیه؟
    از پاسخگوییتون کمال تشکر رو دارم.

    1. محمودی

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

  39. تورج

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

    1. محمودی

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

  40. مقدم

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

    1. محمودی

      سلام
      چون غیر خطی هست، اینا رو امتحان کنین MINLP, NLP, DNLP

  41. توحید

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

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

    1. محمودی

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

      1. توحید

        خیلی ممنونم از راهنماییتون اجراش خیلی بیشتر از دوازده ساعت میشه

        1. محمودی

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

  42. صابر

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

    1. محمودی

      سلام
      سوالتون اصلا واضح نیست. خیلی شفاف توضیح بدین چشم.

  43. صابر

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

    1. محمودی

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

      1. صابر

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

        1. صابر

          ضمنا این ارور مشکلی توی اجرا ایجاد نمیکنه. فقط همون اول نشون میده و اجرا ادامه پیدا میکنه

    1. محمودی

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

  44. سمیه

    با سلام
    در مدلی که دارم لازمهpreindرو مقدار صفر دهم.اما نمیدونم کجاست!!!لطفا راهنماییم کنین
    باتشکر

    1. محمودی

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

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

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

  45. جلالی

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

    1. محمودی

      سلام
      لایسنس دارین؟ (اینجا رو بخونین حتما)
      همه یه جورایی مطمئنن که مدلشون درسته. اگه شک داشته باشن که ارائه ش نمیدن.
      مدل، داده ها، لایسنس و کدی که نوشتین رو چک بفرمایین

      1. جلالی

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

        1. محمودی

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

  46. جلالی

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

    1. محمودی

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

  47. مهدی فیروزی

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

    1. محمودی

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

  48. مهدی فیروزی

    مقادیر marginal در خروجی نرم افزار چگونه به دست می آیند؟

    1. محمودی

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

  49. امیر

    سلام مهندس محمودی
    یه مدل MIP دارم که Cplex حلش کردم. ابعاد مسئله هم زیاد نیست. ۲۷ گره دارم.
    ران که می گیرم solver status: terminated by solver بهم میده.
    چند خط پایین تر هم خطای out of memory برای cplex اعلام می کنه.!!
    ایراد کار کجاست بنظرتون؟ ابعاد کسئله که زیاد نیست!

    1. محمودی

      سلام
      ببخشید بابت تاخیر در پاسخگویی. دیدگاه شما رو روباتای سایت برده بودن قسمت جفنگ سایت.
      این خطایی که گفتین ما یه تاپیک براش گذاشتیم تو سایت. فک کنم براتون مفید باشه.
      رفع خطای ۱۰۰۱ cplex

  50. صابر

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

    1. محمودی

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

        1. محمودی

          تقریبا تو دنیای واقعی جواب بی نهایت نداریم. مشکل میتونه از مدلسازی، کد نویسی، سالور و… باشه.

  51. صابر

    ببخشید میشه توضیحاتی در مورد options یک solver بدید؟ چون میشه تغییراتی در روش حل و نقطه انتدایی و خیلی چیزهای دیگه داد

    1. محمودی

      سلام
      تو کانال مقداری در مورد بهتر کردن جواب اولیه صحبت شده. تو کامنت های مختلف هم همینطور. سرچ کنین احتمالا می بینید.
      برای استفاده از آپشن ها باید اول در مورد اون سالور مطالعه کنین، بعد از آپشناش استفاده کنین. فعلا مطالعه کنین تا بعد. کافیه سرچ بزنین gams solvers یا solver manual

  52. رضا

    سلام ، خسته نباشید

    میخواستم بپرسم مدل های برنامه ریزی تصادفی را می شود با نرم ازار گمز حل کرد؟
    اگر بله با کدام حل کننده؟

    1. محمودی

      سلام
      بله. بسته به نوع مسئله سالورای مختلف میتونن حل کنن. هر نوع مدلی با حداقل یه سالور قابل حل هستن.

  53. رضا

    مدل تصادفی ما برنامه ریزی مختلط عدد صحیح هستش.

    با سالور سیپلکس قابلیت حل داره؟

    1. محمودی

      سلام
      سیپلکس مختص همین مدلهای mip هست. بله. البته نباید سایز مدل خیلی بزرگ بشه.

  54. معصومه

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

      1. معصوم

        ببخشید سوالم کامل نیومده بود.
        من یه مدل غیر خطی دارم که با گمز و سالورهای بارون وگلوبال لیندو ران کردم.جوابم یه مقدار گپ نشون میده

        solution = 382615.64283 found at node 41
        best possible=382615.642447
        absolute gap=0.0003830000000596
        relative gap=0
        optca=1E-9
        optcr=1E-9
        

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

        MODEL STATUS = 1 OPTIMAL 
        

        اینو نوشته.

        البته وقتی همین مدل رو با نرم افزار لینگو(میگن لینگو برای حل غیر خطی دقیق تره) ران کردم میگه بهینه محلی ۳۸۲۶۱۵٫۶ با

        infeasibiliti= 0.0000000633 
        

        بدست میاد.

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

    1. محمودی

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

  55. احسان

    سلام ضمن تشکر من مدلم minlp هستش میشه با cplex حل کرد؟

    1. محمودی

      سلام
      خیر. فقط در صورتی میشه که مدل شما lp,mip و یا MIQCP باشه.

  56. آرش

    سلام. من میخوام مینیمم یک تابع چند متغیره با گمز بدست بیارم. اما میگه تابع با سالورای مربوط به NLP حل نمیشه. ممنون میشم راهنمایی کنید…

    variable
    x,y,z,objf;
    equation
    a1
    a2
    a3
    a4
    a5
    a6
    a7;
    a1..objf=e=abs(((1.95/33.86)*((x/33.86)**(0.95))*exp(-(x/33.86)**1.95))-((1/(y*sqrt(2*pi)))*exp(-0.5*((x-z)/y)**2)));
    a2..x=l=100;
    a3..x=g=0;
    a4..y=l=20;
    a5..y=g=10;
    a6..z=l=35;
    a7..z=g=25;
    model test/all/;
    solve test using nlp minimizing objf;
    display x.l,y.l,z.l;
    
    1. محمودی

      سلام
      قبل از دستور solve عبارت زیر رو اضافه کنین. میتونین به جای baron از lindo یا Minos یا هر سالور غیر خطی دیگه ای استفاده کنین. لایسنس هم نصب کنین. تو سایت گذاشتیم.

      option nlp=baron;
      
  57. آرش

    Functions with discontinuous derivatives are illegal
    In nlp models. use “dnlp”
    باز هم این ارور رو میاره

  58. مهدی

    سلام.با تشکر از مطالب مفیدی که میذارید. تا الان که خیلی ازش استفاده کردم. چند تا سئوال داشتم ممنون میشم اگر فرصت داشتید پاسخ بدید
    ۱. یه جایی گفتید که میشه به گمز جواب اولیه داد.میشه بیشتر توضیح بدید و اگر اندازه مسئله بزرگ باشه چطور میشه جواب اولیه رو بهش داد؟
    ۲. اگر مسئله جواب چندگانه داشته باشه چطور میشه همه اش رو دید؟ آیا در خلال حل و ارائه جواب نهایی باقی رو هم داره محاسبه می کنه؟ و در صورتی که بخواهیم گمز جوابی رو بده که کمترین استفاده از منابع (مقادیر سمت راست محدودیت ها) رو کرده باشه راهکاری وجود داره؟
    ۳. یه جایی تو گروهتون گفتید که گمز یه مقدار اولیه تخمینی پیدا میکنه و اون رو برای اعلام مقدار گپ ها استفاده میکنه.میشه در این خصوص هم بیشتر توضیح بدید. چطور میشه اون جواب رو مثلا در یک مسئله تخصیص دید؟
    با تشکر فراوان

    1. محمودی

      سلام
      خدا روشکر که براتون مفید بوده.
      ۱- جواب اولیه دادن به یه مسئله مقداری بحثش طولانی هست. برای مسائل کوچیک که قابل درک هستن برای ما، با توجه به شناختی که نسبت به ساختار مدل و داده ها داریم ما میتونیم جواب اولیه به مدل بدیم. مثلا ما تو مسئله ی فروشنده دوره گرد، به گمز میگیم که من حس میکنم جستجو رو از فلان نقطه شروع کنی و بعدش بری فلان جا احتمالا جواب خوبی به دست میاد. اینم حرفتو در نظر میگیره و میره طبق الگوریتمایی که تعریف شده براش حل مدل رو شروع و ادامه میده. ممکنه اصلا جواب اولیه شما رو هم براش ارزشی قائل نشه، ولی به هر حال بررسیش میکنه. مثلا یه متغیر داریم به اسم x، حالا قبل از دستور solve به گمز میگیم x.l=5; یعنی جناب گمز سعی کن حل رو از این نقطه شروع کنی. چرا؟ چون ما فکر میکنیم این نقطه برای ما نزدیک به بهینه هست. اونم میاد در نظر میگیره و اگه جواب خوبی باشه، سرعت حل مدل رو بسته به جواب و ساختار مدل بهتر میکنه و زودتر به جواب میرسه. برای مدلای غیر خطی زیاد پیش میاد که سالور نتونه حل کنه مدل رو. پس بد نیست حس خودمون رو به عنوان جواب بهش بدیم شاید به دردش خورد. سایزای بزرگ هم همین قانون رو دارن. ممکنه اصلا شما جواب اولیه ای هم به نظرتون نرسه.
      ۲- جواب چندگانه رو گمز نشون نمیده. میتونین یه بار مدل رو حل کنین، بعد تابع هدف رو فیکس کنین یا ببرین تو محدودیت و با یه سری حرکت دیگه یه چند تا جواب دیگه هم براش پیدا کنین. خودش اینکار رو نمیکنه. برا سوال دومتون اینکه این حالت رو میخواین با تابع هدف اولا نباید تناقض داشته باشه ثانیا اگه اینجوریه خب اون مقادیر رو بذارین تو تابع هدف (مثلا x<۲ آنگاه x+s=2 حال تابع هدف میشه max s). 3- جواب اولیه الگوریتماش پیچیده ست. ولی تو یه سالور مثل CPLEX کلیات کار اینجوری هست که سعی میکنه برای مسئله یه دوگان تعریف کنه و اون رو حل کنه و یه جواب اولیه براش بدست بیاره. (دوگان رو مطالعه کنین) بعد این جواب رو با جواب تابع هدف مقایسه میکنه. شما برای مسئله تخصیص شما، میتونین مقادیری که تو Process Window یا همون پنجره Log تحت عنوان Dual Objective مطرح میشه رو نگاه کنین و این میشه همون مقدار دوگان (که احتمالا هر بار گمز میاد جوابه رو بهتر میکنه) ببخشید بابت جمله سازی. مقداری خسته م و هر چی تو ذهنم اومد نوشتم.

  59. amir

    سلام
    من تو کدی که نوشتم سه تا متغیر باینری تعریف کردم ولی وقتی ران میگیرم بصورت ۰٫۳و ۰٫۷ و ۰٫۴و… نشون میده.اگه ممکنه کمکم کنید.در ضمن مساله رو با rminlp حل کردم.

    1. محمودی

      سلام
      rminlp یعنی متغیرهای عدد صحیح و صفر و یک من رو آزادشون کن! پس گمزم میره همین کارو میکنه. پس تایپ رو بذارین minlp .

      1. amir

        اخه وقتی رو minlp میذارم جواب کلا صفر میده و فقط با rminlp جواب میده. به نظرتون ایراد از کجا میتونه باشه؟

        1. محمودی

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

  60. نسرین

    سلام خسته نباشید، وقتتون بخیر
    مسئله بهینه سازی minlp یا nlp (با متغییرهای زیاد)جواب بهینه محلی بده قابل قبوله؟

    1. محمودی

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

  61. amir

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

  62. نسرین

    سلام و وقت بخیر دوباره،
    من با سالورای دیگه امتحان کردم همون بهینه محلی و میدن.
    مثلا با سالور conopt:
    optimal solution. Reduced gradient less than tolerance
    (مقدار تابع هدفم روی مقدار ۱۰۰۵۸۵ باقی می مونه و تغییری نمی کنه)
    به نظر شما من چیکارش کنم؟
    ممکنه مشکل از مقادیر اولیه ام باشه؟
    یا توی نوشتن مدل اشتباه داشته باشم؟
    یا برای اینکه جواب سراسری نداده قسمت های غیرخطی رو باید خطی کنم؟
    یا با الگوریتم های هوشمند بنویسم بهتره و ممکنه جواب سراسری بدن؟
    ببخشید سوالام زیاد شدن
    ممنون

    1. محمودی

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

  63. amir

    ببخشید وقت شما رو هم می گیرم. solver status و model status تو کدوم قسمت هستن. من هرچی گشتم نتونستم پیدا کنم

  64. amir

    برای SOLVER STATUS نوشته Normal Completion و برای MODEL STATUS نوشته Integer Solution. اینا به چه معناست؟

    1. محمودی

      لطفا به همون گفتگویی که داشتیم ریپلای کنین. تشکر.
      solver status که خوبه. ولی model status میگه که من تونستم یه جواب شدنی برای مسئله پیدا کنم. حالا این جواب شدنی ممکنه بهینه باشه یا نباشه. شما optcr,optca رو مساوی صفر بگیرین و مجددا ران کنین. احتمالا جواب نهایی براتون به دست میاره

      1. amir

        خیلی ممنون، درست شد. فقط اگه ممکنه میشه در مورد optcr,optca یه توضیح مختصر بدید؟؟

        1. محمودی

          زیاد در موردش صحبت کردیم تو سایت. جستجو بزنین تو سایت.
          این دو میان گپ gap رو صفر میکنن. و کاری میکنن که جواب نهایی ای که گمز به دست میاره دقیق و بهینه باشه.

  65. رادفر

    سلام وقتتون بخیر
    یه برنامه ی گمز نوشتم تو پنجره یno active process، normal conpretion میده ولی قسمت solver status کد۱۱ licensing problem رده مشکل از لایسنس گمزر؟.
    لطف میکنین لاینس مربوط به سالور sbb تو سایتتون قرار بدین و بفرمایید برای چه نسخه ی جواب میده؟
    پیشاپیش ممنونم ازتون

    1. محمودی

      سلام
      لایسنس کامل تمام سالورها رو گذاشتیم تو سایت. تو بخش دانلود و نصب گمز بگردین و لایسنس مربوط به ۲۰۱۴ که توضیح دادیم رو دانلود کنین.

  66. رادفر

    لاینسس هایی که تو سایت گداشتین دانلود نمیشن لطفا لنک آن را تصحیح کنین.

    1. محمودی

      سلام
      دانلود میشن، کلیک که میکنین بسته به تنظیمات مرور گر شما، یا دانلود میشه، یا میره تو یه صفحه جدید باز میشه که شامل یک متن هست. این متن رو کپی کنین تو فایل notepad و ذخیره کنین و استفاده کنین.

  67. مجد

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

    1. محمودی

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

  68. اهرابی

    سلام
    متشکر از سایت مفیدتون
    برای مدل dnlp چه سالوری مناسب‌تره؟

    1. محمودی

      سلام
      نمیشه نظر قطعی داد. lindo ،baron خوبن معمولا.

  69. اهرابی

    سلام
    یک سوال دیگه: میشه لطفا راهنماییم کنین این ارور معنیش چیه؟

    ( Exec Error at line 219: division by zero (0****

    1. محمودی

      سلام
      یه متغیر تو مخرج دارین. یا خطیش کنین و طرفین وسطین کنین. یا اینکه یه مقدار خیلی کوچیک مثل ۰٫۰۰۰۱ به مخرج میتونین اضافه کنین.

  70. کمیل

    سلام
    ممنون از سایت خیلی خوبتون
    سوالم اینه که اگه تو قیدی از عبارت های با اوردر مختلف استفاده شده باشه مثلا اگه از ست i برای تعریف معادله استفاده شده باشه در سمت چپ معادله i داشته باشیم و در سمت راست i و i-1 چنین مجموعه قیدی رو چجوری باید بنویسیم؟؟؟

    1. محمودی

      سلام
      از دستورات ord و uel استفاده کنین.
      مثالای زیادی تو کامنتهای این پست مشاهده میشه. همه رو ببینین.

  71. کمیل

    منظورم یه همچین چیزیه
    eq(i) .. D(i)=e=A(i)+0.5*A(i-1)
    eq(i) .. D(i)=e=A(i)+0.5*A(ord(i)-1)
    ولی خب به جفتشون ارور میده

    1. محمودی

      اولی درسته. فقط اندیس i رو به صورت ۱و۲و۳و… تعریف کنین.

  72. کمیل

    اقا خیلی ممنون
    اگرچه لازم شد یخورده فسفر بسوزونم تا منظورتونو از جمله ی ” اندیس i رو به صورت ۱و۲و۳و… تعریف کنین” متوجه بشم و (A(0 رو حذف کنم .
    خدا رو شکر مشکل حل شد
    حالا که مزاحم شدم یه سوال دیگه هم بپرسم . این حالت ینی چی ؟؟
    **** SOLVER STATUS 1 Normal Completion
    **** MODEL STATUS 8 Integer Solution

    1. محمودی

      سلام
      خواهش میکنم. خوبه که فسفر بسوزه دیگه. چارتا بادوم پسته جبرانش میکنه. :دی
      این حالت یعنی اینکه سالور با حل مسئله مشکلی نداشته و جواب عدد صحیح و شدنی پیدا کرده ولی ممکنه کماکان بهینه نباشه. بهتری model status برابر optimal هست.

  73. ali

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

    Min   sum (a*x^2+b*x+c)                        
    set   s  /1*100/;    
    parameter step;
    step=(Xmax-Xmin)/card(s);
    Parameters    Xstart(s), Xend(s), Ystart(s), Yend(s);
    Xstart(‘۱’)=Xmin;
    Xstart(s)$(ord(s)&gt;=2)=Xstart(s-1)+step;
    Xend(s)=Xstart(s)+step;
    Ystart(s)=f(Xstart(s));
    Yend(s)=f(Xend(s));
    Z=f(xk)   
     Z= sum [((Yend(s)-Ystart(s))/step)*(XK(s)-Xstart(s)*u(s))+Ystart(s)*u(s)]                             
    Xstart(s)*u(s)&lt;=XK(s)&lt;=Xend(s)*u(s)
    X=sum (XK(s))                                                                                            
    Sum(XK(s))=1    
    

    تمام sum ها بر روی s هستند.
    می خواهیم تابع درجه دوم را با چند خط تقریب بزنیم. Z جمع معادله خطوطی است که دو نقطه از تابع درجه دوم را بهم وصل می کند. Xstart(s) و Xend(s) به ترتیب نقاط ابتدا و انتهای خط مذکور است. در معادله u(s) ,z به این دلیل ضرب شد که اگرXk(s) در یک بازه صفر شد، Xstart(s) هم در آن بازه قرار نگیرد. Xk(s) چون فقط در یک تکه از این خطوط است، پس یک متغیر باینری است.
    خودم یک کد نوشته ام که خیلی ناقص است. لطفا در نوشتن کد گمز به من کمک کنید.
    با تشکر از شما

    1. محمودی

      سلام
      من نمیدونم این چه رویکردی هست. رویکرد باید واضح باشه با یک کد نمیشه نظر داد. معمولا برای تقریب ها از حلقه ها هم استفاده میکنن.

  74. leila

    سلام و وقتتون بخیر…سوالی داشتم ممنون میشم راهنماییم کنین
    در مساله بهینه سازیم مقادیر absolute gap حدود ۶۰۰۰ و relative gap 0.29 درمیاد( Mip سالور cplex)…میخواستم بدونم ایراد کار کجاست؟؟؟
    دستور مربوط به گپ و زمانم وارد میکنم فایده ای نداره..
    solve Acm using MIP minimizng zz1;
    option optca=0,optcr=0,mip=cplex,reslim=3600;
    mip solution=21000 و best solution=15000…
    میخوام بدونم الان کل مدل سازیم زیر سوال میره یا نه این میزان گپ ایرادی نداره؟
    باتشکر

    1. محمودی

      سلام
      چقدر طول میکشه حل مسئله؟
      آیا پیامی مبنی بر اتمام منابع resource limit یا iteration limit بهتون میده؟

  75. leila

    سلام….نه همچین پیامی نمیده.اگه دستور option optca=0,optcr=0,mip=cplex,reslim=3600 وارد نکنم تو همون ۱۶ مین جواب میده.ولی وقتی دستور وارد میکنم ۱ ساعت طول میکشه البته بگم که میزان گپش ۱۰۰۰ تا کم میشه..

    1. محمودی

      سلام
      لطفا به همون گفتگو جواب بدید. تشکر
      خب ۳۶۰۰ میشه همون یه ساعت دیگه. زمانو میتونین بیشتر کنین.

  76. leila

    میبخشین بله درست فرمودین …این پیام میده Resource limit exceeded…

  77. leila

    چشم امتحان خواهم کرد…فقط این resource limit یعنی چی؟یعنی اینکه باید زمان بیشتر بشه؟میخوام بدونم مدل مشکلی نداره

    1. محمودی

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

  78. leila

    سلام و وقت بخیر..این دستور P.optCR= 0( هر جا به گپ صفر رسید برنامه متوقف بشه) باید دقیقا کجا و چجوری وارد کنم؟؟ قبل از solve؟هر جا وارد میکنم ارور میده نرم افزار

    P.optCR= 0
    option optca=0,optCR=0,mip=cplex,reslim=36000;
    solve Acm using MIP minimizng zz1;
    
    1. محمودی

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

  79. فرهاد

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

  80. فرهاد

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

    1. محمودی

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

      1. فرهاد

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

  81. علی

    با عرض سلام و خسته نباشید
    سوالی در ارتباط با انتخاب نوع سالور داشتم
    آیا سالور Dicopt که برای مسائل minlp می باشد قید غیر خطی non convex را نیز حل می کند؟
    اگر جواب خیر است باید چه سالوری انتخاب شود؟ آیا گمز اصلا توانایی حل اینگونه مسائل غیر خطی noncovex را دارد؟
    ممنون

    1. محمودی

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

  82. سارا

    با سلام
    من یه مساله بای لول دارم که از سایت NEOS و emp و سالور jams استفاده میکنم
    ابعاد مساله من بسیار بزرگ است.
    خروجی های INFEASIBLE ندارم
    ولی این پیام رو هم دارم
    **** SOLVER STATUS 4 Terminated By Solve
    چیکار کنم؟

  83. hossein

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

    1. محمودی

      سلام
      اینکه از چه روش و سالوری استفاده میکنین نمیدونم. ولی بهترین کاری اینه که تعداد تکرار رو به یک عدد محدود کنین و نتیجه رو نشون بدین.

  84. مجتبی

    با سلام من یک مساله دو سطحی دارم که از emp lib. برای حل اون استفاده میکنم.
    با یک سری داده مشخص و با ساب سالور بارون مساله مو حل کردم و جواب گلوبال و گپ نزدیک به صفر به دست آوردم.
    حالا فقط داده های ورودی رو عوض کردم ولی برای مدلم این ارور رو دارم :
    No Solution Returned
    دلیلش چی می تونه باشه؟

    1. بذارید یک مثال برای شما بزنم
      شما یک کد ساده دارید که کار می کند و تنها دستور آن x=2 است
      حالا شما بیایید و یک قید خیلی ساده به آن اضافه کنید مثلا
      x=0
      قیدی که شما اضافه کردید بسیار ساده و خطی است
      ولی مساله باید مقداری برای x پیدا کند که هم برابر ۰ باشد هم برابر ۲ باشد !
      به همین سادگی
      وقتی شما کمیتی را در کد عوض می کنید می توانید آن را غیر قابل حل کنید
      حالا اینکه چه اتفاقی افتاده بستگی دارد که چه کاری انجام داده اید
      بگردید علت خطا را پیدا کنید
      پیشنهاد : دیتای ورودی را چک کنید
      دلیلی ندارد یک کد برای هر دیتای ورودی جواب داشته باشد

  85. سمیرا کیانی

    تو را خدا لایسنس با این اسم برایم می فرستید؟
    ۴_۵۹۲۲۷۲۴۱۴۱۲۸۶۲۹۵۱۳۳

  86. موحدی

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

  87. سلام خسته نباشید من صنایعی نبودم بخاطر همین روی تحقیق در عملیات یکم ضعیفم
    الان باید یه کدی بزنم که متغیراش باینری و پیوسته هستند که برای متغیرای پیوسته اخرین محدودیت گفته که همه متغیرای پیوسته بزرگتر مساوی صفر هستن، تو محدودیت ها و تابع هدف هم هیچ عبارتی ضرب بین پیوسته با پیوسته یا باینری نیست. دیتا های مدلمم همه رو با یونیفرم بصورت تصادفی تولید کردم وقتی مدلو ران میکنم ارور نمیگیره ولی این پیغامو میده
    MODEL biomasssupplychain OBJECTIVE z
    TYPE MIP DIRECTION MINIMIZE
    SOLVER CPLEX FROM LINE 295

    **** SOLVER STATUS 1 Normal Completion
    **** MODEL STATUS 10 Integer Infeasible
    **** OBJECTIVE VALUE NA

    RESOURCE USAGE, LIMIT 0.015 1000.000
    ITERATION COUNT, LIMIT 0 2000000000
    الان نمیدونم مشکلم از چیه از دیتاهاست یا از مدلی که انتخاب کردمه.(mip) میشه راهنماییم کنید؟

    1. محمودی

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

  88. مریم

    سلام
    من یه برنامه با گمز نوشتم جواب درست نمیده با solver بارون و scip هم حل کردم همه ی متغیرها رو صفر میده و تابع هدف هم به جای یک عدد مثبت منفی میده به نظر شما اشکال کجاست؟ ( چند تا مدل دیگه رو با همین نرم افزار حل کردم جواب درست داده )

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

دادن پاسخ به محمودی × لغو پاسخ