ساختار یک کد ساده در GAMS
یک کد GAMS برای مدلسازی و حل یک مسئله بهینهسازی شامل بخشهای زیر است:
- مجموعهها (Sets): برای سازماندهی دادهها (مثل شهرها یا محصولات).
- پارامترها (Parameters): دادههای ثابت (مثل هزینه یا تقاضا).
- متغیرها (Variables): مقادیر تصمیمگیری که GAMS محاسبه میکند.
- معادلات (Equations): تابع هدف و محدودیتها.
- مدل (Model): ترکیب تمام اجزا.
- حل (Solve): اجرای مدل با یک حلکننده.
- نمایش نتایج (Display): نمایش مقادیر بهینه.
این ساختار به شما امکان میدهد یک مسئله بهینهسازی را از ابتدا تا انتها مدل کنید و حل کنید.
مثال عملی: مسئله حملونقل ساده
فرض کنید میخواهید هزینه حمل کالا از یک انبار به سه شهر (تهران، شیراز، اصفهان) را کم کنید. هر شهر تقاضای مشخصی دارد و هزینه حمل متفاوت است. کد کامل GAMS برای این مسئله بهصورت زیر است:
* تعریف مجموعهها
Sets
i "شهرهای مقصد" /Tehran, Shiraz, Isfahan/;
* تعریف پارامترها
Parameters
c(i) "هزینه حمل به هر شهر (هزار تومان)" /Tehran 50, Shiraz 100, Isfahan 80/
d(i) "تقاضای هر شهر (واحد)" /Tehran 200, Shiraz 300, Isfahan 250/
s "ظرفیت انبار (واحد)" /۵۰۰/;
* تعریف متغیرها
Variables
x(i) "مقدار حمل به هر شهر (واحد)"
z "هزینه کل (هزار تومان)";
Positive Variable x;
* تعریف معادلات
Equations
Cost "هزینه کل"
Demand(i) "تقاضای هر شهر"
Supply "محدودیت ظرفیت انبار";
Cost.. z =e= sum(i, c(i)*x(i));
Demand(i).. x(i) =g= d(i);
Supply.. sum(i, x(i)) =l= s;
* تعریف و حل مدل
Model Transport /all/;
Solve Transport using LP minimizing z;
* نمایش نتایج
Display x.l, z.l;
توضیح کد
- مجموعهها: i شامل سه شهر (تهران، شیراز، اصفهان).
- پارامترها:
- c(i): هزینه حمل به هر شهر (مثل ۵۰ هزار تومان برای تهران).
- d(i): تقاضای هر شهر (مثل ۲۰۰ واحد برای تهران).
- s: ظرفیت انبار (۵۰۰ واحد).
- متغیرها:
- x(i): مقدار کالای حملشده به هر شهر (مثبت).
- z: هزینه کل (آزاد).
- معادلات:
- Cost: هزینه کل (z) برابر مجموع هزینههای حمل (c(i)*x(i)).
- Demand: مقدار حمل به هر شهر (x(i)) حداقل برابر تقاضا (d(i)).
- Supply: مجموع حمل (su