۸۵۶

خطاهای گمز

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

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

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

 

856 دیدگاه در “خطاهای گمز

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

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

  3. با سلام و تشکر از سایت خوبتون
    این محدودیت که اینجا می فرستم ، مربوط به توالی کارها در مسئله 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. با سلام و تشکر از سایت خوبتون
    این محدودیت که اینجا می فرستم ، مربوط به توالی کارها در مسئله 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 قبل از شرط دوم ایراد میگیره، و میگه که نباید میبود و به صورت
    “..” یا ” :=”یا “$=” باید باشه ، ولی اونا رو هم که زدم بازم ارور میداد.

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

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

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

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

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

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

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

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

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

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

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

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

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

    eq20(o,n,m,t)..sum((g,r,j),XD(o,n,m,j,r,g,t))=e=1
    
  14. سلام.من در کد زیر با خطای ۳۶ مواجه میشم.ممکن است راهنمایی فرمایید ایراد در چیست؟
    first clause .. sum(i, b(i)*x(i))=e=2;

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

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

    • فرض کنید شما 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 تعریف کنید و حلقه خود را روی ست جدید ببندید

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

پاسخ دهید

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