در قسمتهای قبلی مجموعه آموزشی GAMS سایت بهینهیار، با اجزای اصلی مدل در GAMS آشنا شدیم. حالا در قسمت هفتم، به سراغ تعریف مجموعهها (Sets) میرویم. مجموعهها یکی از مهمترین اجزای مدلسازی در GAMS هستند و به شما کمک میکنند دادهها را بهصورت سازمانیافته تعریف کنید. این آموزش برای مبتدیان طراحی شده و با یک مثال ساده، نحوه تعریف مجموعهها را یاد میگیرید. بیایید شروع کنیم!
مجموعهها (Sets) چیست؟
در GAMS، مجموعهها (Sets) لیستهایی از عناصر هستند که برای سازماندهی دادهها استفاده میشوند. مجموعهها مثل دستهبندیهایی هستند که دادههای شما (مثل شهرها، محصولات، یا زمانها) را گروهبندی میکنند. با استفاده از مجموعهها، میتوانید مدلهای پیچیده را سادهتر کنید و دادهها را بهصورت کارآمد مدیریت کنید.
ویژگیهای مجموعهها
- ساختار ساده: مجموعهها میتوانند شامل اعداد، کلمات، یا حتی ترکیبی از آنها باشند.
- انعطافپذیری: میتوانید مجموعههای تکبعدی (مثل لیست شهرها) یا چندبعدی (مثل جفت شهرها) تعریف کنید.
- کاربرد: برای تعریف پارامترها، متغیرها، و معادلات در مدل استفاده میشوند.
نحوه تعریف مجموعهها در GAMS
مجموعهها با کلمه کلیدی Sets تعریف میشوند. ساختار کلی به این شکل است:
Sets
name "توضیح" /element1, element2, .../;
- name: نام مجموعه (مثل i یا cities).
- “توضیح”: توضیح اختیاری برای خوانایی.
- element1, element2, …: عناصر مجموعه.
مثال ساده: تعریف مجموعه شهرها
فرض کنید میخواهید هزینه حمل کالا بین چند شهر را مدل کنید. ابتدا مجموعهای برای شهرها تعریف میکنید:
Sets
i "شهرهای ایران" /Tehran, Shiraz, Isfahan/;
- i: نام مجموعه.
- “شهرهای ایران”: توضیح برای خوانایی.
- Tehran, Shiraz, Isfahan: عناصر مجموعه.
تعریف مجموعه با اعداد
اگر بخواهید مجموعهای از اعداد (مثل شماره ماهها) تعریف کنید:
Sets
m "ماههای سال" /۱*۱۲/;
- ۱*۱۲: بهمعنای اعداد ۱ تا ۱۲ (شامل ۱، ۲، …, ۱۲).
مجموعههای چندبعدی
برای مسائل پیچیدهتر، میتوانید مجموعههای چندبعدی تعریف کنید. مثلاً جفت شهرها برای حملونقل:
Sets
i "شهرها" /Tehran, Shiraz, Isfahan/
j(i,i) "جفت شهرها";
- j(i,i): مجموعهای از تمام جفتهای ممکن بین شهرها (مثل Tehran-Shiraz، Shiraz-Isfahan).
نکات مهم در تعریف مجموعهها
- خوانایی: همیشه از توضیحات (مثل “شهرهای ایران”) استفاده کنید تا کد خواناتر شود.
- نامگذاری: نام مجموعهها باید کوتاه و معنادار باشد (مثل i، j، یا cities).
- عناصر منحصربهفرد: عناصر مجموعه نباید تکراری باشند.
- اندازه مجموعه: برای مسائل بزرگ، میتوانید مجموعهها را از فایل اکسل یا دیتابیس وارد کنید (در آموزشهای بعدی).
مثال عملی: مسئله حملونقل
فرض کنید میخواهید هزینه حمل کالا از یک انبار به سه شهر (تهران، شیراز، اصفهان) را کم کنید:
- مجموعه: شهرها (i) را تعریف میکنید.
- کاربرد: این مجموعه برای تعریف هزینهها (پارامترها) و مقدار حمل (متغیرها) استفاده میشود.
- کد نمونه:
Sets
i "شهرهای مقصد" /Tehran, Shiraz, Isfahan/;
Display i;
- دستور Display i عناصر مجموعه (Tehran, Shiraz, Isfahan) را در خروجی نشان میدهد.
در قسمتهای بعدی، از این مجموعه برای تعریف پارامترها و متغیرها استفاده میکنیم.
نکات کلیدی
- مجموعهها: برای سازماندهی دادهها مثل شهرها یا محصولات استفاده میشوند.
- تعریف ساده: با کلمه کلیدی Sets و لیست عناصر تعریف میشوند.
- انعطافپذیری: میتوانند تکبعدی یا چندبعدی باشند.
- کاربرد: پایهای برای تعریف پارامترها، متغیرها، و معادلات.
گام بعدی
در قسمت بعدی، با تعریف پارامترها (Parameters) آشنا میشوید و یاد میگیرید چگونه دادههای ثابت (مثل هزینه یا ظرفیت) را به مدل اضافه کنید. فایلهای نمونه و ویدئوهای این دوره را از سایت بهینهیار دانلود کنید!
کلمات کلیدی: آموزش GAMS، تعریف مجموعهها در GAMS، مدلسازی بهینهسازی، GAMS برای مبتدیان، بهینهیار