Lingo

  • April 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Lingo as PDF for free.

More details

  • Words: 8,042
  • Pages: 95
‫‪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‬‬

‫دانشگاه صنعتي فولد‬

Related Documents

Lingo
April 2020 11
Ejercicios Lingo
October 2019 13
Txt Lingo
October 2019 18
Catholic Lingo Ii
May 2020 10
Aussie Lingo Ebook
November 2019 24
Catholic Lingo I
May 2020 22