۰

تلرانس متغیرهای integer در گمز

هدف از حل مدلهای MIP رسیدن به یک جواب شدنی و بهینه است که باید متغیرهای integer دخیل در آن مقادیر صحیحی به خود بگیرند. در پاره ای از اوقات پیش می آید که در خروجی گمز مشاهده می شود که یک متغیر مثلا عددی نزدیک به صفر (مثلا ۳ میلیونم!) به خود گرفته است. این عدد از لحاظ مفهومی احتمالا نامفهوم و غیر کاربردی است. به عنوان مثال وقتی ما یک متغیر صفر و یک تعریف کرده ایم ولی در خروجی مقداری نزدیک به صفر مشاهده می کنیم، از لحاظ ما این امر پذیرفته نیست و فوری به دنبال راه چاره خواهیم گشت.

برای رفع این مشکل ابتدا باید به تلرانس مجاز متغیرهای عدد صحیح دقت کنیم. این تلرانس با آپشنی به نام epint در گمز تعریف شده است. آپشن به صورت دیفالت مقدار بین ۰ تا ۱e-5 را مجاز اعلام می کند. به عبارتی اگر متغیر عدد صحیح مقدار ۳ میلیونم را کسب کرد، گمز بدون ایراد هیچ مشکلی آن را مورد پذیرش قرار می دهد (در حالی که ممکن است منطقی هم نباشد) کاری که ما می توانیم علیه این گزارش گمز انجام دهیم این است که این آپشن را برابر صفر قرار دهیم یعنی epint=0 . در این صورت در صورت وجود جواب شدنی برای مسئله، گمز جواب دقیق عدد صحیح به ما ارائه خواهد داد. که البته ممکن است زمان حل مسئله بیشتر از قبل شود. پس اگر دنبال این جواب هستید حتما مقدار epint را تنظیم کنید.

از طرفی می توان از این آپشن به عنوان نوعی تلرانس مجاز برای متغیرها هم استفاده کرد. به عنوان مثال فردی ممکن است تمایل داشته باشد که برای متغیرهایش تلرانس ۰٫۰۱  در نظر بگیرد (این بستگی به هدف و چرایی مدل و کد دارد).

پاسخ دهید

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