دستور 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 در دسترساند.

مثال عملی: حل مسئله حملونقل
فرض کنید میخواهید هزینه حمل کالا از یک انبار به سه شهر (تهران، شیراز، اصفهان) را کم کنید. کد کامل 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;
* تعریف معادلات
E