1
دانشگاه صنعتي فولد
استاد راهنما : دكتر كيانفر :تهيه كنندگان كامبيز شكوهي محمود طاهري نويد مقتدري زاده تيموري مهرداد مهين فلح
2
نگين فرد
دانشگاه صنعتي فولد
فهرست مطالب بخش اول :معرفی نرم افزار بخش دوم :آغاز کار با لینگو بخش سوم :حل مسائل
3
بخش چهارم :ساير ابزار الت نرم افزار دانشگاه صنعتي فولد
بخش اول « معرفی «نرم افزار
مقدمه ای بر لینگو نرم افزارهای مشابه و ویژگی های لینگو لینگو چیست ؟
4
دانشگاه صنعتي فولد
مقدمه ای بر لینگو بس ته های نرم افزاری لیندو و لینگ و توس ط ( )1برای ح ل مس ائل بهین ه سازی در دانشگاه ،صنعت و تجارت ،طرا حی گردیده است .دو : محص ول فوق همراه ب ا ( )2()1994و : ()4 . ( )3( )1995که توس ط نگاشته شده است ،تشریح گردیده اند. 1) Lindo Systems, Inc. )2) Operations Research : Applications and Algorithms (1994 )3) Introduction to Mathematical Programming : Application and Algorithms (1995 4) Wayne L.Winston 5
دانشگاه صنعتي فولد
نرم افزارهای مشابه امروزه بس یاری از مدل های بهینه سازی تحقی ق در عملیات اعم از مدل های خطی ،غیر خطی و یا عدد صحیح به مدد نرم افزارهای کامپیوتری به سادگی قابل تجزیه و تحلیل می باشند. در این میان می توان از نرم افزارهایی چون GAMS ،GINO ،LINDO ،LINGO ،QSBو TORA نام برد. 6
دانشگاه صنعتي فولد
7
LINGOبع د از GAMSقوی ترین نرم افزار تحقی ق در عملیات می باشد .از جمله برتری های لینگو نسبت به LINDO یا ، GAMSقدرت آن در مدل سازی تمام مس ائلی اس ت ک ه توسط لیندو مدل شده اند ،بدون این که نیازی به تعیین نوع مدل توس ط کاربر باش د ،در حالی که LINDOیا GAMSچنین قابلیتی را دارا نم ی باشد .یک ی دیگ ر از قابلیت های مه م لینگ و برخورداری از Helpی بسیار قوی ،ساده و کامل می باشد .به گونه ای که با استفاده از Helpآن می توان تا افزار مسلط شد . نرم صنعتي فولد حد زیادی بر این دانشگاه
ویژگیهای بارز لینگو قابلیت مدل سازی بصورت کارا و صحیح؛ قابلیت بالی تحلیل مدل؛ دارا بودن توابع مختلف ریاضی، آماری و احتمالی؛ قابلیت خواندن اطلعات از Fileها و Worksheetهای دیگر؛ کار کردن در محیط .Windows 8
دانشگاه صنعتي فولد
لینگو چیست ؟ لینگو ابزاری ساده برای بهره گیری از قدرت برنام ه ریزی خط ی و غی ر خط ی در فرموله کردن مسائل خیلی بزرگ به صورت مختصر و تجزیه و تحلیل آنهاست .بهینه سازی به شما کمک می کند تا جوابی را با بیشترین سود، خروجی ،یا رضایتمندی و یا جوابی با کمترین هزینه ،تلفات یا ناراحتی بدست آورید .اغلب ای ن مس ائل ب ا اس تفاده موث ر از منابعی همچون پول ،زمان ،ماشین ،نیروی کار، موجودی و ...در ارتباط است. 9
دانشگاه صنعتي فولد
مس ائل بهین ه س ازی اغل ب ب ه خط ی و غیر خطی تقسیم می شوند ،که این تقسیم بندی با توجه به رابطه متغیرهاست؛ بدین معنی که ا گر راب طه ه مه متغیر ها با هم خ طی باشد، مسئله را خطی و در غیر اینصورت غیر خطی می گویند. لینگ و زبان ی جام ع و فراگی ر جه ت تسهیل تمام مدل های بهینه سازی از مسائل تحقیق در عملیات گرفته تا اقتصاد مهندسی ،شبیه سازی ،کنترل کیفیت ،کنترل پروژه و کنترل موجودی می باشد. 10
دانشگاه صنعتي فولد
: لینگ و ی ک بس ته نرم افزاری با امکان برقراری ارتباط دو طرفه با کاربر است و از آن می توان در حل مس ائل خط ی ،عدد ص حیح و غی ر خط ی کمک گرفت .استفاده از این نرم افزار وضعیت مشابهی مانن د لیندو دارد ،اما از انعطاف بیشتری در بیان مدل برخوردار اس ت .بر خلف لیندو ،لینگو امکان استفاده از پرانتزها و متغیرها را در سمت راست معادل ه فراه م م ی آورد .بنابرای ن ،محدودی ت ها را می توان به صورت اولیه ،بدون نیاز به تبدیل آن به ساختار اس تاندارد (آوردن مقادی ر ثاب ت ب ه سمت راس ت) نوشت .همچنی ن لینگ و دارای ی ک کتابخانه بزرگ از تواب ع ریاض ی ،آماری و احتمالی بوده و قدرت بالی آ ن در خواندن اطلعات از فایل های دانشگاه صنعتي فولد صفحه گسترده است. 11خارجی و نرم افزارهای
بخش دوم « آغاز کار با «لینگو
12
نصب نرم افزار اصول اولیه در لینگو محیط نرم افزار پیاده سازی مدل در لینگو
دانشگاه صنعتي فولد
نصب نرم افزار نصب لینگو به راحتی انجام می گیرد و همانن د بس یاری از نرم افزارهای تحت سیستم عامل Windowsمی باشد. تنها نکته ای که در نصب می توان به آن اشاره کرد فضای مورد نیاز در روی دیسک سخت می باشد که 40MBاست. برای دریاف ت نرم افزار م ی توانی د به سایت لینگو مراجعه کنید. 13
دانشگاه صنعتي فولد
اصول اولیه در لینگو کردن ی ک مدل در نس خه
تحت ویندوز وارد لینگ و ،شبی ه تای پ کردن در ی ک محیط پردازشگ ر متن ی تح ت ویندوز است؛ چون وقتی در یک مدل داده تایپ می کنید ،تقریبا باید آنچه را که به صورت دستی نوشته اید، وارد مدل کنید .کاربر م ی تواند اطلعات ورودی خود را در پنجره ی داخل ی که ابتدا تح ت عنوان Lingo Modelاست ،وارد کند. همچنی ن ،لینگ و شام ل دس تورات ابتدایی ویرایش برای بریدن ،کپی کردن و چسباندن یک متن است .این ابزارها و سایر ویژگی ها، در منوی فرمان ها موجود است که در ادامه مورد بررسی قرار می گیرد.
14
دانشگاه صنعتي فولد
عناصر مورد نیاز در لینگو مشابه لیندو اس ت .لینگ و نیازمن د تاب ع هدف ،ی ک یا چند متغیر و یک یا چند محدودیت است. بر خلف لیندو ،محدودیت های لینگو بعد از عبارات خاص از قبیل SUBJECT TOیا SUCH THATنمی آیند.
15
دانشگاه صنعتي فولد
اصول اولیه مدل نویسی در لینگو در لینگو هر عبارت با یک “ ; ” پایان می یابد؛ هرگاه بخواهی م ی ک عبارت توضیح ی ب ه متن برنام ه بیافزایی م کافیست در ابتدای عبارت از علمت تعجب ( ! ) استفاده کنیم .این توضیحات نیز به “ ; ” ختم می شوند؛ کلیه عبارات متنی که مابین ( ! ) و “ ; ” نوشته می شوند از سوی لینگو نادیده گرفته می شوند؛ لینگ و ب ه بزرگ ی ا کوچ ک بودن حروف حساس نیست؛
16
دانشگاه صنعتي فولد
می توانی م دو خ ط برنام ه لینگ و را در ی ک خط بیاوریم و یا یک خط آن را در دو سطر بیاوریم: Max = 100 * Standard ;Turbo * 150 + یا ;;Turbo <= 120Standard <= 100 ح تی می توان یم توضیحات را در و سط محدودیت ها بیاوریم: ;X = Y + !Number of Products; Q + 2 * C ( معادل X = Y + Q + 2 * Cاست )
17
دانشگاه صنعتي فولد
عملگرهای ریاضی حتما فراموش نشود؛ ( مخصوصا عملگر ضرب “ * “ ) (2X + 3Y <= 25اشتباه) (X + 3 * Y <= 25 * 2درست) اسامی متغیرها حتما با یک حرف شروع می شوند. بع د از آ ن م ی توان حرف ،رق م ی ا زی ر خط ( _ ) استفاده کرد .اسم متغیرها نمی تواند بیشتر از 32 کاراکتر باشد؛ استفاده از فاصله “ “ ) فاصله ( در اسم متغیر ها ممنوع است؛ 18
دانشگاه صنعتي فولد
علئ م س اده ریاض ی ،توان ( ^ ) ،ضرب ( * ) ،تقسیم ( ،) /جمع ( ) +و تفریق ( ) -با همین ترتیب اولویت معتبرند؛ اگر بخواهیم به محدودیت اسمی اختصاص دهیم در ابتدای محدودیت اسم آن را در داخل علمت کروشه می آور یم؛ و به صورت مقابل می نوی سیم ] :اسم محدودیت[ Help لینگ و ی ک راهنمای بس یار خوب برای استفاده بهتر از نرم افزار است .از آن بهره بگیرید!
19
دانشگاه صنعتي فولد
هنگام حل مدل اگر ایرادی در آن وجود داشته باشد، نرم افزار پیغام خطا داده و مکان نما به اول سطری می رود که به نظر لینگو این خطا از آنجا ناشی شده است؛ ممکن است در بعضی مواقع با وجود آنکه فکر می کنی د مدل ی ک ه نوشت ه ای د درس ت است ،نرم افزار هنگام حل آن پیغام خطا بدهد .در این مواقع یک راه ساده آن است که یک صفحه جدید لینگو باز کرده و دس تورات و عبارت های ی ک ه در مدل نوشت ه اید را یکی یکی ،به صفحه ی جدید کپی کرده و هر بار مدل جدید را اجرا کنید .با این کار در اکثر موارد به راحتی می توانید به اشکال برنامه پی ببرید. 20
دانشگاه صنعتي فولد
عبا رات شرطی عبارات شرطی در شرايطی به کار می رود که بخواهيم يک دستور را به يک سری متغيرهای خاص محدود کنيم .هر عبارت شرطی می تواند مقدار " درست " يا " غلط " بگيرد .اگر عبارت شرطی ،مقدار " درست " بگيرد ،دستور مطرح شده ،روی متغيرهای مورد نظر اجرا می شود و اگر مقدار " غلط " بگيرد ،دستور مذکور اجرا نمی شود .نرم افزار ، Lingoمقدار 1را برای عبارات شرطی " درست " و مقدار صفر را برای عبارات شرطی " غلط " اختصاص می دهد .برای دانشگاه،صنعتي 21 ازفولداپراتورهای منطقی نوشتن عبارات شرطی
22
نماد
اپراتور منطقی
#NOT#
نقيض
#EQ#
تساوی
#NE#
مخالف
#GT#
بزرگتر
#GE#
بزرگتر مساوی
#LT#
کوچکتر
#LE#
کوچکتر مساوی
#AND#
و
#OR#
يا
• در زير چند نمونه از عبارات شرطی نمايش داده شده است xبزرگتر مساوی 5نباشد : ) NOT# ) x #GE# 5# xکوچکترمساوی 3و yبزرگتر از 4باشد
) )x #LE# 3 ) #AND# ) y #GT# 4 xمساوی 3باشد يا yمخالف 2باشد :
) ) x #EQ# 3 ) #OR# ) y #NE# 2 دانشگاه صنعتي فولد
محیط نرم افزار نرم افزار لینگ و از س ه بخ ش کل ی منوها Toolbar ،و پنجره ی مدل نویسی تشکیل شده است. منوهای نرم افزار به ترتیب زیر می باشد : File; Edit; LINGO; Window; Help
نرم افزار می باشد منوی LINGOست ،با سایر منوها که در نرم افزارهای تح ت س یستم عامل Windows عموما َ موجود می باشند پیشتر آشنا هستید. Toolbar شام ل ابزارهای ( Shortcutمیانبر) موجود در منوها می باشد. پنجره ی مدل نویس ی مح ل پیاده س ازی مسئله ی بهینه سازی فرموله شده طبق قواعد لینگوست. 23
دانشگاه صنعتي فولد
Menus Toolbar پنجره ی مدل نویسی
هنگامی که نرم افزار لینگو را اجرا می کنید ،صفحه ای مطابق شکل نمایش داده می شود ،همان طور که مشاهده می کنید ،کلید هایی برای استفاده کاربر در نظر گرفته شده که در واقع هر کدام از آنها یک کلید میان بر ،برای گزینه ی مرتبط در یکی از منوهای لینگو می باشد . هنگام ی ک ه هی چ ص فحه ای در لینگ و باز نباش د ،بس یاری از کلیده ا غیر فعال هستند .اما با باز کردن یک برنامه به زبان لینگو و اجرای آن تقریبا همه این کلیدها فعال می شوند .برای
Toolbar
Solve New Cut Send Find To Back Undo Solution Help Topics Open Go Close To Line All Redo Copy Matrix Picture Help Save Math Tile Parenthesis Windows Paste Options
Print
Lingoمی Newازازمنوی گزینهSolve بر گزینه میان بر کلید میان می منوی کلید Fileباشد. می Edit منوی Undoاز Cut گزینه بر میان کلید Window منوی منویاز ازSend To Find Back گزینه گزینه بر بر میان میان کلید کلید باشد. می Edit گزینه بر میان کلید . باشد . باشد می Lingo منوی از Solution گزینه بر میان کلید باشد. می Help جستجو و کلید برای. کلیک باشد می می File منوی از گزینه بربر میان کلید می می Window Edit منوی از Go Openاز Close To Line All گزینه گزینه بر میان میان کلید کلید باشد. منویمی Edit منوی از Redo گزینه بر میان کلید Copy . باشد . باشد Lingo منوی از Matrix Picture گزینه بر میان کلید .File منویباشد Helpمی میان بر از کلید کلید منوی. گزینه باشد منویمی از Save بربر بر میان Window Edit منوی Mathاز Tileاز Parenthesis Windows گزینه گزینه میان کلید میان کلید باشد. میان بر گزینه می باشد. Editمی منوی Pasteاز کلید Lingoمی منوی باشد..از Options گزینه بر میان کلید می باشداز منوی Fileمی Print کلید میان بر گزینه باشد.
باشد.
25
دانشگاه صنعتي فولد
)Menus (File Menu پنجره ی جدید برای وارد کردن داده ها ایجاد می کند
New
پرونده ی موجود را باز می کند .در جعبه های محاوره ای ) ،(dialog boxمی توانید پرونده را از میان انواع مختلف پرونده ها و در مکان های مختلف انتخاب کنید
Open
پنجره ی فعال را ذخیره می کند .می توانید داده های ورودی )یک مدل( ،یک پنجره گزارش یا یک پنجره فرمان را ذخیره کنید پنجره فعال را با نام مشخصی ذخیره می کند .کاربرد این فرمان در تغییر نام پرونده اصلح شده است ،در حالی که پرونده اولیه حفظ می شود
Save
پنجره فعال را می بندد .اگر پنجره شامل داده های جدید باشد ،برای ذخیره برنامه سوال می کند پنجره فعال را به چاپگر می فرستد چاپگر را انتخاب می کند .همچنین ،گزینه های مختلفی را برای شکل چاپ ،در دسترس قرار می دهد پیش نمایش محتویات پنجره ی فعال برای چاپ را نمایش می دهد
Save As Close Print Print Setup Print Preview
تمامی زیر پنجره های عملیات را که در حالت معمولی به پنجره گزارش فرستاده می شود ،به یک فایل نوشتاری ارسال می کند .وقتی محل پرونده نوشتاری را تعیین کردید ،علمتی در کنار این فرمان در منوی فایل ظاهر خواهد شد .برای غیر فعال کردن این فرمان ،می توانید مجددا این گزینه را انتخاب کنید برای انجام عملیات به صورت خودکار یک فایل بسته ای ) (batch fileلینگو را همراه با فرمان ها و متن ،وارد حافظه می کند .یک مدل می تواند در حافظه قرار گیرد ،حل شود و نتیجه حل آن در یک پنجره گزارش قرار گرفته و در یک فایل ذخیره شود .اگر یک فرمان بسته ای را قبل از شروع متن مدل به کار برید ،مدل و دستورات موجود در فایل ،در پنجره گزارش و در حل دیده می شود صدور یک مدل در فرمت MPSیا MPI
Export File
دادن کلمه عبور جدید جهت به روز رسانی سیستم و آزاد شدن نرم افزار
License
واداشتن شما به استفاده از شناسه کاربری و کلمه عبور برای دستیابی به پایگاه اطلعات از طریق تابع @()ODBC خروج از نرم افزار
26
دانشگاه صنعتي فولد
Log Output
Take Commands
Database User Info Exit
کار با منوی File در ای ن من و ب ه توضی ح 3فرمان زی ر می پردازی م ،ب ا س ایر فرمان ه ا پیشت ر آشنا هستید. …Log Output …Take Commands Database User Info
27
دانشگاه صنعتي فولد
پس از اجرای نرم افزار LINGO Modelرا که بصورت اتوماتیک باز شده Closeمی کنیم. سپس از منوی Fileفرمان Newرا انتخاب می کن یم ،در Dialog Boxظا هر شده گزینه چهارم، یعنی LINGO Command Scriptرا انتخاب کرده OK می کنیم) 1 ( .
28
دانشگاه صنعتي فولد
در پنجره ی باز شده متن آورده شده در شکل زیر را تایپ کنید) 2 ( .
29
دانشگاه صنعتي فولد
مدل را حل کنید و جواب را در یک فایل متنی نگاه دارید .اکنون با استفاده از فرمان Saveاز منوی Fileمتن تایپ شده را با پسوند ltfذخیره کنید .اکنون از منوی Fileفرمان Take Command را اجرا کنید .مشاهده می کنید که ورودی به همراه خروجی در پنجره Command Windowآمد، به عبارت دیگر صورت مسئله به همراه جواب آن یکجا آورده شد. کنید) 3 ( .
30
دانشگاه صنعتي فولد
موجود در این پنجره و بازتاب خروجی از فرمان Log Outputموجود در منوی Fileاستفاده کنید.
31
دانشگاه صنعتي فولد
Database User Infoفرمان دیگری از منوی Fileمی باشد .هنگام ی ک ه از تابع @ }{ODBCدر مدل اس تفاده م ی کنید و نیاز به کلمه و رمز عبور برای استفاده از بان ک اطلعات ی داری د م ی بایست از قبل در این قسمت کلمه و رمز عبور را وارد کنید.
32
دانشگاه صنعتي فولد
)Menus (Edit Menu آخرین کار انجام شده را باز می گرداند
Undo
بر عکس عملیات Undoرا انجام می دهد
Redo
متن انتخابی را پاک کرده ،در حافظه نگه می دارد تا جای دیگری آن را قرار دهد
Cut
متن انتخابی را در حافظه کپی می کند تا در جای دیگری قرار داده شود
Copy
محتوای حافظه ) (Clipboardرا در جای انتخابی قرار می دهد
Paste
Pasteهمراه با انتخاب نوع Pasteاز نظر فرمت متن
Paste Special
تمامی محتویات پنجره فعال را انتخاب می کند تا بتوان از آن در کپی و یا برش استفاده کرد جستجوی قسمتی از رشته ی متنی در پنجره ی فعال
Select All Find
جستجوی رشته ی متنی مشابه بعدی در متن که قبل توسط Findپیدا شده
Find Next
جابجا کردن رشته های متنی با متن جدید بصورت دلخواه
Replace
حرکت دادن ) Cursorنشانگر صفحه کلید( به شماره خط دلخواه از پنجره فعال
Go To Line
پرانتز های بسته را که با پرانتز های باز انتخاب شده ،متناظر هستند ،پیدا می کند
Match Parenthesis
توابع داخلی لینگو را در جای مشخص شده ،قرار می دهد .بعد از انتخاب این فرمان ،زیر منوی دیگری باز می شود که شامل گروه بندی های مختلفی از توابع است
Paste Function
انتخاب قلم دلخواه با فرمت دلخواه )پس از Selectکردن متن فعال می شود(
Select Font
افزودن لینک از نرم افزار های دیگر )به عنوان مثال یک اسلید (PowerPoint
Insert New Object
کنترل ارتباطات عناصر خارجی موجود در Document
Links
خاصیت دادن به عناصر موجود در Document
Object Properties
33
دانشگاه صنعتي فولد
کار با منوی Edit از منوی Editفرمان Insert New Objectرا اجرا کنید، پنجره ای بصورت زیر باز می شود. مربوط ب ه محیط نرم افزار دلخواه است و دوم ی فایل ذخیره شده ،به عنوان مثال در حالت اول Bitmap Imageرا انتخاب کنید.
34
دانشگاه صنعتي فولد
اکنون در LINGO Modelش کل زیر را شا هد ه ستید ،با Double Clickروی آن نرم افزار Paintبا کلیه ابزار های آن در اختیار شما خواهد بود ،تصویر دلخواه خود را ایجاد کنید و با کلیک خارج از محدوده ی مورد نظر به لینگو باز گردید.
35
دانشگاه صنعتي فولد
)Menus (LINGO Menu مدل مربوط به پنجره فعال را برای حل ،به حل کننده لینگو می فرستد
Solve
جعبه محاوره ای ) ،(Dialog Boxگزینه هایی از گزارش حل را باز می کند ،که امکان تعیین چگونگی ظاهر مورد نظر گزارش حل را فراهم می کنند
Solution
یک گزارش حد )تحلیل حساسیت( ارائه می کند .این گزارش نشان می دهد که تغییرات ضرایب می تواند در چه محدوده ای باشد ،بدون اینکه مقادیر بهینه عوش شوند
Range
امکان مشاهده و تغییر پرامترهای مختلفی را که در هنگام استفاده از لینگو درگیر هستند ،فراهم می کند ویرایش دیگری از مدل را به صورت جبری ،تحت لیندو و یا ساختار MPSتولید می کند. این فرمان می تواند برای شماره گذاری سطر ها و نمایش مدل به صورتی که کاربر بتواند راحت تر با آن کار کند ،مورد استفاده قرار می گیرد .فرمان ،GENاز پنجره فرمان نیز ،دارای قابلیت مشابهی از این نوع است مدل را بصورت ماتریسی نمایش می دهد
Options
Picture
خطاهای موجود در مدل را یافته و توضیح می دهد
Debug
اطلعاتی راجع به مدل در اختیار قرار می دهد )مانند تعداد متغیرها ،تعداد سطرها و(...
Model Statistics
تمام و یا قسمتی از سطرهای انتخابی مدل را نمایش می دهد
Look
36
دانشگاه صنعتي فولد
Generate
کار با منوی LINGO فرمان های Solutionو Rangeپس از حل مدل فعال خواهند شد.
37
حل مدل داکوتا اجرا می کنیم ،پنجره ی مقاب ل باز خواهد شد. از منوی آبشاری نوع متغیری را که مد نظر دارید انتخاب کنید و با انتخاب گزینه Graphو تعیین نوع نمودار OK کنید.
دانشگاه صنعتي فولد
به عنوان مثال Chairرا انتخاب کردیم ،داریم :
38
دانشگاه صنعتي فولد
فرمان دیگری که در این من و ب ه چش م م ی آید فرمان Optionاس ت ،این فرمان همانگون ه که از نام ش پیداس ت گزینه های مختلف ی را جهت مطاب ق میل نمودن نرم افزار در اختیار کاربر قرار می دهد ،به عنوان مثال ب ا تیک زدن Send Report To Command Window از قسمت Interfaceتمامی
خروجی های نرم افزار را بص ورت پیوسته در پنجره ی Command Window مشاهده خواهید کرد و . . .39 دانشگاه صنعتي فولد
)Menus (Window Menu امکان دسترسی به رابط کاربر با خط فرمان لینگو را فراهم می آورد .در اینجا می توانید فرمان ها را در مقابل علمت :وارد کنید پنجره وضعیت حل کننده لینگو را که نمایش دهنده اطلعاتی در مورد وضعیت بهینه سازها از قبیل تعداد تکرارها و زمان اجرای صرف شده است ،باز می کند پنجره ی رویی را به پشت می فرستد تمامی پنجره های باز را می بندد
Status Window Send to Back Close All
تمامی پنجره های باز را به گونه ای مرتب می کند که همگی فضای مساوی را در پنجره برنامه اشغال کنند تمامی پنجره های باز را به صورت آبشاری ،از سمت چپ -بال تا سمت راست-پایین مرتب کرده و پنجره فعال را نیز در بال قرار می دهد آیکون هایی را که نشانه پنجره های کوچک شده است ،در امتداد پایین صفحه نمایش ،مرتب می کند
40
Command Window
دانشگاه صنعتي فولد
Tile Cascade Arrange Icons
)Menus (Help Menu
Help Topics
راهنمای موضوعی ،امکان جستجو نیز وجود دارد
Register
ثبت لینگو بصورت آنلین شما را از ورژن های جدید و به روز رسانی نرم افزار بصورت آنلین آگاه می سازد صفحه آغازین لینگو را به همراه اطلعات عمومی مربوط به آن نمایش می دهد
41
دانشگاه صنعتي فولد
AutoUpdate About LINGO
پنجره مدل
نویسی) ( Lingo Model
لینگو زبان برنامه نویسی خاص خود را دارد ،همانند زبان های برنامه نویسی دیگر لینگو نیز دارای اصول و قواع د نگارش ی و منط قی در برنام ه نویس ی می باشد ،با استفاده از Helpجامع نرم افزار و همچنین با بهره گیری از پیغام های خطا و سعی در رفع آنها می توان به تدریج بر آن مسلط شد .پنجره ی برنامه نویسی را در زیر مشاهده می کنید :
42
دانشگاه صنعتي فولد
پیاده سازی مدل در لینگو توسعه ی یک مدل بهینه سازی یک شرکت کامپیوتری دو نوع کامپیوتر استاندارد و توربو تولید می کند .سود هر کامپیوت ر ا ستاندارد برای ا ین شر کت 100$و هر دستگاه توربو برابر 150$است .در شرکت ،خط تولید کامپیوتر اس تاندارد حادکث ر ت ا 100دس تگاه در روز م ی توان د تولید کند. همچنین حداکثر توان تولید خط توربو برابر 120دستگاه در روز اعلم شده است .شرکت نیروی کار محدود 160نفر ساعت در هر روز در اختیار دارد .کامپیوترهای استاندارد یک ساعت نیروی کار لزم دارند در حالی که کامپیوترهای توربو 2ساعت نیروی کار نیاز دارند .مساله ای که شرکت با آن روبروست این است که ترکیب ی از کامپیوترهای اس تاندارد و تورب و را برای تولید انتخاب کند که سودش را بیشینه کند در حالی که از محدودیت های توان خطوط تولید و ظرفیت نیروی کار تجاوز نکند.
43
دانشگاه صنعتي فولد
یک مدل بهینه سازی شامل موارد زیر است : – فرمولی است که دقیقا آنچه را که می خواهید بهینه کنید ،بیان می کند .در مدل های مربوط به کسب و کار این یک تابع سود است که می خواهید آن را بیشینه کنید و یا یک تابع هزینه است که می خواهید آن را کمینه کنید .مدل ها ممکن است حداکثر یک تابع هدف داشته باشد .در مثالی که داریم ،تابع هدف ،سود شرکت را به صورت تابعی از خروجی کامپیوترهای استاندارد و توربو محاسبه می کند.
44
دانشگاه صنعتي فولد
– کمیت هایی هستند که تحت کنترل شما هستند و شما باید تصمیم بگیرید که بهترین مقادیر این متغیر ها کدامند؛ به همین دلیل گاها به آنها متغیر های تصمیم گیری نیز می گویند. هدف بهینه سازی یافتن مقادیری برای متغیرهای مدل است که با توجه به همه شرایط محدود کننده که روی متغیرها اعمال می شوند ،بهترین مقدار را برای تابع هدف تولید کنند .در این مثال ما دو متغیر تصمیم گیری یکی مربوط به تعداد کامپیوترهای استاندارد و دیگری مربوط به تعداد کامپیوترهای توربو داریم. 45
دانشگاه صنعتي فولد
– تقریبا بدون استثنا ،برخی محدودیت ها برای مقادیری که متغیرها می توانند اتخاذ کنند خواهد بود .حداقل یک منبع محدود خواهد بود( .برای مثال زمان ،مواد اولیه ،بودجه دپارتمان شما و )...این محدودیت ها به وسیله توابعی از متغیرهای مدل بیان می شوند .این فرمول ها به عنوان محدودیت شناخته می شود، چون مقادیری را که متغیرها می توانند بگیرند، محدود می کنند.
46
دانشگاه صنعتي فولد
در ای ن مثال م ا برای ه ر خ ط تولی د یک محدود یت و برای کل نیروی کار استفاده شده نیز یک محدودیت داریم. متغیرهای Standardو Turboرا به عنوان تعداد کامپیوترهای اس تاندارد و تورب و که شر کت می خوا هد تول ید ک ند در نظر می گیریم .هدف شرکت بیشینه کردن سود کل اس ت ک ه ای ن س ود برابر مجموع سود حاص ل از کامپیوترهای اس تاندارد و توربو است : ;Max = 100 * Standard + 150 * Turbo 47
دانشگاه صنعتي فولد
حال محدودیت مربوط به ظرف یت خطوط تولید را اعمال می کنیم : ;Standard <= 100 ;Turbo <= 120 محدودی ت مربوط ب ه نیروی کار نی ز بص ورت زیر است : ! ;Our labor supply is limited ;Standard + 2 * Turbo <= 160
48
دانشگاه صنعتي فولد
توسعه مدل بهینه سازی در لینگو
همانن د اکث ر زبان های برنام ه نویس ی ،هر برنامه ی لینگو نیز دارای یک ساختار کلی می باشد .در این قسمت قالب اصلی یک برنامه به زبان لینگو را معرفی می کنیم ،تا خواننده دیدی کل ی از آ ن بدس ت آورد .آنچ ه در این فصل می بایست مورد توجه قرار گیرد اصول کل ی اس ت ک ه بدان پرداخت ه شده است؛ در فص ل های بعدی مطال ب ب ا تفصیل بیشتری مطرح خواهند شد. 49
دانشگاه صنعتي فولد
یک برنامه در لینگو با کلمه “ ” Modelآغاز و به کلمه “ ” Endخت م م ی شود و معمول از چهار بخ ش زیر تشکیل می شود :
بخش مجموعه ها؛ بخش داده ها؛ تابع هدف؛ بخش محدودیت ها؛
همچنین می توان در یک برنامه ،تابع هدف را بعد از نوشتن محدودیت ها آورد.
50
دانشگاه صنعتي فولد
مجموعه ها در لینگو مجموع ه ه ا در لینگ و در واق ع قالب ی برای تعریف متغیرهای برنامه می باشند )این متغیرها می توانند متغی ر تص میم گیری و یا پارامترهای عددی مدل باشند( .در لینگو دو نوع مجموعه داریم : مجموعه های مستقل؛ Primitive Sets مجموعه های وارث ؛ Derived Sets مجمو عه های م ستقل برای تعر یف متغیرهای آرایه ای یک بعدی و مجموعه های وارث برای تعریف آرایه های چند بعدی مورد استفاده قرار می گیرند.
51
دانشگاه صنعتي فولد
مجموعه های مستقل ساختار کلی تعریف مجموعه های مستقل در لینگو به صورت زیر می باشد : ; نام متغیرها / :عناصر مجموعه /نام مجموعه به عنوان مثال در برنام ه قب ل ،مجموع ه ای به نام Hourبا 24عنصر تعر یف شده ا ست و دو متغیر Xو Needنیز دو متغیر با 24عنصر هستند. برنامه است توجه کنید : ;Factory /1 .. 3 /:Setup_Cost
52
دانشگاه صنعتي فولد
Factoryو Setup_Costمعرف یک آرایه تک بعدی شامل 3خانه اند ،با این تفاوت که به خانه های Factoryمقداردهی نمی کنیم و آنها را در عملیات ریاضی شرکت نمی دهیم. برای مقدارده ی ب ه متغی ر Setup_Costبای د در بخش مقداردهی سه عدد به آن نسبت داد که این اعداد به ترتیب در خانه های اول تا سوم آن قرار می گیرند. )Setup_Cost)3
53
)Setup_Cost)2
دانشگاه صنعتي فولد
)Setup_Cost)1
نکته قابل ذکر در مورد عناصر مجموعه این است که اس م عناص ر م ی توان د عدد ،رشت ه ای از اعداد و یا حروف باشد) .فقط باید با حرف شروع شود(.
Department / Industrial, Mechanic, Civil, Electronic, ;Computer, Material/: Average ;WAREHOUSE / WH1, WH2, WH3/: CAPACITY ;CUSTOMER / C1, C2, C3, C4/: DEMAND
54
دانشگاه صنعتي فولد
مجموعه های وارث در لینگ و نم ی توان ب ه ص ورت مس تقیم ماتریس و آرایه های چند بعدی را تعریف کرد .برای تعریف آرایه های چن د بعدی از مجموع ه های وارث اس تفاده می کنیم. Sets: ;آرایه /اسم مجموعه های وارث / )(Set1 ;Car/1..3/ (مثال ; متغیرها ( Set1, Set2, Set3, … , Setn ) :اسم مجموعه وارث ;Demand (Car, City): Dem (مثال Endsets 55
دانشگاه صنعتي فولد
برای درک بهتر به مثال های کلی زیر توجه کنید : می کن د و مشتریان پن ج شه ر مختل ف نی ز سفارش های متفاوتی از هر نوع ماشین به کارخانه می دهند. حال زیر برنامه ی زیر را در نظر بگیرید: Sets: ;Car/1..3/ ;City/1..5/ ;Demand (Car, City): Dem Endsets ای ن زی ر برنام ه مجموع ه ای مس تقل ار نوع Carبه صورت آرای ه ت ک بعدی 3خان ه ای و مجموعه ای م ستقل از نوع Cityبه صورت یک آرا یه تک بعدی 5 خانه ای تولید می کند) .دقت کنید که متغیری از نوع Carیا Cityنداریم(. 56
دانشگاه صنعتي فولد
در خ ط چهارم ای ن زی ر برنام ه ،مجموعه وارث Demandبه صورت یک ماتریس 5*3و ماتریس Demاز نوع Demandتعری ف م ی شود؛ بنابرای ن در بخش مقداردهی ،می بایست 15عدد به متغیر Demنسبت داد ،که در این حالت مقدار تقاضای شهر jاز ماشین iدر خانه ای واقع در سطر iام و ستون jام ماتریس Demقرار می گیرد. در قسمت داخل اسلش ها )اندیس هایی که با هم ارتباط دارند( می توانیم اندیس هایی را ذکر کنیم که ارتباطشان با هم تعریف شده است .در صورت حذف قسمت بین اسلش ها ،فرض بر این است که ارتباط تمام اند یس ها در تمام ب عد ها ،با هم تعریف شده است و متغیرهای وابسته به مجموعه ،با تمام اندیس های خود می توانند مقدار بگیرند .استفاده از قسمت اند یس ها یی که ب ا ه م ارتباط دار ند به خصوص در مس ائل کنترل پروژ ه کاربرد دارد ک ه خود مبحثی روفولدمطالب را بیشتر برای پیش صنعتي 57جداگانه ا ست .مثال دانشگاه ما روشن می سازد:
SETS: TASK/A B C D E F G H I J K/: T; PRED (TASK, TASK) / A,B B,C C,F C,G F,J G,J J,K D,E E,H E,I H,J I,J/; STATION /1..4/; TXS (TASK, STATION): X; ENDSETS
دانشگاه صنعتي فولد
58
در مثال فوق مجموعه TASKاز 11عضو تشکیل یافته اس ت و مجموع ه STATIONاز 4عضو .با این وجود مجموعه PREDبه جای 11*11=121عضو تنها از 12عضو مشخص شده ،تشک یل شده در حا لی که TXSشامل 11*4=44عضو می باشد. توجه کنید که در برنامه های مختلف گاهی مواردی پیش می آید که هنگام کار با مجموعه ها )در تعریف مجموعه ها و یا هنگام استفاده از توابع forو یا ( sum برخی از اندیس های مجمو عه را می بایست نادیده گرفت و یا هر شرط خاص دیگری را باید با برخی از اندیس های مجموعه ها )و نه تمامی آنها( اعمال کرد؛ در این حالت از عملگرهای مختلف و عبارات شرطی استفاده می کنیم که در فصل های آتی در مورد آنها به تفصیل بحث خواهیم کرد.
59
دانشگاه صنعتي فولد
بخش داده ها بخ ش داده ه ا ب ه م ا ای ن امکان را می ده د ک ه داده ه ا را از بقیه مدل جدا کنیم .این کار باعث می شود در هنگام تغی یر و یا تو سعه مدل را حت تر و کم اشتباه تر عمل کنیم .در بخش داده که مابین دو کلمه کلیدی DATAو ENDDATA اس ت م ی توانی م مقادی ر پارامترها و اس م عناص ر مجموع ه های ی را که در بخش قبلی تعریف شده اند مقداردهی 60کنیم. دانشگاه صنعتي فولد
1) SETS: SET1 / A, B, C/: X, Y; ENDSETS DATA: X = 1, 2, 3; Y = 4, 5, 6; ENDDATA
دانشگاه صنعتي فولد
61
3)
2) SETS SET1 / A, B, C/: X, Y; ENDSETS DATA X, Y = 1, 4, 2, 5, 3, 6; ENDDATA
SETS SET1 : X, Y; ENDSETS DATA SET1, X, Y = A 1 4 B25 C 3 6; ENDDATA
ابعاد داده ها دقيقا بايد با ابعاد مجموعه ها يکسان باشد دانشگاه صنعتي فولد
62
و Cاست که دو خصیصه Xو Yبه آن نسبت داده شده و جواب هر سه برابر است با : Y ( A ) = 4, Y ( B ) = 5, Y ( C ) = 6
X ( A ) = 1, X ( B ) = 2, X ( C ) = 3
تعریف و مقداردهی کرد .مثل : DATA ;INTEREST_RATE = .085 ENDDATA DATA ;INTEREST_RATE, INFLATION_RATE = .085, .03 ENDDATA INTEREST_RATEدر هر دو مثال فوق برابر 085.و در مثال دوم INFLATION_RATEبرابر 03.است.
63
دانشگاه صنعتي فولد
تحلیل What if
و می خواهی م برای محدوده ای از اعداد این پارامتر را مقداردهی کرده و مدل را حل کنیم. در این مواقع در قسمت داده ها به جای اینکه مقدار عددی آ ن پارامت ر را وارد کنی م علمت سوال “ ? ” قرار می دهیم .در این صورت هر بار ک ه م ی خواهی م مدل را ح ل کنی م ،لینگو مقدار عددی این پارامتر را از ما می پرسد و سپس شروع به حل مدل می کند .به مثال زیر توجه کنید. 64
دانشگاه صنعتي فولد
DATA: ? = INFLATION_RATE ENDDATA
در این مثال ،در هر بار حل مدل ،لینگو مقدار INFLATION_RATEرا ب ه وسیله پنجره ای از ما می خواهد. به مثال های زی ر در مورد مقداردهی تکی به متغیرها و پارامتر ها توجه کنید : 65
دانشگاه صنعتي فولد
SETS DAYS / MO, TU, WE, TH, FR, SA, SU/: NEEDS; ENDSETS DATA: NEEDS = 20; ENDDATA
می20 مقدارNEEDS در این مثال همه اعضای .گیرند
دانشگاه صنعتي فولد
66
SETS DAYS / MO, TU, WE, TH, FR, SA, SU/: NEEDS, COST; ENDSETS DATA: NEEDS, COST = 20, 100; ENDDATA
و20 مقدارNEEDS در ای ن مثال همه اعضای . می گیرند100 مقدارCOST همه اعضای
دانشگاه صنعتي فولد
67
در بخش داده ها اگر مقدار برخی از متغیرها وارد نشده باش د ،آنه ا ب ه صورت متغیرهای تص میم در نظ ر گرفت ه م ی شون د نه اعداد ثابت .به مثال زیر توجه کنید : SETS ;YEARS / 1..5 /: CAPACITY ENDSETS DATA ; CAPACITY = 34, 34, , , ENDDATA در این مثال (CAPACITY (1و (CAPACITY (2برابر
34در نظر گرفته می شوند و عناصر سوم تا پنجم CAPACITYمتغیر به حساب می آیند. 68
دانشگاه صنعتي فولد
بخش جواب اولیه
در بعضی از مسائل ،ما جوابی نسبتا خوب و نزدیک به بهینه را داریم و به دنبال یافتن جواب بهینه و یا بهتر هستیم .در این موارد (خصوصا در مدل های عدد صحیح و غیر خطی) با دادن جواب اولیه به لینگو ،سریعتر به جواب بهینه و یا بهتر خواهیم رسید .این کار که اختیاری می باشد در بخش جواب اولیه و مابین دو کلمه کلیدی INITو ENDINITصورت می گیرد :INIT 69
دانشگاه صنعتي فولد
توابع و عملگرها در لینگو برای تس هیل مدل س ازی ،در لینگ و توابع و عملگرهای متفاو تی وجود دارند .حتی ا گر با شک ل کل ی اس تفاده از ای ن تواب ع آشنایی نداشت ه باشی د ،لینگ و ای ن شک ل کلی را در اختیار شما قرار می دهد .برای این منظور در منوی Editگزینه Paste Functionرا انتخاب نمایید ،ملحظه می کنید که لیستی از انواع توابع برای شما نمایش داده می شود.
70
دانشگاه صنعتي فولد
: این لیست به شرح زیر می باشد
External Files Functionتوابع خارجي Financial Functionتوابع مالي Mathematical Functionتوابع ریاضي Probability Functionتوابع احتمالي Set Functionتوابع مجموعه Variable Domain Functionتوابع قلمرو ومتغیر Other Functionسایر توابع
دانشگاه صنعتي فولد
71
بررس ی ت ک ت ک ای ن تواب ع از س طح کار ما فرات ر اس ت؛ همچنی ن ب ه خاط ر عدم نیاز به توابع مالی و احتمالی در برنامه ریزی خطی در اینج ا فق ط ب ه تشری ح برخ ی تواب ع دسته پنجم و ششم می پردازیم. )در ص ورتی ک ه مایلید اطلعات بیشتری در ارتباط ب ا س ایر تواب ع لینگ و بدس ت آورید در منوی Helpگزینه Help Topicsرا انتخاب نمایید و پنجره محاوره ای باز شده را در حالت Index قرار دهید؛ سپس کلمه Functionرا تایپ کنید، در این حالت لینگو اطلعات مفید بسیاری در اختیار شما قرار می دهد(. 72
دانشگاه صنعتي فولد
قبل از معرفی توابع به این نکته مهم توج ه کنی د ک ه در لینگ و هنگام به کار بردن توابع ،میبایست قبل از نام تابع از علمت @ استفاده کرد. در اینج ا ب ه بررس ی دو تاب ع FORو SUMمی پردازیم. 73
دانشگاه صنعتي فولد
تابعFOR این تابع در دسته Set Loopingیعنی توابع حلقه ای قرار دارد و شکل کلی آن بصورت زیر می باشد : ;)@FOR( Set : expression عمل کنید : ;)@FOR( Set | condition: expression
وجود تابع Forدر لینگو در واقع یکی از برتری های بارز این زبان می باشد .از این تابع برای نس بت دادن ی ک ویژگ ی ب ه تمام ی ا بخشی از اعضای ی ک مجموع ه اس تفاده م ی کنیم .به 74مثال های زیر توجه کنید : دانشگاه صنعتي فولد
فرض کنید انباری داریم که در آن هفت قلم کالی متفاوت نگهداری می کنیم: SETS: ;Items /1..7/: Capacity ENDSETS
حداکث ر 12واح د از ه ر قل م م ی توان در آن نگهداری کرد .برای وارد کردن این محدودیت به صورت زیر عمل می کنیم : @;(For(Items (i): Capacity (i) <= 12
75
دانشگاه صنعتي فولد
این عبارت در واقع معادل عبارت زیر است : ;Capacity (1) <= 12 ;Capacity (2) <= 12 ;Capacity (3) <= 12 ;Capacity (4) <= 12 ;Capacity (5) <= 12 ;Capacity (6) <= 12 ;Capacity (7) <= 12 از آنج ا ک ه تمام متغیرهای ب ه کار رفت ه در مجموعه Itemsقرار دارند ،عبارت بال را به صورت زیر نیز می توان نوشت : ;)@For(Items: Capacity <= 12 توجه کنید که در صورتی که متغیرهای به کار رفته در Forمتعلق به مجموعه های متفاوت باشند نمی توان از شکل خلصه شده بال استفاده کرد. 76
دانشگاه صنعتي فولد
حال فرض کنی د ظرفی ت انبار فقط برای دو قل م کالی آخر )اقلم 6و ( 7 محدودیت داشته باشد؛ برای وارد کردن ای ن محدودی ت از عبارات شرطی و عملگرهای منطقی استفاده می کنیم : @;(For(Items (i) | i#GT#5: Capacity (i) <= 12
77
دانشگاه صنعتي فولد
تابعSUM این تابع نیز همانند تابع Forدر دسته توابع Set Loopingقرار دارد و شک ل کل ی کاربرد آ ن به
صورت زیر می باشد : ;)@SUM (Set: expression عمل کنید : ;)@SUM (Set | condition: expression
از این تابع برای محاسبه حاصل جمع اعضای یک مجموع ه ی ا عبارت ی شام ل اعضای یک مجموعه استفاده می کنیم .برای روشن شدن مطلب به مثال های زیر توجه کنید :
78
دانشگاه صنعتي فولد
فرض کن ید 5مشتری مخت لف تقاضاهای متفاوتی از کالی Xدارند؛ حال این زیر برنامه را در نظر بگیرید : SETS: ;Customers /1 2 3 4 5/: Demand ENDSETS DATA ;Demand = 5 1 3 4 6 ENDDATA حال اگ ر بخواهی م مجموع تقاضاها برای کالی Xرا محاس به نمایی م ،کافیس ت عبارت زی ر را ب ه برنامه بیافزاییم : ;((Total_Demand = @Sum (Customers (i): Demand (i
79
دانشگاه صنعتي فولد
: Total_Demand = Demand (1) + Demand (2) + Demand (3) + Demand (4) + Demand (5);
می توانس تیم از عبارت خلص ه شده زی ر نیز : استفاده کنیم Total_Demand = @Sum (Customers: Demand);
دانشگاه صنعتي فولد
80
«بخش سوم « حل مسائل
انواع مسائل – Case Studyبیان مسئله تحلیل خروجی تحلیل حساسیت
81
دانشگاه صنعتي فولد
انواع مسائل لینگو قادر به حل مسائل مخت لف بهی نه سازی از جمل ه برنام ه های خط ی ،کوآدراتی ک ،خطی عدد صحیح ،کوآدراتی ک عدد ص حیح ،عدد ص حیح خطی خال ص ،عدد ص حیح کوآدراتی ک خال ص ،غی ر خطی، غی ر خط ی عدد ص حیح و غی ر خط ی عدد صحیح خال ص م ی باشد .مدل های فوق توس ط لینگو تشخیص داده شده و در گزارش خروجی مدل پس از حل آن به ترتیب فوق LP ،QP ،ILP ،IQP ،PILP، PIQP ،NLP ،INLP ،PINLPخواهی م داشت .در اینجا به پیاده س ازی و تحلی ل ی ک مدل خط ی می پردازیم.
82
دانشگاه صنعتي فولد
Case Study شرکت داکوتا فرنیچر ،تولید کننده میز تحریر ،میز و صندلی است .تولید هر کدام از انواع مبلمان به الوار و دو نوع نیروی کار ماهر در دو زمینه نجاری و پرداخت نیاز دارد .انواع مبلمان به الوار و دو نوع نیروی کار ماهر در دو زمینه نجاری و پرداخت نیاز دارد .مقدار هر یک از منا بع مورد نیاز برای تولید هر یک از انواع مبلمان در جدول ذیل آمده است :
83
منبع
میز تحریر
میز
صندلی
الوار )فوت تخته(
8
6
1
زمان پرداخت )ساعت( زمان نجاری )ساعت(
4
2
5/1
2
5/1
5/0
دانشگاه صنعتي فولد
در حال حاض ر 48 ،فوت تخت ه از الواره ا 20 ،ساعت زمان پرداخت و 8ساعت زمان نجاری موجود است . هر میز تحری 60دلر ،میز 30دلر و صندلی 20دلر به فروش می رسد .با فرض اینکه منابع در دسترس به تازگی تدارک دیده شده باشند ،شرکت داکوتا می خواهد کل سود خود را به حداکثر برساند. متغیر های تصمیم بصورت ذیل تعریف شده اند : : Deskتعداد میز تحریرهای تولید شده : Tableتعداد میزهای تولید شده : Chairتعداد صندلی های تولید شده
84
دانشگاه صنعتي فولد
شرکت داکوتا به حل مدل خطی زیر نیاز دارد : Max z = 60 Desk + 30 Table + 20 Chair s.t (محدیدیت الوار( 8 Desk + 6 Table + Chair <= 48 محدودیت( 4 Desk + 2 Table + 1.5 Chair <= 20 (پرداخت
(محدودیت نجاری( 2 Desk + 1.5 Table + 0.5 Chair <= 8 (محدودیت تقاضای میز( Table <= 5 Desk, Table, Chair >= 0
85
دانشگاه صنعتي فولد
مدل فوق به زبان لینگو در قسمت Lingo Modelوارد می شود :
86
دانشگاه صنعتي فولد
با استفاده از گزینه Solveجواب نهایی سیمپلکس بصورت زیر خواهد بود :
87
دانشگاه صنعتي فولد
تحلیل خروجی Objective value: 280.0000 Valueمقدار متغیر در جواب بهینه مدل خطی را می دهد .بنابراین جواب بهینه داکوتا تولید 2میز تحریر، صفر میز ،و 8صندلی است. Reduced Costضریب متغیر در سطر صفر جدول بهینه را می دهد )مسئله ماکزیمم سازی( .همانگونه که می دانی د بای د هزین ه کاه ش یافت ه ه ر متغی ر پایه برابر صفر باشد .برای یک متغیر غیر پایه ،xjهزینه کاهش یافته مقداری است که اگر x j ، 1واحد اضافه شود ،به آن اندازه ،جواب بهی نه کاهش می یابد )درحالی که بقی ه متغیرهای غی ر پای ه برابر ص فر بمانند( .در خروجی لینگو برای مسئله داکوتا ،هزینه کاهش یافته میز برابر 5ا ست .ا ین یع نی اگر داکو تا بخوا هد یک میز تولید کند ،درآمد به اندازه 5دلر کاهش خواهد دانشگاه صنعتي فولد 88یافت.
در قس مت بعدی از خروج ی ی ا Reportمشاهده می کنیم که هر خط مدل با شماره ای مشخص شده و در مقابل آن دو عبارت Slack or Surplusو Dual Priceمشاهده می شود : Slack or Surplusمقدار کمبود یا اضافی )مازاد( در جواب بهینه را نشان می دهد .بنابراین 24فوت تخته الوار و 5عدد میز به صورت مازاد وجود خواهد داشت. Dual Priceیا قیمت سایه مقداری است که اگر سمت راست محدودیت ،یک واحد اضافه شود ،به آن اندازه جواب بهین ه ،بهبود م ی یاب د ) با فرض اینک ه این تغییرات باعث از دست رفتن پایه بهینه فعلی نمی شون د ( .اگ ر بع د از ی ک تغیی ر در طرف راست محدود یت ،پا یه فع لی دی گر بهی نه نما ند ،قیمت های سایه محدودیت ها ممکن است تغییر کند. 89
دانشگاه صنعتي فولد
تحلیل حساسیت پس از حل مدل توسط Solveبا استفاده از گزینه Rangeموجود در منوی LINGOگزارش خروج ی تحلی ل حساسیت مدل را مشاهده می کنیم ،در صورت مشاهده خطا وارد LINGO Option شده و گزین ه Dual Computationsاز قسمت General Solverرا در حالت سوم قرار دهید.
90
دانشگاه صنعتي فولد
تحلی ل حس اسیت نشان م ی ده د ک ه ضرایب تابع تا چه میزان می توانند افزایش یا کاهش یاب ند بدون این که پا یه بهی نه م سئله )مجموعه متغیرهای غی ر ص فر( عوض شود .تحلیل حساسیت شامل دو بخش است ،یکی مربوط به تاب ع هدف و دیگری مربوط ب ه محدودیت ها ،که در هر کدام به تفکیک مقدار واقعی و مقادیر کاهش و افزایش قید شده است. در پایان با استفاده از گزینه Solutionدر منوی LINGOمی توانید نمایش گرافیکی از هر یک از متغیرهای موجود در مدل را داشته باشید. 91
دانشگاه صنعتي فولد
ساير ابزارهای نرم افزار چک کردن و تصحيح پرانتزها : گاهی در عبارتهای طولنی و پيچيده رياضی ،زيادی تعداد پرانتزها و عملگرهای محاسباتی ،ممکن است تا حدودی گيج کننده باشد به طوری تشخيص اينکه هر پرانتز دقيقا در چه محلی بسته يا باز می شود ،کار مشکلی به نظر می رسد .در صورتی که بخواهيم تعيين کنيم که يک پرانتز ،دقيقا در چه محلی بسته يا باز می شود ،کافی است که آن پرانتز را انتخاب کرده و سپس از منوی " ، " Editگزينه " " Match Parenthesisيا از نوار ابزار ،آيکن مربوطه را انتخاب کنيم .در اين حاات ،نرم افزار ،به طور خودکار ،پرانتز متناظر با پرانتز انتخاب شده را نشان می دهد. 92
دانشگاه صنعتي فولد
نمايش فرم ماتريسی مدل : برای هر مدل نوشته شده به وسيله ، Lingoمی توان مدل ماتريسی معادل آن را هم توليد کرد .کاربرد اين ابزار زمانی است که فهم مدل نوشته شده با نرم افزار ،برای کاربر مشکل است .در اين حالت ،می توان با مشاهده مدل ماتريسی معادل ،به راحتی ابهامات موجود را رفع و مدل را تحليل کرد .برای اين کار ، گزينه " " Pictureرا از منوی " " Lingoانتخاب می کنيم .در شکل ظاهر شده ،با کليک راست ماوس ،می توان نام متغيرها و نام محدوديتها را هم ديد و به کمک " " Zoom Inو " Zoom ، " Outروی ضرايب مورد نظر تمرکز کرد .با دابل کليک روی يک ضريب ،می توان نام متغير متناظر با آن را در بالی صفحه و سطر ( محدوديت ) متناظر با آن را در سمت چپ صفحه ديد. 93
دانشگاه صنعتي فولد
94
دانشگاه صنعتي فولد
نمايش حالت استاندارد مدل : برای هر مدل نوشته شده به وسيله ، Lingoمی توان مدل استاندارد معادل آن را توليد کرد .کاربرد اين ابزار زمانی است که فهم مدل نوشته شده با نرم افزار ،برای کاربر مشکل است .در اين حالت ،می توان با مشاهده مدل استاندارد معادل ،به راحتی ابهامات موجود را رفع و مدل را تحليل کرد .برای اين کار ،ابتدا گزينه " Generate " را از منوی " " Lingoبرگزيده و " Display " Modelرا انتخاب می کنيم. 95
دانشگاه صنعتي فولد