آموزش GAMS – قسمت ۱۷ : مدل‌سازی با متغیرهای باینری در GAMS

برای شروع یادگیری همین حالا تماس بگیرید ...

در قسمت‌های قبلی مجموعه آموزشی GAMS سایت بهینه‌یار، با تحلیل حساسیت و مسائل چندمحصولی آشنا شدیم. حالا در قسمت نوزدهم، به سراغ مدل‌سازی با متغیرهای باینری می‌رویم. متغیرهای باینری (۰ یا ۱) برای تصمیم‌گیری‌های گسسته (مثل انتخاب یا عدم انتخاب یک مسیر) استفاده می‌شوند. این آموزش برای مبتدیان طراحی شده و با یک مثال عملی در GAMS IDE، نحوه استفاده از متغیرهای باینری در یک مسئله حمل‌ونقل را یاد می‌گیرید. بیایید شروع کنیم!

آخرین اخبار مهندسی صنایع و مدیریت

پایان نامه ارشد زنجیره تامین
انجام پایان‌نامه مهندسی صنایع ارشد در حوزه زنجیره تأمین؛ یک راهنمای جامع و تخصصی برای دانشجویان
زمان مطالعه: 5 دقیقه
استخراج مقاله از پایان نامه مهندسی صنایع
آموزش استخراج مقاله از پایان‌نامه مهندسی صنایع | راهنمای تخصصی برای دانشجویان صنایع
قیمت پایان نامه مهندسی صنایع
هزینه انجام پایان نامه مهندسی صنایع در سال ۱۴۰۴
زمان مطالعه: 5 دقیقه
انتخاب موضوع پایان نامه
موضوعات پایان‌نامه مهندسی صنایع ۱۴۰۴ + ۵۰ موضوع جدید و قابل استخراج مقاله ISI
زمان مطالعه: 5 دقیقه
انتخاب موضوع پایان نامه مهندسی صنایع
انتخاب موضوع پایان نامه مهندسی صنایع از صفر تا صد، راهنمای کامل برای دانشجویان
مصاحبه استخدام مهندسی صنایع
مصاحبه استخدام مهندسی صنایع، ۴ سرفصل مهم و هرآنچه که باید بدانید
زمان مطالعه: 3 دقیقه

متغیرهای باینری چیست؟

در GAMS، متغیرهای باینری فقط مقادیر ۰ یا ۱ می‌گیرند و برای مدل‌سازی تصمیم‌های گسسته (مثل روشن/خاموش یا انتخاب/عدم انتخاب) مناسب‌اند. در مسائل حمل‌ونقل، ممکن است بخواهید تصمیم بگیرید که آیا یک مسیر خاص (مثل ارسال محصول به یک شهر) استفاده شود یا خیر.

کاربردهای متغیرهای باینری

  • انتخاب مسیر: تصمیم‌گیری برای استفاده یا عدم استفاده از یک مسیر حمل.
  • فعال‌سازی محدودیت: اعمال یا لغو یک شرط خاص.
  • مسائل گسسته: مثل انتخاب تعداد کامیون‌ها یا انبارها.

چرا متغیرهای باینری مهم‌اند؟

  • واقع‌گرایی: بسیاری از مسائل واقعی نیاز به تصمیم‌های گسسته دارند.
  • پیچیدگی: اضافه کردن متغیرهای باینری مدل را به برنامه‌ریزی مختلط (MIP) تبدیل می‌کند.
  • انعطاف‌پذیری: امکان مدل‌سازی سناریوهای پیچیده‌تر.

مدل‌سازی با متغیرهای باینری در GAMS IDE

برای این آموزش، یک مسئله حمل‌ونقل چندمحصولی را مدل می‌کنیم که در آن متغیرهای باینری تصمیم می‌گیرند کدام مسیرها (شهر-محصول) استفاده شوند. داده‌ها از اکسل وارد می‌شوند.

مرحله ۱: ساختار فایل اکسل

فایل اکسل (data_binary.xlsx) برای مسئله حمل‌ونقل چندمحصولی:

  • Sheet1 (هزینه‌ها)

  • Sheet2 (تقاضاها)

فایل را در پوشه پروژه GAMS IDE (مثل C:\GAMS\workdir) ذخیره کنید.

مرحله ۲: تبدیل اکسل به GDX

  1. فایل GAMS جدید (convert_binary.gms) در GAMS
* تبدیل اکسل به GDX برای مسئله باینری
Sets
  i "شهرها"
  j "محصولات";
Parameters
  c(i,j) "هزینه حمل"
  d(i,j) "تقاضا";
$call gdxxrw data_binary.xlsx par=c rng=Sheet1!A1:C7 par=d rng=Sheet2!A1:C7
$gdxout data_binary.gdx
$unload i j c d
$gdxout
  1. با کلید F9 اجرا کنید تا data_binary.gdx ایجاد شود.

مرحله ۳: کد GAMS با متغیرهای باینری

کد زیر مدل حمل‌ونقل را با متغیرهای باینری برای انتخاب مسیرها حل می‌کند:

* مدل حمل‌ونقل چندمحصولی با متغیرهای باینری در GAMS IDE
$Ontext
این مدل با متغیرهای باینری تصمیم می‌گیرد کدام مسیرهای حمل استفاده شوند.
$Offtext

* تعریف مجموعه‌ها
Sets
  i "شهرهای مقصد"
  j "محصولات";

* تعریف پارامترها
Parameters
  c(i,j) "هزینه حمل (هزار تومان)"
  d(i,j) "تقاضای هر شهر و محصول (واحد)"
  s "ظرفیت انبار (واحد)";

* وارد کردن داده‌ها از فایل GDX
$gdxin data_binary.gdx
$load i j c d
$gdxin
s = 1500;

* تعریف متغیرها
Variables
  x(i,j) "مقدار حمل هر محصول به هر شهر (واحد)"
  y(i,j) "تصمیم باینری برای استفاده از مسیر (۰ یا ۱)"
  z "هزینه کل (هزار تومان)";
Positive Variable x;
Binary Variable y;

* تعریف معادلات
Equations
  Cost "هزینه کل"
  Demand(i,j) "تقاضای هر شهر و محصول"
  Supply "محدودیت ظرفیت انبار"
  BinaryConstraint(i,j) "پیوند متغیر باینری و مقدار حمل";

Cost.. z =e= sum((i,j), c(i,j)*x(i,j));
Demand(i,j).. x(i,j) =g= d(i,j)*y(i,j);
Supply.. sum((i,j), x(i,j)) =l= s;
BinaryConstraint(i,j).. x(i,j) =l= 1000*y(i,j);

* تعریف و حل مدل
Model TransportBinary /all/;
Solve TransportBinary using MIP minimizing z;

* نمایش نتایج
Display x.l, y.l, z.l;

توضیح کد

  • متغیرهای باینری:
    • y(i,j): متغیر باینری که مشخص می‌کند آیا مسیر (شهر-محصول) استفاده می‌شود (۱) یا خیر (۰).
    • Binary Variable y: نوع متغیر y را باینری تعریف می‌کند.
  • معادلات:
    • Cost: هزینه کل (z) برابر مجموع هزینه‌های حمل.
    • Demand: مقدار حمل (x(i,j)) حداقل برابر تقاضا (d(i,j)) است اگر مسیر انتخاب شود (y(i,j)=1).
    • Supply: مجموع حمل حداکثر برابر ظرفیت انبار (s).
    • BinaryConstraint: اگر y(i,j)=0 باشد، x(i,j)=0 می‌شود (حداکثر مقدار حمل ۱۰۰۰ برای فعال بودن مسیر).
  • حل مدل:
    • Solve TransportBinary using MIP: از حل‌کننده MIP (برنامه‌ریزی مختلط) استفاده می‌کند، زیرا متغیر باینری داریم.
  • اجرا در GAMS IDE:
    • فایل را ذخیره کنید (مثل transport_binary.gms).
    • با کلید F9 اجرا کنید.
    • خروجی در پنجره Output یا فایل .lst نمایش داده می‌شود.

خروجی نمونه

در فایل .lst یا پنجره Output:

x.l(Tehran,Product1)   200.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
y.l(Tehran,Product1)    1.000
y.l(Tehran,Product2)    1.000
y.l(Shiraz,Product1)    1.000
y.l(Shiraz,Product2)    1.000
y.l(Isfahan,Product1)   1.000
y.l(Isfahan,Product2)   1.000
z.l                    31750.000
  • توضیح: تمام مسیرها (y.l=1) انتخاب شده‌اند و مقدار حمل (x.l) تقاضاها را تأمین می‌کند. هزینه کل ۳۱۷۵۰ هزار تومان است.

نکات مهم در GAMS IDE

  • متغیر باینری: با Binary Variable تعریف می‌شود و مدل را به MIP تبدیل می‌کند.
  • حل‌کننده MIP: CPLEX یا GUROBI برای مسائل باینری مناسب‌اند.
  • خطاها: اگر مدل حل نشد (مثلاً Infeasible)، فایل .lst را برای مشکلات محدودیت‌ها بررسی کنید.
  • GAMS IDE: خروجی را در پنجره Output ببینید و از کامنت‌ها برای مستندسازی استفاده کنید.

نکات کلیدی

  • متغیرهای باینری: برای تصمیم‌های گسسته (۰ یا ۱) مثل انتخاب مسیر.
  • مدل MIP: با متغیرهای باینری، حل‌کننده MIP (مثل CPLEX) استفاده می‌شود.
  • GAMS IDE: اجرای کد با F9 و بررسی خروجی در پنجره Output.
  • کاربرد: برای مسائل واقعی مثل انتخاب مسیر یا انبار.

گام بعدی

در قسمت بعدی، با مدل‌سازی محدودیت‌های منطقی آشنا می‌شوید تا شرایط پیچیده‌تر را مدل کنید. فایل‌های نمونه و ویدئوهای این دوره را از سایت بهینه‌یار دانلود کنید!

کلمات کلیدی: آموزش GAMS، متغیرهای باینری در GAMS IDE، مدل‌سازی بهینه‌سازی، مسائل گسسته، بهینه‌یار

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *