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

در این بخش عبارتی تحت عنوان پارامتر را تعریف نموده و سپس روش های مختلف ورود آن توسط گزاره های از پیش تعیین شده ی GAMS را مورد بررسی قرار می دهیم.

یک پارامتر یا یک داده ی ورودی، در تحقیق در عملیات، علم بهینه سازی، علم جبر و سایر علوم مرتبط با برنامه ریزی ریاضی به صورت زیر تعریف می شود:
پارامتر: یک پارامتر مقداریست که از قبل اندازه گیری و مشخص شده است و با ورود آن به یک مدل یا معادله به حل دقیق/تر آن کمک می کند.
به عنوان مثال:
1. در حرکت یک پرتابه یا سقوط آزاد، مقدار نیروی گرانش ثابت (9.8) در نظر گرفته شده است. (عدد ثابت)
2. در یک مسئله ی تحقیق در عملیات، مقادیر ضرایب تابع هدف (C) ، مقدار ضرایب محدودیت ها (A) ، مقادیر سمت راست محدودیت ها (B) نوعی پارامتر محسوب می شوند که از قبل مقدار آن ها را می دانیم. (ماتریس)

با دقت به مثال های فوق مشاهده می شود که یک پارامتر یا شامل یک عدد ثابت و یا یک ماتریس می باشد. یک پارامتر را می توان به توسط دستورهای مختلفی می توان تعریف نمود. این دستورها را می توان به چهار دسته ی عمده ی Interface, Table, Parameter, Scalar تقسیم بندی کرد.

دستور Scalar : جهت وارد کردن پارامترها/داده هایی مورد استفاده قرار می گیرد که مقادیری یکه و ثابت در مسئله به خود می گیرند.
فرم کلی این دستور و یک مثال از آن را در زیر مشاهده می کنید:

Scalar ParameterName/Value or the Quantity/;
*Example1:
Scalar Tehran/1000/;

مثال بالا بیان می کند که کمیتی به نام Tehran ثابت بوده و از نوع Scalar می باشد. همچنین مقدار این کمیت برابر با 1000 می باشد.

دستور Parameter: جهت وارد کردن پارامترها/داده های ثابت و همچنین پارامترهایی که دارای اندیس هستند استفاده می شود.
فرم کلی این دستور به همراه چند مثال از آن را در زیر مشاهده می کنید:

Parameter ParameterName/Value/;
*Example1:
Parameter P/0.1/
*Example2:
Parameter x(i) /1 2,2 3,3 4/;
*Example3:
Parameter y(i);
y(i)=x(i)+1;

در مثال اول پارامتری به نام P که در مدل استفاده می شود برابر با 0.1 در نظر گرفته شده است. در مثال دوم پارامتر x که دارای اندیس i می باشد (فرض شده است که i از 1 تا 3 متغییر است) مقادیری به آن نسبت داده شده است. مقدار x برای i های مختلف 1و2و3 به ترتیب برابر با 2و3و4 می باشد. دقت بفرمایید که در صورتی GAMS این کد را لحاظ خواهد کد که اندیس i از قبل توسط دستور Set تعریف شده باشد.

دستور Table: جهت وارد کردن پارامترها/داده های ثابت و همچنین پارامترهایی که دارای اندیس هستند استفاده می شود.
مثال زیر می تواند یک جدول دو بعدی را به نمایش بگذارد:

Table a(i,j)
- 1 2 3 4
1 0 3 9 8
2 7 6 0 2
3 1 1 1 1
4 0 6 8 3

این جدول بیان می کند که داده ای به نام a در مدل موجود است که به اندیس های i و j وابسته است (فرض نموده ایم که این اندیس ها از 1 تا 3 متغییر می باشند). مقادیر مختلف a به شکل یک ماتریس 4*4 به نمایش گذاشته شده است. مجدداً بیان می کنیم که اندیس های i و j پیش تر باید توسط دستور Set تعریف شده باشند.

دستورات Interface: نرم افزار GAMS علاوه بر اینکه در محیط خود می تواند داده خوانی کند، توانایی باز خوانی اطلاعات از نرم افزارهای دیگر نظیر Excel و Access را نیز دارد. با استفاده از یک سری دستورات، کاربر می تواند بدون اینکه محیط GAMS را شلوغ تر کند، اطلاعات را از روی نرم افزارهای دیگر بخواند و حتی نتایجی را روی آنها بنویسد. این امر را Interface بین نرم افزارها می نامند.
مثال زیر شیوه ی تعریف یک جدول سه بعدی را در قالب Interface بین GAMS و Excel نشان دهد.

$onecho > Model.txt
I=Model.xls
R=Cost5-s!a2:d27
O=Model.inc
$offecho

$call =xls2gms @Model.txt

Table d(i,j,s) distance
$include Model.inc
;

کد بالا برای ماتریس های 3 بعدی ثابت می باشد. این کد بیان می کند که ماتریس d که سه بعدی می باشد، در فایل excelی ،که با نام model.xls ذخیره شده است و شامل یک برگه (Sheet) به نام Cost5 می باشد، موجود می باشد. مقادیر d نیز از سلول a2 تا سلول d27 ادامه دارد.

توجه بفرمایید که تمامی 4 دستور بالا، در همین برگه تحت تاپیک های مربوط به خود به تفصیل بیان خواهند شد.

نکته ی مهم: همانطور که گفته شد، کاربرد دستور Parameter و دستور Table با هم یکسان است. ولی به زبانی ساده بیان می کنیم که:
اگر یک پارامتر در مدلتان داشته باشید که فاقد بعد بود (یعنی اندیس نداشت) و یا اینکه دارای یک بعد بود (یک اندیس داشت) از دستور Parameter استفاده کنید.
اگر یک پارامتر در مدلتان داشته باشید که اندیس های 2 به بالا داشت توصیه می شود که از دستور Table استفاده نمایید.
در مواقعی که تعداد اندیس های شما بالا باشد و همچنین تعداد داده هایی که استفاده می کنید نیز زیاد بود توصیه ی اکید می شود که از دستورات Interface چند بعدی استفاده نمایید.

بحث های ابتدایی در مورد تعریف پارامترهای مختلف به اتمام رسید. تعاریف تکمیلی در بخش مربوط به هر کدام از این دستورات به تفصیل مورد بحث و گفتگو قرار گرفته شده اند. جهت مطالعه ی هر کدام از این بخش ها می توانید به منوی (دسته بندی-پارامترها) مراجعه فرمایید.

خدمت عزیزانی که آموزش گام به گام را از ابتدا همراه با ما شروع نموده اند توصیه می شود که پس از مطالعه و مرور این صفحه، جهت ادامه مراحل آموزش به بخش Scalar در لیست مطالب مراجعه نمایند.

با تشکر
مدیریت سایت gamsbook.ir

ایمیل: Support@gamsbook.ir
شماره تماس: 3325-405–0919