چرا خروجی را به اکسل ذخیره کنیم؟
ذخیره نتایج در اکسل:
- تحلیل آسان: امکان استفاده از ابزارهای اکسل (مثل نمودارها) برای تحلیل نتایج.
- اشتراکگذاری: فایلهای اکسل برای ارائه به مدیران یا تیمها مناسباند.
- مستندسازی: ذخیره نتایج برای پروژههای بزرگ و چندمرحلهای.
GAMS IDE از ابزار GDX (GAMS Data eXchange) و دستور gdxxrw برای انتقال نتایج به اکسل استفاده میکند.
مراحل خروجی دادن به اکسل در GAMS IDE
برای ذخیره نتایج مدل در اکسل:
- اجرای مدل: مدل را در GAMS IDE اجرا کنید و نتایج (مثل متغیرها) را محاسبه کنید.
- ذخیره در GDX: نتایج را در یک فایل .gdx ذخیره کنید.
- تبدیل به اکسل: از ابزار gdxxrw برای انتقال دادهها از فایل .gdx به اکسل استفاده کنید.
مرحله ۱: مدلسازی و اجرای مدل
از مدل حملونقل چندمحصولی استفاده میکنیم (مشابه قسمتهای قبل). دادهها از اکسل وارد شده و نتایج در اکسل ذخیره میشوند.
ساختار فایل اکسل ورودی
فایل اکسل (data_output.xlsx) برای مسئله حملونقل چندمحصولی:
- Sheet1 (هزینهها)

- Sheet2 (تقاضاها)

- تبدیل اکسل به GDX برای مسئله
فایل را در پوشه پروژه GAMS IDE (مثل C:\GAMS\workdir) ذخیره کنید.
مرحله ۲: تبدیل اکسل ورودی به GDX
- فایل GAMS جدید (convert_output.gms) در GAMS IDE
* تبدیل اکسل به GDX برای مسئله
Sets
i "شهرها"
j "محصولات";
Parameters
c(i,j) "هزینه حمل"
d(i,j) "تقاضا";
$call gdxxrw data_output.xlsx par=c rng=Sheet1!A1:C7 par=d rng=Sheet2!A1:C7
$gdxout data_output.gdx
$unload i j c d
$gdxout
- با کلید F9 اجرا کنید تا data_output.gdx ایجاد شود.
مرحله ۳: کد GAMS برای مدل و خروجی به اکسل
کد زیر مدل را اجرا میکند، نتایج را در فایل GDX ذخیره میکند و سپس به اکسل منتقل میکند:
* مدل حملونقل چندمحصولی با خروجی به اکسل در GAMS IDE
$Ontext
این مدل هزینه حمل را کمینه میکند و نتایج را به فایل اکسل ذخیره میکند.
$Offtext
* تعریف مجموعهها
Sets
i "شهرهای مقصد"
j "محصولات";
* تعریف پارامترها
Parameters
c(i,j) "هزینه حمل (هزار تومان)"
d(i,j) "تقاضای هر شهر و محصول (واحد)"
s "ظرفیت انبار (واحد)"
x_result(i,j) "نتایج مقدار حمل برای ذخیره"
z_result "نتیجه هزینه کل برای ذخیره";
* وارد کردن دادهها از فایل GDX
$gdxin data_output.gdx
$load i j c d
$gdxin
s = 1500;
* تعریف متغیرها
Variables
x(i,j) "مقدار حمل هر محصول به هر شهر (واحد)"
z "هزینه کل (هزار تومان)";
Positive Variable x;
* تعریف معادلات
Equations
Cost "هزینه کل"
Demand(i,j) "تقاضای هر شهر و محصول"
Supply "محدودیت ظرفیت انبار";
Cost.. z =e= sum((i,j), c(i,j)*x(i,j));
Demand(i,j).. x(i,j) =g= d(i,j);
Supply.. sum((i,j), x(i,j)) =l= s;
* تعریف و حل مدل
Model TransportOutput /all/;
Solve TransportOutput using LP minimizing z;
* ذخیره نتایج در پارامترها
x_result(i,j) = x.l(i,j);
z_result = z.l;
* ذخیره نتایج در فایل GDX
$gdxout results_output.gdx
$unload x_result z_result
$gdxout
* انتقال نتایج به فایل اکسل
$call gdxxrw results_output.gdx par=x_result rng=Sheet1!A1 par=z_result rng=Sheet2!A1 o=results.xlsx
توضیح کد
- وارد کردن دادهها:
- $gdxin data_output.gdx: دادههای ورودی از فایل data_output.gdx.
- $load i j c d: مجموعهها و پارامترها را میخواند.
- مدلسازی:
- معادلات: تابع هدف (Cost), تقاضا (Demand), ظرفیت (Supply).
- حل مدل: با حلکننده LP (مثل CPLEX).
- ذخیره نتایج:
- x_result(i,j) = x.l(i,j) و z_result = z.l: نتایج را در پارامترها ذخیره میکند.
- $gdxout results_output.gdx: نتایج را در فایل results_output.gdx ذخیره میکند.
- $call gdxxrw: نتایج را به فایل اکسل (results.xlsx) منتقل میکند.
- اجرا در GAMS IDE:
- فایل را ذخیره کنید (مثل transport_output.gms).
- با کلید F9 اجرا کنید.
- خروجی در فایل .lst و فایل اکسل (results.xlsx) قابلمشاهده است.
خروجی نمونه
در فایل اکسل (results.xlsx):
- Sheet1 (مقدار حمل)

- Sheet2 (هزینه کل):

- توضیح: مقدار حمل (x_result) تقاضاها را تأمین میکند و هزینه کل ۳۱۷۵۰ هزار تومان است.
نکات مهم در GAMS IDE
- ابزار gdxxrw: باید همراه GAMS نصب شده باشد. مسیر آن را در تنظیمات GAMS IDE بررسی کنید.
- مسیر فایلها: فایلهای data_output.xlsx, data_output.gdx, results_output.gdx, و results.xlsx باید در پوشه پروژه باشند.
- خطاها: اگر اکسل ایجاد نشد، پیامهای خطا در پنجره Output یا .lst را بررسی کنید (مثل مسیر اشتباه یا مشکل در gdxxrw).
- خوانایی: از کامنتها (* یا $Ontext/$Offtext) برای مستندسازی استفاده کنید.
نکات کلیدی
- خروجی به اکسل: نتایج مدل با gdxxrw به اکسل منتقل میشوند.
- GDX: واسطه برای ذخیره نتایج قبل از انتقال به اکسل.
- GAMS IDE: اجرای کد با F9 و بررسی فایل اکسل خروجی.
- کاربرد: برای تحلیل نتایج و اشتراکگذاری با دیگران.
گام بعدی
در قسمت بعدی، با حلقهها (Loops) در GAMS آشنا میشوید تا سناریوهای مختلف را بهصورت خودکار اجرا کنید. فایلهای نمونه و ویدئوهای این دوره را از سایت بهینهیار دانلود کنید!
کلمات کلیدی: آموزش GAMS، خروجی به اکسل در GAMS IDE، GDX در GAMS، مدلسازی بهینهسازی، بهینهیار