معرفي نرم افزار لينگو

مقدمه
لينگو يك نرم افزار تحت ويندوز است كه ۱۶۰۰۰ متغير و ۸۰۰۰ محدوديت مي گيرد و به چهار مگابايت حافظه احتياج دارد . كاربرد لينگو در تمام مسائل بهينه سازي مثل تحقيق درعمليات ، اقتصاد مهندسي ، شبيه سازي ، كنترل كيفيت ،كنترل پروژه ، كنترل موجودي و…. مي باشد . بنابراين اغلب كارهايي كه يك مهندس صنايع درآينده باآنها دست به گريبان خواهد بود در صورت مدل شدن ، قابل حل با اين نرم افزار مي باشد.

هر برنامة لينگو با كلمة“model ” شروع مي شود و با كلمة “end ” به پايان مي رسد . در سطر دوم از كلمة “sets ” به معني مجموعه ها استفاده مي شود .براي تعريف مجموعه ها در لينگو از دستور كلي
Sets:
نام متغيرهاي :/ عناصر مجموعه / نام مجموعه
؛ وابسته به مجموعه
endsets
استفاده مي شود . مجموعه ها در لينگو به دو صورت مستقل و وابسته مي باشندكه آنچه گفتيم مربوط به مجموعة مستقل بود .( مجموعه هاي وابسته را بعداً تعريف خواهيم كرد ).
نكته قابل توجه در مورد عناصر مجموعه مي توانند عدد يا رشته اي از اعداد و يا حروف باشند . براي مثال تعريف چند مجموعه در زير آمده است .
Week/1..7/:day;
Mono/su,mo,tu ,we,th,fr,sa/:
Product;

به طور كلي براي ورود داده ها در لينگو از “Data ” و “endData ” استفاده مي كنيم . در حين ورود داده ها بايستي آنها را به وسيلة كاما از هم جدا كرد يا اينكه بين آنها جاي خالي گذاشت .

توابع در لينگو
براي تعريف توابع در لينگو در حالت كلي از دستور «() اسم تابع @ »
استفاده مي شود .
( عمليات رياضي تعريف شده روي متغير : نام مجموعه )-@sum براي جمع كردن مقادير متغيرها به كار مي رود .
( محدوديتها از تابع for مي

توانيم تعداد زيادي از محدوديتها را در يك عبارت خلاصه كنيم . در حالت كلي مي توانيم شرطهايي هم براي متغيرها قائل شويم كه بعداً به اين مبحث خواهيم پرداخت .
نكات ديگري كه بايد در برنامه نويسي با لينگو رعايت كرد عبارتند از :
• هر عبارتي با يك “; ” به پايان مي رسد .
• براي نوشتن عبارات توضيحي در متن مي توان از “! ” استفاده كرد .
ترتيب اولويتها در لينگو عبارتند از ^(توان) ،×(ضرب)، / (تقسيم) ، + (جمع ) وـ (تفريق ) .
امكانات مختلف لينگو در تحقيق در عمليات

امكانات مختلفي كه دربارة مسائل تحقيق در عمليات در لينگو وجود دارد اين برنامه را به يك برنامة فراگير تبديل كرده است به طوري كه مسائل بزرگ را مي توان با حداقل حجيم نويسي حل كرد .
• تعريف متغيرهاي صحيح.
در لينگو تابع ()@gin براي تعريف متغيرهاي عدد صحيح پيش بيني شده است اگر بخواهيم يك متغير غير وابسته به مجموعة مثلاً Y را به صورت يك متغير صحيح تعريف كنيم بايد در متن برنامه جملة @gin(Y) را بنويسيم . اما براي اينكه يك متغير وابسته به يك مجموعه را به صورت متغير عدد صحيح تعريف كنيم بايد از تابع @for() هم استفاده كنيم . براي مثال :@for(coll:@gin(X);

 

• محدودة تعريف متغيرها :
پيش فرض لينگو براي دامنة تعريف متغيرها براي حد پاييني ، صفر و براي حد بالايي يك عدد بزرگ است كه مي توان اين محدوده را به محدودة مورد نظر تبديل كرد . با استفاده از تابع @BND() مي توان محدودة مورد نظر را به وجود آورد . رفتار اين تابع در برخورد با متغيرهاي وابسته به مجموعه و غير وابسته به مجموعه ، مانند تابع @gin() مي باشد .
براي مثال :

@for(coll:@BND((),X,5));
@BND(-100,Y,100));
حد پاييني و بالايي را براي متغيرx به ترتيب صفر و۵ براي متغير Y ، صد ومنهاي صد تعريف مي كند .
متغيرهاي x به مجموعةcoll وابسته اند . در اين جا تمام انديس هاي اين متغيرها در دامنة ذكر شده قرار دارند ولي حد پاييني و بالايي متغير غير وابستة Y به ترتيب منهاي صد و صد مي باشد .
• مجموعه هاي وابسته يا ماتريس ها

اگر بخواهيم در لينگو ماتريس يا ارايه هاي چند بعدي را تعريف كنيم بايد از مجموعه هاي وارث استفاده كنيم كه ساختار كلي آن به شرح زير است.
(set N1,set N2, نام مجموعة وارث انديسهايي كه باهم ارتباط…,SET Nm)
;متغيرها : / دارند

هركدام از “SET N1 ” ها نام مجموعه اي است كه قبلاً تعريف شده است مي باشند .
در داخل اسلش ها مي توانيم انديسهايي را كه مي خواهيم باهم ارتباط داشته باشند تعريف كنيم . در صورت حذف اين قسمت تمام انديسها باهم ارتباط دارند . براي مثال :
sets:
ROW/1…۳/:x;
Coll/1..2/:Y;
Arra 1 (Row, coll)/
1, 1,2,1,3,1/:A;
Arra2(Row,coll):B;
Endsets

درمثال بالا دو مجموعة وارث “Arra1 ” و“Arra2 ” تعريف شده اند . مجموعة“Arra1 ” با محدوديتهايي كه ما بين دو اسلش گذاشتيم محدود به ۳ عنصر شده است يعني :
A(1,1),A(2,1),A(3,1)
اما مجموعة “Arra2 ” كه هيچ محدوديتي براي عناصر آن قرار داده نشده است ، تمام عناصر موجود ذا در بر مي گيرد و يك ماتريس ۲×۳ مي باشد .
• ايجاد محدوديت روي انديس هاي يك متغير

اگر در هنگام كار با مجموعه ها يا حين استفاده از تابع for يا sum بخواهيم انديسهايي را حذف كنيم يا عمليات خاصي را روي بعضي از انديسهاي يك متغير انجام دهيم مي توانيم با استفاده از چند عملگر اين كار را انجام دهيم .