۲۲

خطای ۱۰۰۱ out of memory در گمز – cplex

در صورتی که این پست را مطالعه می‌کنید، احتمالا خطای کمبود مموری یا out of memory در گمز برای شما مشکل ساز شده‌است. این خطا وقتی پیش می‌آید که ما مدل را توسط حل کنند‌ه‌ی CPLEX حل کنیم. ولی سی پلکس قادر به حل آن نباشد. این مشکل بیشتر مواقعی پیش می‌آید که مسئله‌ی شما در سایز بزرگ حل شده و تعداد متغیرهای عدد صحیح و یا صفر و یک آن بسیار بالا باشد. در واقع این خطا ممکن است خطا به علت ساختار مدل باشد، ممکن است به خاطر سایز بالا پیش بیاید.

برای رفع این خطا چندین راهکار پیشنهاد می‌شود که هر کدام به نوبه‌ی خود و بنا بر ساختار مسئله‌ی شما ممکن است مفید باشند.
رفع خطای ۱۰۰۱ در گمز
برای رفع این خطا راهکارهای زیر پیشنهاد می شود.
۱- در صورت امکان RAM سیستم خود را افزایش دهید.
۲- در صورتی که نیازی به حل مدل در سایز بالا ندارید، سایز آن را کاهش دهید.
۳- شاید solver های دیگر بتوانند سریعتر مدل را حل کنند. آنها را نیز امتحان کنید.
۴- اگر از سیستم عامل ویندوز استفاده میکنید، حتما از نسخه‌ی ۶۴ بیت استفاده کنید. (اینکه سیستم عامل های دیگر مانند لینوکس چه قابلیتی در حل گمز دارند را بررسی نکرده ایم)
۵- اگر متغیر شما اندیس دار است، حتما آن را به صورت اندیس دار تعریف کنید. به عنوان مثال اگر متغیر Xj دارید، در تعریف متغیر آن را دقیقا به صورت Xj تعریف کنید، و نه به صورت X.
6- محدودیت‌های زائد مدل را تشخیص داده و آنها را حذف کنید. این عمل بسیار به حل مدل کمک می‌کند.
۷- در صورتی که جواب تعدادی از متغیرها را از قبل می‌دانید، آنها را Fix کنید.
۸- تعدادی option برای cplex هست که شما باید آنها را در فایلی با نام cplex.opt ذخیره کرده و در cplex به آن آدرس دهید. راهی که ما پیشنهاد میکنیم، ساده تر از این است. شما کافیست کد زیر را به قبل از دستور solve و بعد از دستور model کپی کرده و مجددا مدل را ران کنید. توجه: your model name همان نام مدل شماست.

$onecho > cplex.opt
threads 4
nodefileind 2
workmem 2048
nodesel 2
varsel 3
nodsel 2
cuts -1
$offecho
Your_mode_name.optfile=1;
</code>

9- دو دستور زیر نیز می‌توانند مفید باشند. آنها را به قبل از دستور solve انتقال دهید.

your_model_name.solvelink=0;
your_model_name.dictfile=0
</code>

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

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

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

 

22 دیدگاه در “خطای ۱۰۰۱ out of memory در گمز – cplex

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

    an initial function value is large (larger than 1.0E+10)
    scale the variable and/ or equation or add bounds

    • سلام
      ممنونم.
      همونطور که فرمودین میتونین مقیاس رو کاهش بدین، این دیگه بسته به مسئله شما داره که چجوری.
      اینکه مسئله جوابش بی کردان هست یا نه باید بررسی کنین. ممکنه بی کران باشه و بر عبث بپایین!
      برای اینکه یه باند بالا برای خود گمز تعریف کنین. میتونین از بخش utilities/open editor/RTMAX یه عدد بزرگ انتخاب کنین.

      • از پاسخ شما بسیار سپاسگذارم
        من مقدار و هزینه ها را داشتم، اومدم مقیاس کل هزینه ها را به یک اندازه کاهش دادم ولی بازم این خطار را داد، البته شاید این کار من هم اشتباه باشد و از این لحاظ مطمین نیستم
        همونطور که فرمودید برای افزایش باند هم اون مسیر توی گمز نیستش
        editor/RTMAX/utilities/open
        یعنی داخل نوار ابزار utilities ، مسیر editor/RTMAX نبود.
        ممنون میشم که بیشتر راهنمایی کنید.
        با تشکر

        • سلام
          چرا تو سالور conopt میتونین پیداش کنین.
          به هر حال شما میتونین از سالوری قوی مث lindo استفاده کنین.

        • ممنون از لطف و وقتتون
          RTMAX را پیدا کردم، ولی وقتی میزنم و انتخاب میشه ولی اعمال در نرم افزار نمیشه و تغییری در خطا صورت نمی گیریه و همون خطا را میده
          متاسفانه کار با lindo را بلد نیستم

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

        • با سلام و احترام
          بسیار سپاسگزارم
          کد را از طریق ایمیل سایت براتون ارسال کردم
          با تشکر فراوان

  2. با سلام
    از مطالب مفید و خوب شما سپاسگزارم.
    چند وقتی که موقع احرای برنامه ام با خطای سیستمی
    مواجه می شوم
    gmsgennx.exe has been encountered a problem and needs to close.we are sorry for the inconvenien و وقتیکه به پنجره گزارش نگاه می کنم پیام پایین رو هم می بینم. Solver “LINDO” returned with nonzero exitcode -1073741819
    لطفا اگر می تونید راهنمایی کنید که دلیل این پیغام چیه؟ ایا مساله رو اشتباه مدل کردم؟
    مساله در emp نوشته شده و به صورت sp هست و حل کننده ی اون هم lindo هست.
    با سپاس

    • سلام
      متشکرم.
      این خطا همونطور که فرمودین مربوط به خطای سیستم عامل هست. اسم فایل گمزتون رو عوض کنین- یه اسمی که تا حالا استفاده نکردین. احتمالا درست میشه. اگه نشد لطفا این جواب رو به من بدین: این خطای ابتدای حل ظاهر میشه و قبل از Model generation یا بعد از اون اتفاق میفته؟ (ابه پنجره process window دقت کنین). برای سایت هم ارسال کنین، ببینم مشکل اصلی از چی میتونه باشه

  3. با سلام
    از پاسخ شما بسیار سپاسگزارم.
    در پنجره گزارش مسیر پایین طی میشه:
    starting execution
    generating EMP model delta
    executing LINDO:elapsed 0:00:00.047
    در واقع وسط حل هست که پیام داده میشه و وقتی که Dont send یا Send Error Report رو می زنم حل متوقف میشه و در پایین پنجره status :normal completion ظاهر میشه
    و تنها خطایی که در بالا می بینم در یکی از سطرهای نگاشت scen dictionary هست که جلوش پیغام Solver “LINDO” returned with nonzero exitcode -1073741819 رو آورده
    و وقتی که فایل lst رو نگاه می کنم solve summary به صورت پایینه:

    MODEL delta OBJECTIVE Zu
    TYPE EMP DIRECTION MAXIMIZE
    SOLVER LINDO FROM LINE 403

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

    RESOURCE USAGE, LIMIT NA 10000000000.000
    ITERATION COUNT, LIMIT NA 100000000
    EVALUATION ERRORS NA 0

    No solution returned

  4. با سلام و تشکر از سایت خوبتون
    من یه سناریو دارم که از ۲۴ عدد تشکیل شده! میخوام این سناریو رو به گمز بدم و بهم تعداد زیادی سناریو از روس اون سناریوی اول بده، بعد این سناریو ها رو بگیره و ده تا از بهترین سناریو ها رو تشخیص بده و بهم بگه!
    هرچی سرچ کردم کاهش سناریو ها رو فقط پیدا کردم که بوسیله SCENRED تو گمز نوشته میشه که اونم اگه راهنماییم کنین ممنونتون میشم، ولی تولید سناریوهای زیاد رو نتونستم پیدا کنم!ممنون میشم راهنمایی کنین.

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

  5. با سلام
    من در مسله ام که غیر خطی عدد صحیح هست بت مشکل حافظه رو به رو شده ام
    با سالور bonmin در سایز ۲در ۶ برای مسله مکان یابی مسیریابی حل کرده همین که سایز مسله ۲ در ۸ میشه ارور میده بنظرتون چه کار کنم
    ممنون میشم

  6. سلام. وقت بخیر آقای محمودی. ببخشید یه مشکلی برای من پیش اومده. من ٢٠ تا مسئله رو با سیپلکس ران گرفتم الان که به سایز بزرگ رسیدم دیدم بعد ۵٠٠٠ ثانیه متوقف شده و جوابشم شده دو برابر جواب متلب و یه پنجره برام باز شد که توش نوشته بود close programs و اینطور چیزا. چکار باید کنم درست شه؟؟

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

پاسخ دهید

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