سه راهکار عمده جهت رفع خطای کمبود حافظه در نرم افزار CPLEX

در پست قبلی اشاره شد که چه عواملی منجر به ایجاد خطای کمبود حافظه (out of memory) در نرم افزار IBM Ilog CPLEX می‌شود. در این پست سه راهکار عمده جهت برطرف‌سازی این خطا را بررسی می کنیم. اولین و ساده‌ترین راهکار ممکن تغییر پارامتر thread به مقدار ۱ است. برای این منظور کافی است که یک بلوک پیش‌پردازنده‌ی execute به صورت زیر در ابتدای کد قرار داده شود.

execute {
 cplex.threads = 1;
}

با انجام این عمل، پردازش از حالت موازی خارج شده و جستجو به صورت تک نخی (single threading) صورت می‌گیرد. در این حالت به حجم حوضچه‌ی جواب (solution pool) کمتری نیاز خواهد بود.

راهکار بعدی اجازه دسترسی به مقدار بیشتری از حافظه موقت (RAM) هست. در حالت عادی نرم افزار تنها اجازه‌ی دسترسی به ۲ گیگابایت از فضای موقت را دارد.

execute {
 cplex.workmem = 4000;
}

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

execute {
 cplex.lpmethod = 1;
}
0 Comments
Inline Feedbacks
View all comments