در صورتی که این پست را مطالعه میکنید، احتمالا خطای کمبود مموری یا out of memory در گمز برای شما مشکل ساز شدهاست. این خطا وقتی پیش میآید که ما مدل را توسط حل کنندهی CPLEX حل کنیم. ولی سی پلکس قادر به حل آن نباشد. این مشکل بیشتر مواقعی پیش میآید که مسئلهی شما در سایز بزرگ حل شده و تعداد متغیرهای عدد صحیح و یا صفر و یک آن بسیار بالا باشد. در واقع این خطا ممکن است خطا به علت ساختار مدل باشد، ممکن است به خاطر سایز بالا پیش بیاید.
برای رفع این خطا چندین راهکار پیشنهاد میشود که هر کدام به نوبهی خود و بنا بر ساختار مسئلهی شما ممکن است مفید باشند.
رفع خطای 1001 در گمز
برای رفع این خطا راهکارهای زیر پیشنهاد می شود.
1- در صورت امکان RAM سیستم خود را افزایش دهید.
2- در صورتی که نیازی به حل مدل در سایز بالا ندارید، سایز آن را کاهش دهید.
3- شاید solver های دیگر بتوانند سریعتر مدل را حل کنند. آنها را نیز امتحان کنید.
4- اگر از سیستم عامل ویندوز استفاده میکنید، حتما از نسخهی 64 بیت استفاده کنید. (اینکه سیستم عامل های دیگر مانند لینوکس چه قابلیتی در حل گمز دارند را بررسی نکرده ایم)
5- اگر متغیر شما اندیس دار است، حتما آن را به صورت اندیس دار تعریف کنید. به عنوان مثال اگر متغیر Xj دارید، در تعریف متغیر آن را دقیقا به صورت Xj تعریف کنید، و نه به صورت X.
6- محدودیتهای زائد مدل را تشخیص داده و آنها را حذف کنید. این عمل بسیار به حل مدل کمک میکند.
7- در صورتی که جواب تعدادی از متغیرها را از قبل میدانید، آنها را Fix کنید.
8- تعدادی 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
شماره تماس: 3325-405–0919
باسلام و ممنون از یاست عالیتون. تعداد داده هام خیلی زیاده و برای استفاده از uniform مجبور شدم چندین loop استفاده کنم ولی متاسفانه ارور out of memory میده. برا حلش چیکاکنم؟ بنظرتون روش بندرز حلش میکنه؟ یا مثلا استفاده از ابر کامپیوتر ؟
سلام
مرسی.
loop شما فکر نکنم رو مدل تأثیری داشته باشه. خود مدل اینجوری هست. چون لوپ که تو محدودیتا نمیاد.
بله حتما. ممکنه کمک بکنه اینا.
سلام. وقت بخير آقاي محمودي. ببخشيد يه مشكلي براي من پيش اومده. من ٢٠ تا مسئله رو با سيپلكس ران گرفتم الان كه به سايز بزرگ رسيدم ديدم بعد ٥٠٠٠ ثانيه متوقف شده و جوابشم شده دو برابر جواب متلب و يه پنجره برام باز شد كه توش نوشته بود close programs و اينطور چيزا. چكار بايد كنم درست شه؟؟
سلام
دقیقا نمیدونم مشکل چیه، ولی قطعا شرط توقف زمانی رو باید ببرید بالای 5000، مث 20000 اینا. البته شاید لازم نباشه و تو گزارش بگین که تو 5 هزار ثانیه به جواب نرسیده پس ما هم فرا ابتکاری رو گزارش میکنیم.
با سلام
من در مسله ام که غیر خطی عدد صحیح هست بت مشکل حافظه رو به رو شده ام
با سالور bonmin در سایز 2در 6 برای مسله مکان یابی مسیریابی حل کرده همین که سایز مسله 2 در 8 میشه ارور میده بنظرتون چه کار کنم
ممنون میشم
سلام
با یه سالور دیگه میتونین امتحان کنین. مثل لیندو.
متن خطا چیه؟
با سلام و تشکر از سایت خوبتون
من یه سناریو دارم که از 24 عدد تشکیل شده! میخوام این سناریو رو به گمز بدم و بهم تعداد زیادی سناریو از روس اون سناریوی اول بده، بعد این سناریو ها رو بگیره و ده تا از بهترین سناریو ها رو تشخیص بده و بهم بگه!
هرچی سرچ کردم کاهش سناریو ها رو فقط پیدا کردم که بوسیله SCENRED تو گمز نوشته میشه که اونم اگه راهنماییم کنین ممنونتون میشم، ولی تولید سناریوهای زیاد رو نتونستم پیدا کنم!ممنون میشم راهنمایی کنین.
جهت تکمیل فرمایشات خانم مهندس رمضانی، رویه به این صورت هست که شما تعدادی سناریو زیاد دارین. بعد توسط یه رویه ی مشخص، محتملترین ها، یا مفیدترین ها رو انتخاب میکنین، به این میگن کاهش سناریو. حالا برای یادگیریش شما باید تعدادی فایل و کد آماده که تو خود سایت گمز موجود هست رو مطالعه کنین. از سایتهای رشته برق هم میتونین استفاده کنین
نه متاسفانه با تغییر اسم هم خطا تغییر نمی کنه
با سلام
از پاسخ شما بسیار سپاسگزارم.
در پنجره گزارش مسیر پایین طی میشه:
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
سلام
لطفا کد رو به ایمیل سایت بفرستید.
و اینکه وقتی داریم تو سایت در مورد یه چیزی صحبت میکنیم. “پاسخ دادن” رو بزنین که بحث گم نشه وسط کامنتها. مرسی
با سلام
یک هفته ای میشه که کد رو به ایمیل سایت ارسال کردم
به دستتون نرسیده؟
چرا رسیده. برای همکاران ارسال شده. به محض رسیدن به جواب، نتیجه به اطلاعتون میرسه
سپاسگزام.
با سلام
از مطالب مفید و خوب شما سپاسگزارم.
چند وقتی که موقع احرای برنامه ام با خطای سیستمی
مواجه می شوم
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 دقت کنین). برای سایت هم ارسال کنین، ببینم مشکل اصلی از چی میتونه باشه
با سلام و احترام
اولا از سایت مفید و پربارتون بسیار سپاسگزارم
ببخشید من یه سوال داشتم
من یک مدل 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 را بلد نیستم
سلام
میتونید که کد رو بفرستید. یا اینکه اون متغیری که از حد میگذره رو پیدا کنین، و طی یه سری عملیات مقادرش رو بر یه عدد بزرگ تقسیم کنین. احتمالا مشکل تابع هدفه باشه
با سلام و احترام
بسیار سپاسگزارم
کد را از طریق ایمیل سایت براتون ارسال کردم
با تشکر فراوان
سلام
فایل اصلاحی برای RTMAX ارسال شد.