خطاهای گمز

با اطمینان ۹۹ درصد تمامی کد نویسان گمز -از مبتدی گرفته تا فوق حرفه ای یا توسعه دهنده-
پس از Run کردن مدل خود، حداقل یک Error را مشاهده خواهند کرد.

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

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

 

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

869 دیدگاه

  1. مهشید

    سلام ممنون از پاسختون
    من در کد زیر هم با ارور ۱۴۹ مواجه شدم، میشه بفرمایید ایراد در کدام قسمت بوده؟ ممنون
    constraint19(l,n,t)..sum(i,XL(i,l,t,s))+sum(m,XM(m,l,t,s))=l=Sa(l,n);

  2. سامی

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

    Loop((u,j),
    fm(u)= round(uniform(fm.lo(j)=l= (1+k(j))*fb(j))
    fm.up(j)=g=(1-k(j))*fb(j)));
    k(j)= uniform ((fm(u)-f(j))/fb(j));
    fb(j) = sum(j,f(j)/majmu);
    ;(
    

    یک متغیر رندم دارم مثل fmکه به طور یکنواخت از بازه fm.lo(j)=l= (1+k(j))*fb(j))وfm.up(j)=g=(1-k(j))*fb(j)))مقدار میگیره. k(j)یک متغیر رندم هست که ازk(j)= uniform ((fm(u)-f(j))/fb(j) مقدار میگیره.روی .lo خطای ۱۴۱ و۱۷۲و۱۴۲ میده بایدlo رو قبلش رو پارامتر تعریف کنم؟تعریف هم کردم دوباره خطا میگیره.
    اصلا بخواهیم بگیم یک متغیر به طور رندم از بازه ای مقدار میگیره باید فرم بالا رو بنویسم؟سپاس فراوان.

    1. محمودی

      سلام
      شما نمیتونین برای یه متغیر همچین محاسباتی بنویسین. فقط باید بگین که مثلا fm متغر مثبت هست، و حد بالا و حد پایین براش بذارین.
      دقت کنین که متغیر رندم نداریم. فقط پارامتر رندم داریم. ویژگی هایی نظیر .lo.fx,.up فقط برای متغیر استفاده میشه

  3. mahya

    با سلام و تشکر از سایت خوبتون
    این محدودیت که اینجا می فرستم ، مربوط به توالی کارها در مسئله job shop هستش
    و دو تا شرط رو باید با هم لحاظ کنه ولی ارور میده، ممنون میشم لطف بفرمائید راهنمایی
    کنید.

    CO13(t,k,i,j,f,g)$((O(i,k))and(ord(i)>= ord(j)) and (ord(f)  ord(g)))
                       and $((ord(i)> ord(j)) and (ord(f) eq ord(g))) ..
             keci*(1-Y(t,k,i,j,f,g))+ ST(t,k,j,f)- ST(t,k,i,g)=g= PT(t,k,i,g);
    
  4. mahya

    با سلام و تشکر از سایت خوبتون
    این محدودیت که اینجا می فرستم ، مربوط به توالی کارها در مسئله job shop هستش
    و دو تا شرط رو باید با هم لحاظ کنه ولی ارور میده، ممنون میشم لطف بفرمائید راهنمایی
    کنید.
    CO13(t,k,i,j,f,g)$((O(i,k))and(ord(i)>= ord(j)) and (ord(f) ord(g)))
    and $((ord(i)> ord(j)) and (ord(f) eq ord(g))) ..
    keci*(1-Y(t,k,i,j,f,g))+ ST(t,k,j,f)- ST(t,k,i,g)=g= PT(t,k,i,g);

    نه اتفاقا به اون and قبل از شرط دوم ایراد میگیره، و میگه که نباید میبود و به صورت
    “..” یا ” :=”یا “$=” باید باشه ، ولی اونا رو هم که زدم بازم ارور میداد.

    1. محمودی

      چند تا نکته:
      تو شرط، ما یه دونه دلار باید داشته باشیم
      برای هر شرط باید عباراتی نظیر < = داشته باشیم. تا میتونین کمتر از براکت و برانتز استفاده کنین. اینجوری ارورگیری راحت تر میشه

  5. امیر

    سلام
    چطور میتونیم توان زیر را در گمز وارد کنیم :
    x^0.23

  6. خسروی

    سلام. وقتتون بخیر.
    یه سوال از خدمتتون داشتم. من این خطا رو روی سطر مربوط به دستور solve دارم. هر کار هم انجام میدم، رفع نمیشه. خیلی ممنون میشم اگر راهنماییم کنید
    Error 64: function called with non-constant argument

    1. محمودی

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

  7. خسروی

    این هم دستور حل کردنم هست:
    Solve sizing using MINLP maximizing NPV;
    متغیر باینری دارم و از دستور ifthen هم تو تعریف یک تابع استفاده کردم.

  8. پویان

    سلام.وقتتون بخیر.یک سوال از خدومتتون داشتم.یک مساله برنامه ریزی خطی دارم که بعد اینکه ران میشه خطای زیر رو میده
    Row ‘equ_8(b1.b2)’ infeasible, all entries at implied bounds.
    ممنون میشم راهنمایی کنید

    1. محمودی

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

  9. مریم

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

    1. محمودی

      سلام
      از حل صحیح مدل مطمئن بشین اول.
      ثانیا ممکنه اونقدر فضای شدنی مسئله شما کم باشه که فقط همین یه نقطه رو به شما بده. جدول pay-off رو بهش دقت کنین. ببینین چه جوابابیی ارائه میده.

  10. علی

    با سلام
    من میخوام لینک بین متلب و گمز رو انجام بدم وقتی دستور
    gdxInfo و gdxWhos رو توی متلب قسمت command window تایپ میکنم ارور میده
    ‘undefined function or variable ‘gdxWhos رو میده، نمیدونم چجوری حلش کنم.
    طبق یه فیلم آموزشی داشتم پیش میرفتم که ارور میگیرم.
    ممنون میشم راهنماییم کنین%%

  11. علی

    با سلام
    وقتتون بخیر
    در رابطه با نحوه ی ارتباط بین گمز و متلب دچار مشکل شدم.
    بعنوان مثال با توجه به روشی که مطالعه کرده بودم وقتی تو command window متلب تایپ میکنم
    ‘gdxWhos ‘solution یا مثلا وقتی از دستور ‘gdxInfo ‘solution استفاده میکنم با یه سری ارور مواجه میشم.
    []
    ‘undefiend function or variable ‘gdxWhos
    Error using gdxInfo
    Error in gdxOpenRead
    []

  12. باران

    سلام. خسته نباشین. معنای ارور ۵۵ و ۲۵۷ در گمز چیه؟ چون دیدم در مورد بعضی از ارور ها توضیح دادین مزاحمتون شدم. اگه راهنمایی کنین ممنون میشم.

    1. محمودی

      سلام
      خواهش میکنم.
      متن ارور ها رو لطفا ارسال کنین.

  13. باران

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

  14. پری

    سلام خطای
    UNABLE TO OPEN GDX FILE FOR $GDXIN از چه بابت هست. بنده کد یک پایان نامه رو هنگام ران گرفتن با این خطا مواجه میشم.
    میشه لطفا راهنمایی بفرمایید
    بی نهایت تشکر

    1. محمودی

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

  15. سلام
    سور عمومی برای اندیس ها به این شکل t=1 و t >1 و یا p > v که اخری V توی پارامترها هم هست چگونه باید توی قسمت equation بنویسم؟
    const(….???….)

  16. حامی

    با سلام
    من می خوام در گمز محدودیت ذیل رو تعریف کنم :
    یک راننده با شمارنده m در طی دوره t به یک خودروی نوع g ، به یک خرده فروش r ومرکز توزیع j اختصاص داده شود .
    آیا تعریف ذیل درسته؟ در غیر این صورت چطور باید بنویسمش ؟
    ممنون میشم راهنمایی بفرمایید .

    eq20(o,n,m,t)..sum((g,r,j),XD(o,n,m,j,r,g,t))=e=1
    
    1. محمودی

      سلام
      بقیه اندیس ها رو نگفتین، ولی طبق اینی که فرمودین صور عمومی ظاهرا فقط باید m,t باشه.

  17. ریحانه

    سلام.من در کد زیر با خطای ۳۶ مواجه میشم.ممکن است راهنمایی فرمایید ایراد در چیست؟
    first clause .. sum(i, b(i)*x(i))=e=2;

    1. محمودی

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

  18. زهرا شیری داریانی

    سلام
    خطای ۵۰ رو چطور باید از بین ببریم؟
    میگه:
    loop controlling index appears in model equations
    در صورتی که هر چی چک می کنم‌؛ این اتفاق نیفتاده

    1. فرض کنید شما equation مطابق زیر دارید

      alias(k,j);
      eq(j,k)$(ord(k)<ord(j)) .. X(k)=l=X(j);
      

      شما نمی توانید عبارتی مثل زیر داشته باشید وگرنه همان خطایی که گفتید را خواهید گرفت

      loop(j,
      test=ord(j);
      solve model us lp min of ;
      );
      

      چزا ؟
      چون ست j در مدل شما به کار رفته است
      راه حل آن :
      یک ست با دستور alias برای j تعریف کنید و حلقه خود را روی ست جدید ببندید

  19. افشین

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

    1. محمودی

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

  20. سروش

    سلام من یه کد نوشتم که exit code =3 میده و مسئله رو حل نمیکنه و هر چی کد رو بررسی میکنم متوجه نمیشم که کجاش باعث بی کران شدن میشه! میتونین کمکم کنید لطفا

    1. محمودی

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

  21. شیوا

    با سلام خدمت شما.من در قسمت تایع هدف به مشکل برخوردم و ارور ۱۴۹ رو میده یکبار هم ارور داد برای تکرار sum . sum های اضافه رو که حذف کردم اون ارور دیگه نیمد ولی این ارور که برای مجموعه ها میده رو من نمیتونم برطرف کنم.

     objectivefunction..z=e=sum((a,i,j,k,m,bk,bm),
    w(i,j)*R1(i,j,k,m)*c1(i,j,k,m)*x1(a,i,j,k,m)+
    w(i,j)*R2(i,j,m,bk)*c2(i,j,bk,m)*x2(a,i,j,bk,m))+
    w(i,j)*R3(i,j,bm,k)*c2(i,j,k,bm)*x3(a,i,j,k,bm))+
    w(i,j)*R4(i,j,bm,bk)*c4(i,j,bk,bm)*x4(a,i,j,bk,bm));
    

    خیلی خیلی ممنون میشم من رو راهنمایی کنین

    1. محمودی

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

  22. باقری

    سلام وقت بخیر
    برای من اروری آبی رنگ با مضمون زیر ایجاد شده:
    [Error at line 104: division by zero]
    خط ۱۰۴ ، خط اول تابع هدفم هست:
    [GAMS Code]
    [Obj.. Z=e=Sum((i,j),P(i)*X(i,j)) +
    Sum((i,j),T(i,j)*(X(i,j)/V(i))) +
    Sum((i,j),H(j)*X(i,j)/2) +
    Sum((i,j),O(j)*(D(j)/X(i,j))) +
    Sum((i,j),M(i,j)*(a(i,j)*X(i,j))) ;]
    لازم به ذکر ست که متغیر تصمیم بنده X بوده و سایر مقادیر به صورت پارامتر تعریف شده اند. این ارور در حالی رخ می دهد که بنده هیچ مقدار صفری را برای آنها اختصاص ندادم.
    ممنون میشم راهنمایی بفرمایید.

  23. عیسی مخلص

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

      ۶۳  cost.. obj=e=sun((i,j),c(i,j)*D(i)*x(i,j)+ sum(j,y(j))*f(j);
    ****      $96             $195,96,195,96     $195,96   $195$96
      64  eq1(i)..sum(j,x(i,j))=g=1;
      65  eq2(i,j)..x(i,j)=l=y(j);
      66   
      67  model 'originalproblem /cost,eq1,eq2/
    ****        $2
      68  option optcr=o;
    ****               $1
      69  option mip=cplex;
      70  solve originalproblem minimizing obj using mip;
    ****                                                $257
      71  display obj.l, x.l, y.l;
    ****              $141 $141 $141
    GAMS 24.1.2  r40979 Released Jun 16, 2013 WIN-VS8 x86/MS Windows 06/26/19 00:58:54 Page 2
    G e n e r a l   A l g e b r a i c   M o d e l i n g   S y s t e m
    Error Messages
    
    1. محمودی

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

  24. جاویدی

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

    1. محمودی

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

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