لینگو یک نرم افزار تحت ویندوز است که 16000 متغیر و 8000 محدودیت می گیرد و به چهار مگابایت حافظه احتیاج دارد .
کاربرد لینگو در تمام مسائل بهینه سازی مثل تحقیق درعملیات ، اقتصاد مهندسی ، شبیه سازی ، کنترل کیفیت ،کنترل پروژه ، کنترل موجودی و….
می باشد .
بنابراین اغلب کارهایی که یک مهندس صنایع درآینده باآنها دست به گریبان خواهد بود در صورت مدل شدن ، قابل حل با این نرم افزار می باشد.
هر برنامه لینگو با کلمه“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() می باشد
پیش فرض لینگو برای دامنه تعریف متغیرها برای حد پایینی ، صفر و برای حد بالایی یک عدد بزرگ است که می توان این محدوده را به محدوده مورد نظر تبدیل کرد .
رفتار این تابع در برخورد با متغیرهای وابسته به مجموعه و غیر وابسته به مجموعه ، مانند تابع @gin() می باشد .
برای مثال : @for(coll:@BND((),X,5)); @BND(-100,Y,100)); حد پایینی و بالایی را برای متغیرx به ترتیب صفر و5 برای متغیر Y ، صد ومنهای صد تعریف می کند .
متغیرهای x به مجموعهcoll وابسته اند .
در این جا تمام اندیس های این متغیرها در دامنه ذکر شده قرار دارند ولی حد پایینی و بالایی متغیر غیر وابسته Y به ترتیب منهای صد و صد می باشد .
مجموعه های وابسته یا ماتریس ها اگر بخواهیم در لینگو ماتریس یا ارایه های چند بعدی را تعریف کنیم باید از مجموعه های وارث استفاده کنیم که ساختار کلی آن به شرح زیر است.
(set N1,set N2, نام مجموعه وارث اندیسهایی که باهم ارتباط…,SET Nm) ;متغیرها : / دارند هرکدام از “SET N1 ” ها نام مجموعه ای است که قبلاً تعریف شده است می باشند .
در داخل اسلش ها می توانیم اندیسهایی را که می خواهیم باهم ارتباط داشته باشند تعریف کنیم .
در صورت حذف این قسمت تمام اندیسها باهم ارتباط دارند .
برای مثال : sets: ROW/1…3/:x; Coll/1..2/:Y; Arra 1 (Row, coll)/ 1, 1,2,1,3,1/:A; Arra2(Row,coll):B; Endsets درمثال بالا دو مجموعه وارث “Arra1 ” و“Arra2 ” تعریف شده اند .
مجموعه“Arra1 ” با محدودیتهایی که ما بین دو اسلش گذاشتیم محدود به 3 عنصر شده است یعنی : A(1,1),A(2,1),A(3,1) اما مجموعه “Arra2 ” که هیچ محدودیتی برای عناصر آن قرار داده نشده است ، تمام عناصر موجود ذا در بر می گیرد و یک ماتریس 2×3 می باشد .
ایجاد محدودیت روی اندیس های یک متغیر اگر در هنگام کار با مجموعه ها یا حین استفاده از تابع for یا sum بخواهیم اندیسهایی را حذف کنیم یا عملیات خاصی را روی بعضی از اندیسهای یک متغیر انجام دهیم می توانیم با استفاده از چند عملگر این کار را انجام دهیم .
عملگر#LT# به معنای کوچکتر عملگر#EQ# به معنای مساوی عملگر#GT# به معنای بزرگتر عملگر#AND# به معنای “ و” منطقی عملگر #OR# به معنای “ یا” منطقی که سه عملگر اول در اولویت اول و دو عملگر آخر در ردیف دوم از نظر اولویت می باشند .اگر بخواهیم ترتیب اولویتها را عوض کنیم می توانیم با استفاده از پرانتز این کار را انجام دهیم .
برای مثال : Sets: Row/1..5/:x; @sum(Row(I) /I#LT#4#AND# I#Gt#1)>-5 ; Endsets که اندیسهای دو وسه را باهم جمع می کند و بزرگتر از پنج قرار می دهد .
به عبارت دیگر : x(2) + x(3) >5 توابع موجود در لینگو: توابع ریاضی @ABS(x) مقدار قدر مطلق x را بر می گرداند .
@sign(x) : اگرx منفی باشدبرابر “ 1-” می شود در غیر این صورت برابر یک می شود .
@LOG(x) : تایع لگاریتم .
@SIN(x) : تابع سینوس .
@COS(x) : تابع کسینوس .
@TAN(x) : تابع تانژانت .
توابع اقتصاد مهندسی @FPA(I,N) : برای تبدیل ارزش زمان حال یک مقدار پولی به ارزشهای مساوی در N پریود با نرخ سود I .
@FPL(I,N) : ارزش زمان حال یک جریان نقدی در N دوره بعد با نرخ سود I را می دهد .
توابع احتمالی @PBN(P,N,X) : تابع توزیع تجمعی دو جمله ای : که در آنN تعداد نمونه ،P احتمال ناسالم بودن و X متغیر تصادفی بیان کننده تعداد ناسالم ها است .
@PHG(POP,g,N,X) : تابع توزیع احتمال تجمعی فوق هندسی : که در آن POP تعداد کل انباشته ،g تعداد ناسالم در انباشته وN اندازه نمونه است وX هم متغیر تصادفی بیان کننده ناسالم ها .
@PSN (X) : تابع توزیع تجمعی نرمال استاندارد .
@PSL (X) : امید ریاضی زبان در نقطه X ،(E{max[o,(z-x)]}) وقتی z یک متغیر تصادفی با توزیع نرمال استاندارد می باشد .
@PPS(A,X) : تابع توزیع تجمعی پواسون وقتی میانگین توزیع پواسون A باشد .
@PPL(A,X) : امید ریاضی زیان در نقطه x ،(E{max{o,(z-x)]}) وقتی z یک متغیر تصادفی با توزیع پواسون ومقدار میانگین A باشد .
با توجه به تصادفی بودن مقدار تقاضا در مسائل کنترل موجودی ، این توابع کاربرد زیادی در حل اینگونه مسائل دارند .
توضیحات همانطور که قبلاً گفته شد لینگو یک نرم افزار تحت ویندوز می باشد که کار با آن بسیار ساده است وکسانی که قبلاً با نرم افزارهای تحت ویندوز کار کرده باشند برای کار با لینگو هم مشکلی نخواهند داشت و کافی است کمی با منوی لینگو کار گنند .
این نرم افزار توانایی بالایی درحل مسائل غیر خطی داشته و مسائل عدد صحیح را تا بیش از هزار متغیر حل می کند .
از دیگر قابلیتهای ایننرم افزار این است که می تواند برنامه های نوشته شده به زبان لیندو را اجرا کند .
هم چنین می تواند به excel متصل شود .
برای اجرای این برنامه کافی است دستور «MAP ROOT B:=H: » را تایپ کرده ، سپس به سؤال خواسته شده جواب مثبت بدهید و عبارت win را تایپ کنید .
پی نوشت : 1-Language For Interactive General Optimize