علت تفاوت جواب گمز در سیستم های مختلف

علت اینکه یک کد در سیستم های مختلف جواب های مختلف می دهد چیست؟

احتمالا براتون پیش اومده که یه کد رو تو دو سیستم مختلف، با کانفیگ، نسخه های گمز و لایسنس های یکسان ران میکنین ولی جواب های متفاوتی میگیرین!
دو تا مشکل اصلی وجود داره که باید بررسیش کنین.
اگه مدلتون خطیه، از سالور خطی مثل cplex استفاده کنین و option های optcr, optca رو باید برابر صفر قرار بدین.
برای این نوع مدلها، مشکل احتمالا از M بزرگ هست. بیشتر کاربران عدد خیلی بزرگی رو مثل یک میلیون به بالا براش در نظر میگیرن. دقت کنین که M تعریف خاصی داره! بیاین تعریفش رو با هم مرور کنیم.
“ام بزرگ کوچکترین عددی است که منطق محدودیت را رعایت میکند”
این تعریف تاکید میکنه که عدد خیلی بزرگ نباید بذارین. پس محدودیت. و تحلیل کنین، و مناسب ترین M رو براش در نظر بگیرین.
مثال: x یک متغیر مثبت که با توجه به شناختی که از مسئله داریم، حداکثر تا ۲۰ بتونه عدد بگیره، یعنی حد بالاش ۲۰ باشه. Y هم یه متغیر صفر و یک باشه.
حالا میخوام به محدودیت بگیم که x تنها وقتی بتونه عدد بگیره که y برابر یک باشه. این میشه محدودیتش:
X=l=M*y
تو این حالت m رو باید حدود ۲۰ ۲۱ باید بگیریم. البته مقداری بیشتر هم مشکلی پیش نمیاد.
برای مدلهای غیر خطی هم باید شرایط بالا رعایت بشه. اگه فضای مدل محدب باشه، برای حلش مشکلی پیش نمیاد، مگه اینکه منابع سالور مثل رم، تکرار، زمان برای حل کافی نباشه، یا اینکه سالور ضعیف باشه.
برای مدلها با فضای غیر محدب هم تو نسخه های مختلف احتمالش هست که سالورای مختلف جوابای یکسانی ندن. یا حتی یک سالور تو دو سیستم جواب یکسانی ندن. که این برمیگرده به منابع در دسترس سیستم.
نکات M، شرط ها، آپشن ها رو رعایت کنین.
توصیه ما اینه که از نسخه های ۲۴٫۷ به بالا استفاده کنین.

این مقاله برای شما مفید بود؟

مطالب مشابه

دیدگاهی دارید؟