متغیرها (Variables) چیست؟
در GAMS، متغیرها مقادیری هستند که نرمافزار در فرآیند بهینهسازی محاسبه میکند. برخلاف پارامترها که ثابتاند، متغیرها مقادیر ناشناختهای هستند که GAMS برای رسیدن به بهترین جواب (مثل کمینه کردن هزینه یا بیشینه کردن سود) تعیین میکند.
ویژگیهای متغیرها
- تصمیمگیری: متغیرها نشاندهنده تصمیمهایی هستند که مدل میگیرد (مثل مقدار تولید یا حمل کالا).
- وابسته به مجموعهها: معمولاً روی مجموعهها (Sets) تعریف میشوند.
- انواع مختلف: میتوانند مثبت، منفی، باینری (۰ یا ۱)، یا عدد صحیح باشند.
انواع متغیرها در GAMS
GAMS از انواع مختلفی از متغیرها پشتیبانی میکند:
- متغیر آزاد (Free Variable):
- میتواند هر مقداری (مثبت، منفی، یا صفر) داشته باشد.
- مثال: سود کل یک شرکت.
- متغیر مثبت (Positive Variable):
- فقط میتواند مثبت یا صفر باشد (منفی نمیشود).
- مثال: مقدار کالای حملشده.
- متغیر باینری (Binary Variable):
- فقط ۰ یا ۱ میگیرد.
- مثال: تصمیم برای انتخاب یا عدم انتخاب یک مسیر.
- متغیر صحیح (Integer Variable):
- فقط مقادیر صحیح میگیرد (مثل ۱، ۲، ۳).
- مثال: تعداد ماشینهای موردنیاز.
نحوه تعریف متغیرها در GAMS
متغیرها با کلمه کلیدی Variables تعریف میشوند. ساختار کلی به این شکل است:
Variables
name(index) "توضیح";
[Positive/Binary/Integer] Variable name;
- name: نام متغیر (مثل x یا total_cost).
- index: مجموعهای که متغیر به آن وابسته است (مثل i برای شهرها).
- “توضیح”: توضیح اختیاری برای خوانایی.
- [Positive/Binary/Integer]: نوع متغیر (اختیاری، اگر آزاد باشد نیازی نیست).
مثال ساده: تعریف متغیر برای حملونقل
فرض کنید میخواهید مقدار کالای حملشده از یک انبار به چند شهر را مدل کنید. ابتدا مجموعهها و متغیرها را تعریف میکنید:
Sets
i "شهرهای مقصد" /Tehran, Shiraz, Isfahan/;
Variables
x(i) "مقدار کالای حملشده به هر شهر"
z "هزینه کل";
Positive Variable x;
- x(i): مقدار کالای حملشده به هر شهر (مثلاً ۵۰ واحد به تهران).
- z: هزینه کل (متغیر آزاد برای تابع هدف).
- Positive Variable x: تضمین میکند که x منفی نشود.
متغیرهای چندبعدی
برای مسائل پیچیدهتر، میتوانید متغیرهای چندبعدی تعریف کنید. مثلاً مقدار حمل بین جفت شهرها:
Sets
i "شهرها" /Tehran, Shiraz, Isfahan/;
Variables
y(i,i) "مقدار حمل بین شهرها";
Positive Variable y;
- y(i,i): مقدار کالای حملشده بین جفت شهرها (مثل Tehran به Shiraz).
نمایش نتایج متغیرها
برای دیدن مقادیر متغیرها پس از حل مدل، از دستور Display استفاده کنید:
Display x.l, z.l;
- x.l: مقادیر بهینه متغیر x (مثل مقدار حمل به هر شهر).
- z.l: مقدار بهینه هزینه کل.
مثال عملی: مسئله حملونقل
فرض کنید میخواهید هزینه حمل کالا از یک انبار به سه شهر (تهران، شیراز، اصفهان) را کم کنید:
- مجموعهها: شهرها (i)، قبلاً تعریف شدهاند.
- پارامترها: هزینه حمل به هر شهر (مثل ۵۰، ۱۰۰، ۸۰).
- متغیرها: مقدار حمل به هر شهر (x(i)) و هزینه کل (z).
- کد نمونه:
Sets i "شهرهای مقصد" /Tehran, Shiraz, Isfahan/; Parameters c(i) "هزینه حمل" /Tehran 50, Shiraz 100, Isfahan 80/; Variables x(i) "مقدار کالای حملشده" z "هزینه کل"; Positive Variable x; Equations Cost "هزینه کل" Demand(i) "تقاضای هر شهر"; Cost.. z =e= sum(i, c(i)*x(i)); Demand(i).. x(i) =g= 50; Model Transport /all/; Solve Transport using LP minimizing z; Display x.l, z.l; - توضیح:
- x(i): مقدار حمل به هر شهر (مثلاً ۵۰ واحد به تهران).
- z: هزینه کل (تابع هدف).
- معادله Cost: هزینه کل را محاسبه میکند.
- معادله Demand: تضمین میکند هر شهر حداقل ۵۰ واحد کالا دریافت کند.
- خروجی Display مقادیر بهینه x و z را نشان میدهد.
نکات کلیدی
- متغیرها: مقادیر تصمیمگیری هستند که GAMS محاسبه میکند.
- انواع: آزاد، مثبت، باینری، یا صحیح.
- تعریف: با Variables و وابسته به مجموعهها.
- نمایش: با Display مقادیر بهینه را ببینید.
گام بعدی
در قسمت بعدی، با تعریف معادلات (Equations) آشنا میشوید و یاد میگیرید چگونه تابع هدف و محدودیتها را به مدل اضافه کنید. فایلهای نمونه و ویدئوهای این دوره را از سایت بهینهیار دانلود کنید!
کلمات کلیدی: آموزش GAMS، تعریف متغیرها در GAMS، مدلسازی بهینهسازی، GAMS برای مبتدیان، بهینهیار