تمرین ۴: مسائل infeasible

فرض کنید یک مدل بهینه سازی را در گمز کد نویسی کرده اید. ولی مشاهده می کنید که در process window پیامی تحت عنوان نشدنی بودن مسئله (infeasible) ملاحظه می کنید. مشکل ممکن است از کجا باشد؟ برای بر طرف کردن این مشکلات چه تدبیری می اندیشید؟

ضمناً مناسب تر است که کامنت های خود، که شامل کد می باشند، را یک بار در GAMS و یا Notepad کد نویسی کرده و سپس به عنوان کامنت ارسال کنید.

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

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

 

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

25 دیدگاه

  1. رویا

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

  2. فاطمه

    سلام
    به نظرم یکی از دلایل infeasible بودن مساله تضاد داده هایی است که وارد کرده ایم،علاوه بر بررسی محدودیت ها لازم است که داده ها را نیز بررسی کنیم و مقادیر آنها را تغییر دهیم.

    1. محمودی

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

  3. محمد

    با عرض سلام و ادب
    آیا امکانش هست که مثلا یک if بنویسیم که در صورت infeasible شدن مسئله به ازای برخی متغیر ها ، یک قید را حذف و مسئله ار حل کند؟ سوال بنده اینه که عبارت if مربوطه رو باید چطور بنویسیم؟

    ۱٫ مدل کردن مسئله با تمامی قیود
    ۲٫ حل مدل فوق
    ۳٫ اگر (شرط) آنگاه (حذف یک قید و مدل کردن مسئله)
    ۴٫ حل مدل فوق

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

      1. محمد

        بله فقط یک قید. البته حذف قید مورد سوال بنده نیست.
        سوالم اینه که در عبارت شرط، چی بنویسم؟ بجای infeasible
        if (infeasible) then … do

        1. محمودی

          به جاش از modelstat استفاده کنین. ببینین چه Modelstatی براتون خوبه. سرچ بزنین تو سایت گمز modelstat

  4. هنگامه

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

    1. محمودی

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

  5. محمد

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

                   S O L V E      S U M M A R Y
         MODEL   CostEmissionMin     OBJECTIVE  WS
         TYPE    NLP                 DIRECTION  MINIMIZE
         SOLVER  CONOPT              FROM LINE  103612
    
    **** SOLVER STATUS     1 Normal Completion         
    **** MODEL STATUS      4 Infeasible                
    **** OBJECTIVE VALUE       2978277167.2073
    
  6. فاطمه

    سلام
    وقتتون به خیر
    میبخشید من وقتی مدلم رو ران میکنم Infeasible میشه و این رو مینویسه
    row ‘Eq10(i1,t1)’infeasible , all entries at implied bounds
    مشکل چیه؟
    میشه یکمم درباره چک کردن داده های ورودی توضیح بدید؟ من دقیقا نمیدونم چطور باید این کارو انجام بدم
    خیلی متشکرم از لطفتون

    1. محمودی

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

  7. رسول

    سلام آقای محمودی بزرگوار
    سوالم شاید مربوط به این صفحه نباشه. ی معادله توازن انرژی داریم که باید برای هر دقیقه بررسی بشه که توازن به هم نخوره. مشکلم تو نحوه تعریفشه. انرژی تو بازه اول یعنی t=1 , i=1 ، ( هر ده دقیقه i یکی اضافه میشه و هر شش بار اضافه شدن i به t یکی اضافه میشود و یک شبانه روز را در ۱۴۴ بار بررسی میکنه یعنی ۱۴۴=۲۴*۶ ) برابر است با انرژی تو بازه t=1 , i=0 که اولین مشکلم اینه که مجموعه i از ۱ تا ۶ تعریف شده. و مشکل دوم در ابتدای هر ساعته که باید به ساعت قبل ربطش بدهم. اینم معادله هستش:
    Energy(t,i)=e=Energy(t,i-1)+ChargePower(t,i)*Interval-(1-Availability(t,i))*EVnumber*Driving;

    (اون بالا اشتباهه تایپی بودش. منظورم اینه که معادله توازن انرژی باید هر ده دقیقه بررسی ….)

    1. محمودی

      سلام
      کوچیک شماییم.
      سوال رو مطرح نفرمودین.
      مشکلتون رو i=0 هست؟

  8. آیدا

    سلام من یک مدل برنامه ریزی خطی ۵ هدفه دارم که با روش آرمانی تو گمز میخوام حلش کنم ولی ارور Problem is integer infeasible.
    مشکل کار از کجاست؟

    1. علیرضا سرودی

      سلام
      سعی کنید فیود را تک تک وارد مدل کنید
      یعنی یکبار مدل را با قید ۱
      یعنی یکبار مدل را با قید ۱ و ۲
      یعنی یکبار مدل را با قید ۱ و ۲و ۳
      حل کنید
      دفت کنید هیچ کدی بدون داشتن ارور تولید نشده و نخواهد شد
      این کار شما به عنوان برنامه نویس است که علت آن را پیدا و رفع کنید

      موفق باشید

  9. آیدا

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

    1. علیرضا سرودی

      قیود مساله را تک تک اعمال کنید و ببینید ایراد از چیست

      1. آیدا

        ببخشید یه سوال دیگه هم داشتم. الان من همین مدل رو با روش lp metric ران کردم و جواب داد، ولی با روش آرمانی مشکل اینفیسیبل بودن داره
        میشه گفت مشکل از دیتا ست ۱۰۰ درصد؟

        1. محمودی

          سلام
          به نظرم یک جای کار می لنگه! یا مدل و داده ها و کد مشکل داره، یا اینکه روش آرمانی که به کار بردین رو دقیق اجرا نکردین.

  10. h

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

    ** An equation is inconsistent with other equations in the
    pre-triangular part of the model.

    1. این ایراد معمولا وقتی پیش می آید که شما مثلا نوشته باشید

      X>1
      X<-۳ یا مثلا نوشته باشید x=2 در حالی که x باینریه باید معادلاتتون رو چک کنید

  11. کوروش مسلمی

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

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

    ممنون میشم راهنمایی بفرمایید. خدا خیرتان دهد.

    1. محمودی

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

دیدگاهی دارید؟