۳

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

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

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

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

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

  1. با سلام و احترام و تشکر بابت پاسخ هایی که تا الان داده اید
    من کدی که مربوط به حالت خاصی از مسئله TSP هست رو ران می کنم. این کار رو هم رو سروری با حدود ۲۰ ترد و ۸۰ گیگ رم ران میکنم ولی متاسفانه به جهت محاسبات زیاد نیازمند رم بیشتری هست و در جایی که ۰٫۶۷% گپ رو نشون میده ارور کم بودن رم رو میده و اجرا رو متوقف می کنه…آیا در گمز روشی وجود دارد که بواسطه اون بشه استفاده از رم رو مدیریت کرد و جلوی توقف کد رو گرفت … اگر زمانش طولانی بشه مسئله ای نیست. مهم اینه که اجرا رو تا آخر بره

    ممنون از بابت پاسخهاتون

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

پاسخ دهید

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