تحلیل حساسیت چیست؟
تحلیل حساسیت بررسی تأثیر تغییرات در پارامترهای مدل (مثل هزینه یا تقاضا) روی نتایج بهینه (مثل متغیرها یا تابع هدف) است. در GAMS، این کار با تغییر پارامترها و اجرای مجدد مدل یا بررسی مقادیر حاشیهای (Marginal Values) انجام میشود.
چرا تحلیل حساسیت مهم است؟
- درک تأثیرات: نشان میدهد کدام پارامترها بیشترین تأثیر را دارند.
- تصمیمگیری بهتر: به مدیران کمک میکند سناریوهای مختلف را ارزیابی کنند.
- رفع مشکلات: کمک میکند محدودیتهای بحرانی (مثل ظرفیت کم) را شناسایی کنید.
ابزارهای تحلیل حساسیت در GAMS
- مقادیر حاشیهای (.m): نشاندهنده حساسیت محدودیتها (مثل تقاضا یا ظرفیت).
- تغییر دستی پارامترها: تغییر دادهها (مثل هزینه یا تقاضا) و اجرای مجدد مدل.
- سناریوهای مختلف: اجرای مدل با چند مجموعه داده.
تحلیل حساسیت در GAMS IDE
برای تحلیل حساسیت، از مدل حملونقل چندمحصولی استفاده میکنیم و تأثیر تغییر تقاضا را بررسی میکنیم. دادهها از اکسل وارد میشوند.
مرحله ۱: ساختار فایل اکسل
فایل اکسل (data_multi.xlsx) همانند قسمت قبل:
- Sheet1 (هزینهها):

- Sheet2 (تقاضاها):

فایل را در پوشه پروژه GAMS IDE (مثل C:\GAMS\workdir) ذخیره کنید.
مرحله ۲: تبدیل اکسل به GDX
- فایل GAMS جدید (convert_multi.gms) در GAMS
* تبدیل اکسل به GDX
Sets
i "شهرها"
j "محصولات";
Parameters
c(i,j) "هزینه حمل"
d(i,j) "تقاضا";
$call gdxxrw data_multi.xlsx par=c rng=Sheet1!A1:C7 par=d rng=Sheet2!A1:C7
$gdxout data_multi.gdx
$unload i j c d
$gdxout
- با کلید F9 اجرا کنید تا data_multi.gdx ایجاد شود.
مرحله ۳: کد GAMS برای تحلیل حساسیت
کد زیر مدل را اجرا و مقادیر حاشیهای را نمایش میدهد. همچنین، تقاضا را تغییر میدهیم تا حساسیت را بررسی کنیم:
* مدل حملونقل چندمحصولی با تحلیل حساسیت در GAMS IDE
$Ontext
این مدل هزینه حمل را کمینه میکند و حساسیت تقاضا را بررسی میکند.
$Offtext
* تعریف مجموعهها
Sets
i "شهرهای مقصد"
j "محصولات";
* تعریف پارامترها
Parameters
c(i,j) "هزینه حمل (هزار تومان)"
d(i,j) "تقاضای هر شهر و محصول (واحد)"
d_new(i,j) "تقاضای جدید برای تحلیل حساسیت"
s "ظرفیت انبار (واحد)";
* وارد کردن دادهها از فایل GDX
$gdxin data_multi.gdx
$load i j c d
$gdxin
s = 1500;
* تنظیم تقاضای جدید (افزایش تقاضای Product1 در تهران)
d_new(i,j) = d(i,j);
d_new('Tehran','Product1') = 250; * افزایش تقاضا از ۲۰۰ به ۲۵۰
* تعریف متغیرها
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_new(i,j);
Supply.. sum((i,j), x(i,j)) =l= s;
* تعریف و حل مدل
Model TransportMulti /all/;
Solve TransportMulti using LP minimizing z;
* نمایش نتایج و مقادیر حاشیهای
Display x.l, z.l, Demand.m, Supply.m;
توضیح کد
- دادهها:
- $load i j c d: مجموعهها و پارامترها از data_multi.gdx.
- d_new(i,j): تقاضای جدید برای تحلیل حساسیت (تقاضای Product1 در تهران از ۲۰۰ به ۲۵۰ افزایش یافته).
- معادلات:
- Cost: هزینه کل (z) برابر مجموع هزینههای حمل.
- Demand: مقدار حمل (x(i,j)) حداقل برابر تقاضای جدید (d_new).
- Supply: مجموع حمل حداکثر برابر ظرفیت انبار (s).
- تحلیل حساسیت:
- Demand.m: مقادیر حاشیهای محدودیتهای تقاضا (حساسیت به تغییر تقاضا).
- Supply.m: مقدار حاشیهای محدودیت ظرفیت (حساسیت به ظرفیت انبار).
- اجرا در GAMS IDE:
- فایل را ذخیره کنید (مثل transport_sensitivity.gms).
- با کلید F9 اجرا کنید.
- خروجی در پنجره Output یا فایل .lst نمایش داده میشود.
خروجی نمونه
در فایل .lst یا پنجره Output:
x.l(Tehran,Product1) 250.000
x.l(Tehran,Product2) 150.000
x.l(Shiraz,Product1) 300.000
x.l(Shiraz,Product2) 100.000
x.l(Isfahan,Product1) 250.000
x.l(Isfahan,Product2) 120.000
z.l 32450.000
Demand.m(Tehran,Product1) 50.000
Demand.m(Tehran,Product2) 60.000
...
Supply.m 0.000
- توضیح:
- هزینه کل به ۳۲۴۵۰ هزار تومان افزایش یافت (به دلیل افزایش تقاضای Product1 در تهران).
- Demand.m(Tehran,Product1) = 50: افزایش یک واحد تقاضای Product1 در تهران هزینه را ۵۰ هزار تومان افزایش میدهد.
- Supply.m = 0: ظرفیت انبار هنوز استفادهنشده است (محدودیت غیرفعال).
نکات مهم در GAMS IDE
- مقادیر حاشیهای: Demand.m و Supply.m نشاندهنده حساسیت محدودیتها هستند.
- تغییر پارامترها: با تغییر d_new میتوانید سناریوهای مختلف را تست کنید.
- خطاها: اگر مدل Infeasible شود (مثلاً تقاضای کل > ظرفیت)، فایل .lst را بررسی کنید.
- GAMS IDE: خروجی را در پنجره Output یا .lst ببینید و از کامنتها برای مستندسازی استفاده کنید.
نکات کلیدی
- تحلیل حساسیت: تأثیر تغییرات پارامترها (مثل تقاضا) روی نتایج.
- مقادیر حاشیهای: Demand.m و Supply.m حساسیت محدودیتها را نشان میدهند.
- GAMS IDE: اجرای کد با F9 و بررسی خروجی در پنجره Output.
- کاربرد: برای ارزیابی سناریوها و شناسایی محدودیتهای بحرانی.
گام بعدی
در قسمت بعدی، با مدلسازی با متغیرهای باینری آشنا میشوید تا تصمیمگیریهای گسسته را مدل کنید. فایلهای نمونه و ویدئوهای این دوره را از سایت بهینهیار دانلود کنید!
کلمات کلیدی: آموزش GAMS، تحلیل حساسیت در GAMS IDE، مدلسازی بهینهسازی، مقادیر حاشیهای، بهینهیار