رفع مشکل تحدب در مسایل درجه دو در نرم‌افزار IBM Ilog CPLEX

در این پست قصد داریم یکی از خطاهای مهمی که کاربران به دلیل مشکلات تحدب به آن دچار می‌شوند را بررسی و راهکارهایی برای رفع آن ارائه دهیم.

CPLEX Error 5002: Q in objective is not positive semi-definite (psd)

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

حال سوال این است که در صورتی که مساله‌ی مورد نظر کمینه‌سازی بوده و دارای تابع هدف درجه دو مقعر باشد، واکنش نرم افزار چیست؟ جواب: در حالت پیش فرض نرم افزار، با خطای CPLEX Error 5002 مواجه خواهید شد. از طریق تنظیمات خود نرم افزار دو راهکار عمده برای رفع این مشکل می‌توان ارائه داد.

روش‌های تبدیل متعددی برای رفع این مشکل وجود دارد لیکن با تنظیم پارامتر solutiontarget نرم افزار می‌توان آن را به سادگی مدیریت نمود. ابتدا یک بلوک کد از جنس execute به عنوان پیش‌پردازنده قرار داده و مقدار پارامتر solutiontarget را به یکی از مقادیر ۲ یا ۳ تغییر می‌دهیم. با تغییر این مقدار به عدد ۲، نرم افزار جوابی که شرایط اولیه بهینگی را ارضا می‌کند را منتشر می‌کند. این جواب لزوما بهینه نیست و بایستی شرایط ثانویه آن نیز آزمایش شود.

execute {
cplex.solutiontarget = 2;
}

متعاقبا با تغییر این مقدار به عدد ۳، نرم افزار به کمک تکنیک‌هایی چون تبدیل به همتای محدب، فاکتوریزاسیون و شاخه و حد فضایی جواب بهینه سراسری مساله را جستجو می‌کند.

1 دیدگاه
Inline Feedbacks
View all comments
eshtav
ژوئن 9, 2018 10:15 ب.ظ

با سلام
خوب بود، ای کاش بیشتر توضیح میدادید.