پیشنیازی فعالیت ها در زمان بندی پروژه در گمز

سوالی که تقریبا برای همه ی ما پیش می آید. ◀️ لحاظ کردن پیش نیازی فعالیت ها یا پروژه ها در گمز فرض کنیم یک پروژه داریم که به تعدادی فعالیت تفکیک می شود. تعدادی از این فعالیت ها پیش نیاز فعالیت های دیگر هستند. مثلا تا فعالیت ۴ به […]

تلرانس در ناحیه شدنی

در بیشتر مسائلی که با آنها سر و کار داریم، محدودیت ها محدودیت های سخت نام دارند. به عبارتی وقتی میگوییم که عبارت سمت چپ باید از عبارت سمت راست کوچکتر باشد، این امر قطعی است و ما اجازه ی تخطی از آن را نخواهیم داد. توجه بفرمایید که تخطی […]

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

هدف از حل مدلهای MIP رسیدن به یک جواب شدنی و بهینه است که باید متغیرهای integer دخیل در آن مقادیر صحیحی به خود بگیرند. در پاره ای از اوقات پیش می آید که در خروجی گمز مشاهده می شود که یک متغیر مثلا عددی نزدیک به صفر (مثلا ۳ […]

ایجاد یک فایل GDX در گمز و نوشتن داده روی آن توسط دستور put

ایجاد فایل GDX و نوشتن داده روی آن راه های متفاوتی دارد، یک از این راه ها استفاده از دستور put است. کد زیر را در نظر بگیرید: در کد فوق ما ابتدا یک مجموعه و دو پارامتر a,b را تعریف کرده ایم، سپس توسط دستور file یک فایل به […]

انواع حلقه در گمز | GAMS loops

مانند هر زبان برنامه نویسی دیگر در گمز نیز حلقه ها انواع مختلفی دارند که بسته به کاربرد باید از یک یا ترکیبی از آنها استفاده نمود. در این تاپیک این حلقه ها به طور مختصر و مفید آموزش داده شده اند. در صورت وجود هر گونه سوالی در بخش […]

افزودن کامنت و متون اضافه به گمز

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

توزیع و چگالی نرمال، عدد تصادفی نرمال، معکوس نرمال

گمزبوک در این نوشتار قصد دارد به تابع نرمال بپردازد. قطعاً به هنگام استفاده از توزیع نرمال در مدل های خود با این سوال مواجه شده اید که آیا گمز داده ای تصادفی نرمال برای من تولید میکند؟ آیا میتوانم از تابع توزیع و تابع چگالی نرمال استفاده کنم؟ آیا […]

تولید اعداد تصادفی در نرم افزار گمز gams

تولید اعداد تصادفی در گمز نسبت به سایر نرم افزارها آسان تر است. شما با در دست داشتن توزیع مربوطه، می توانید به آسانی عدد تصادفی مربوطه را تولید نمایید. کد زیر نحوه ی تعریف اعداد تصادفی در gams را نشان می دهد.

مجموعه های چند بعدی – نحوه تعریف و کاربرد آنها

بارها و بارها تأکید کرده ایم که شما می توانید با تعریف مجموعه های چند بعدی هم سرعت حل مدل، هم نظم کد نویسی و هم دقت آن را بالا ببرید. به یاد داشته باشید، در مدل هایی که نیاز به تعریف set دارند، مهم ترین بخش همین تعریف set […]

معادلات، تابع هدف و محدودیت ها

مجموعه ی اندیس ها، پارامترها، جداول و متغیرهای مسئله تعریف شد. نوبت می رسد به وارد کردن معادلات، محدودیت ها، تابع هدف و… . همانطور که می دانید، مدل های بهینه سازی شامل دو بخش تابع هدف و محدودیت ها می شود.

تعریف متغیرها

در مطالب پیشین بیان شد که منظور از پارامتر در تحقیق در عملیات بخشی از داده ها است که از نظر ما معلوم هستند. ولی متغیر نوعی از داده ها است که به عنوان متغیر تصمیم مشهورند و یکی از اهداف حل مدل، محاسبه این مقادیر است.

دستور Table

جداول یا Tables دستوراتی هستند که برای ورود داده هایی که دارای دو یا بیش از دو بعد هستند به کار می رود. این جداول می توانند دو بعدی یا چند بعد (حتی بیشتر از ۲۰ تا) باشند. فرم کلی یک جدول دو بعدی به قرار زیر است.

Scalar

همانطور که در مطالب پیشین (پارامترها) در نرم افزار GAMS کمیت ها و اعداد ثابت را می توان با دستور Scalar تعریف نمود. توسط این دستور می توان به یک داده ی مشخص، عددی را نسبت داد. این عدد می تواند هر عددی (حقیقی یا غیر حقیقی) باشد. از طرفی […]

مجموعه ها

همانطور که در بخش وارد کردن داده های مسئله یا Data Entry بیان شد، در مدل هاییی که نیاز به تعریف مجموعه ای از اندیس ها یا زیر اندیس های می باشد باید از تعریف مجموعه های نظیر آنها شروع کرد.