آموزش GAMS – قسمت ۱۰ : دستور Solve و حل مدل

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

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

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

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

دستور Solve چیست؟

در GAMS، دستور Solve مدل تعریف‌شده (شامل مجموعه‌ها، پارامترها، متغیرها، و معادلات) را به یک حل‌کننده (Solver) ارسال می‌کند تا مسئله بهینه‌سازی حل شود. حل‌کننده‌ها الگوریتم‌های تخصصی هستند که مقادیر بهینه متغیرها (مثل مقدار حمل کالا) و تابع هدف (مثل هزینه کل) را محاسبه می‌کنند.

اجزای دستور Solve

دستور Solve ساختار زیر را دارد:

Solve model_name using solver_type minimizing/maximizing objective_variable;
  • model_name: نام مدل (مثل Transport) که در بخش Model تعریف شده.
  • solver_type: نوع حل‌کننده (مثل LP برای برنامه‌ریزی خطی یا NLP برای غیرخطی).
  • minimizing/maximizing: مشخص می‌کند که تابع هدف باید کمینه یا بیشینه شود.
  • objective_variable: متغیر تابع هدف (مثل z برای هزینه کل).

انواع حل‌کننده‌ها

GAMS از حل‌کننده‌های مختلفی پشتیبانی می‌کند:

  • CPLEX و GUROBI: برای مسائل خطی (LP) و مختلط (MIP).
  • BARON و CONOPT: برای مسائل غیرخطی (NLP).
  • MINOS: برای مسائل خطی و غیرخطی. برای مسائل ساده مثل برنامه‌ریزی خطی، CPLEX یا GUROBI انتخاب‌های خوبی هستند و در نسخه دموی GAMS در دسترس‌اند.
solver در gams

مثال عملی: حل مسئله حمل‌ونقل

فرض کنید می‌خواهید هزینه حمل کالا از یک انبار به سه شهر (تهران، شیراز، اصفهان) را کم کنید. کد کامل GAMS با تمرکز روی دستور Solve به‌صورت زیر است:

* تعریف مجموعه‌ها
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;

توضیح کد

  • دستور Solve:
    • Solve Transport using LP minimizing z: مدل Transport را با حل‌کننده برنامه‌ریزی خطی (LP) اجرا می‌کند و متغیر z (هزینه کل) را کمینه می‌کند.
  • اجزا:
    • مجموعه‌ها (i): شهرها.
    • پارامترها: هزینه (c), تقاضا (d), ظرفیت (s).
    • متغیرها: مقدار حمل (x), هزینه کل (z).
    • معادلات: تابع هدف (Cost), تقاضا (Demand), ظرفیت (Supply).
  • خروجی: پس از اجرا، GAMS مقادیر بهینه x.l (مقدار حمل به هر شهر) و z.l (هزینه کل) را نشان می‌دهد.

خروجی نمونه

در فایل خروجی (.lst):

x.l(Tehran)  200.000
x.l(Shiraz)  300.000
x.l(Isfahan) 250.000
z.l          29500.000
  • توضیح: ۲۰۰ واحد به تهران، ۳۰۰ واحد به شیراز، ۲۵۰ واحد به اصفهان حمل می‌شود. هزینه کل ۲۹۵۰۰ هزار تومان است.

نکات مهم در استفاده از Solve

  • انتخاب حل‌کننده مناسب:
    • برای مسائل خطی (LP) از CPLEX یا GUROBI استفاده کنید.
    • برای مسائل غیرخطی (NLP)، BARON یا CONOPT مناسب‌اند.
  • نوع مسئله: نوع مسئله (LP، NLP، MIP) را درست مشخص کنید.
  • خطاها: اگر مدل حل نشود (مثلاً به دلیل محدودیت‌های ناسازگار)، فایل .lst را بررسی کنید.
  • خوانایی: از کامنت‌ها (با *) برای توضیح بخش‌های کد استفاده کنید.

نکات کلیدی

  • دستور Solve: مدل را به حل‌کننده می‌فرستد.
  • حل‌کننده‌ها: CPLEX و GUROBI برای مسائل خطی مناسب‌اند.
  • خروجی: مقادیر بهینه متغیرها و تابع هدف.
  • خطاها: فایل .lst را برای رفع خطا بررسی کنید.

گام بعدی

در قسمت بعدی، با نمایش نتایج (Display) و تحلیل خروجی آشنا می‌شوید. فایل‌های نمونه و ویدئوهای این دوره را از سایت بهینه‌یار دانلود کنید!

کلمات کلیدی: آموزش GAMS، دستور Solve در GAMS، حل مدل بهینه‌سازی، GAMS برای مبتدیان، بهینه‌یار

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

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