PRESENTATION NAME Description 1

Download Report

Transcript PRESENTATION NAME Description 1

PRESENTATION NAME
Description
1
‫به نام خدا‬
‫آشنایی با نرم افزار‪LINGO‬‬
‫استاد راهنما‪ :‬جناب آقای نعمت الهی‬
‫تهیه و تنظیم‪ :‬آیدا صفایی – منیره پاکدل‬
‫زمستان ‪91‬‬
‫‪2 -21‬‬
‫مقدمه‬
‫‪• LINGO‬‬
‫‪• Linear Interactive & General Optimizer‬‬
‫بسته های نرم افزاری لیندو و لینگو توسط شرکت لیندو سیستمز برای •‬
‫حل مسائل بهینه سازی در دانشگاه‪ ،‬صنعت و تجارت‪ ،‬طراحی گردیده‬
‫است‪.‬‬
‫لینگو ابزاری ساده برای بهره گیری از قدرت برنامه ریزی خطی و غیر خطی •‬
‫در فرموله کردن مسائل خیلی بزرگ به صورت مختصر و تجزیه و تحلیل‬
‫آنهاست‪.‬‬
‫‪3-21‬‬
‫قابلیتهای لینگو‬
‫‪‬قابلیت مدل سازی بصورت کارا و صحیح؛‬
‫‪ ‬قابلیت باالی تحلیل مدل؛‬
‫‪ ‬دارا بودن توابع مختلف ریاض ی‪ ،‬آماری و احتمالی؛‬
‫‪ ‬قابلیت خواندن اطالعات از ‪ File‬ها و ‪ Worksheet‬های‬
‫دیگر(مثل ‪)Excel‬؛‬
‫‪ ‬کار کردن در محیط ‪.Windows‬‬
‫‪‬داشتن تنظیمات مختلفی از طریق ‪Lingo Option‬‬
‫‪4 -21‬‬
‫مزایای لینگو‬
‫لینگو قادر به حل مسائل مختلف بهینه سازی از جمله‪:‬‬
‫برنامه های خطی‪،‬‬
‫کوآدراتیک‪،‬‬
‫خطی عدد صحیح‪،‬‬
‫کوآدراتیک عدد صحیح‪،‬‬
‫عدد صحیح خطی خالص‪،‬‬
‫عدد صحیح کوآدراتیک خالص‪،‬‬
‫غیر خطی‪،‬‬
‫غیر خطی عدد صحیح‬
‫غیر خطی عدد صحیح خالص می باشد‪.‬‬
‫‪5 -21‬‬
‫آشنایی با نوار ابزارها‬
‫کلید‬
‫کلید‬
‫کلید‬
‫کلید‬
‫کلید‬
‫کلید‬
‫کلید‬
‫‪Solve‬‬
‫‪Cut‬‬
‫‪Help‬‬
‫‪Topics‬‬
‫‪Find‬‬
‫‪Undo‬‬
‫‪New‬‬
‫‪Send To Back‬‬
‫‪Solution‬‬
‫‪Go‬‬
‫‪To Line‬‬
‫‪Redo‬‬
‫‪Help‬‬
‫‪Copy‬‬
‫‪Open‬‬
‫‪Close‬‬
‫‪All‬‬
‫‪Matrix‬‬
‫‪Picture‬‬
‫‪Match Parenthesis‬‬
‫‪Save‬‬
‫‪Tile‬‬
‫‪Windows‬‬
‫‪Paste‬‬
‫‪Options‬‬
‫‪Print‬‬
‫‪6 -21‬‬
‫برد‬
‫کاکا‬
‫بردبرد‬
‫بردرکارررکا‬
‫بردر‬
‫کار‬
‫برد‬
‫کاکاربرد‬
‫‪Help‬ی‬
‫باشد‪.‬باشد‪.‬‬
‫‪Lingo‬‬
‫منو‬
‫‪Solve‬‬
‫گزینه‬
‫بر‬
‫می‪..‬‬
‫باشد‬
‫‪Edit‬‬
‫منو‬
‫‪Undo‬از‬
‫‪Cut‬‬
‫منوازی‬
‫باشد‬
‫‪New‬‬
‫گزینه‬
‫کلیدبر‬
‫کلید میان‬
‫منویی‬
‫باشد‪.‬‬
‫‪File‬می‬
‫‪Find‬ر‬
‫کلیکازب‬
‫جستجو و‬
‫کلید‬
‫گزینه‬
‫میانبربر‬
‫میان‬
‫کلید‬
‫میمیمی‬
‫‪Edit‬‬
‫ایاز‬
‫گزینه‬
‫میان‬
‫کلید‬
‫کلید میان بر گزینه ‪ Send To Back‬از منوی ‪ Window‬می باشد‪.‬‬
‫منوی‬
‫باشد‪.‬‬
‫منو‬
‫‪Go‬یاز‬
‫‪Solution‬‬
‫گزینه‬
‫میان‬
‫کلیدکلید‬
‫‪File‬ی‬
‫ی‬
‫میباشد‪.‬‬
‫‪Lingo‬می‬
‫‪Edit‬‬
‫‪To‬‬
‫‪Line‬‬
‫گزینه‬
‫بر بر‬
‫میان‬
‫باشد‪.‬‬
‫می‪.‬می‬
‫باشد‬
‫‪Edit‬‬
‫ازییمی‬
‫‪Help‬‬
‫منو‬
‫‪ Copy‬از‬
‫‪Redo‬‬
‫گزینهاز‬
‫بر‬
‫میان‬
‫کلیدبربر‬
‫میان‬
‫کلید‬
‫‪Open‬منواز‬
‫گزینه‬
‫کلیدکلیدمیان‬
‫باشد‪.‬می باشد‪.‬‬
‫‪Window‬‬
‫منو منو‬
‫‪ Close‬از‬
‫گزینه ‪All‬‬
‫میان بر‬
‫‪Match‬ازازمنوی‬
‫باشد‪.‬‬
‫‪MatrixParenthesis‬‬
‫گزینهگزینه ‪Picture‬‬
‫میان بر‬
‫کلیدکلید‬
‫میباشد‪.‬‬
‫‪Lingo‬می‬
‫‪Edit‬‬
‫بر‬
‫میان‬
‫باشد‪..‬‬
‫منومییباشد‬
‫‪Edit‬می‬
‫‪File‬‬
‫منو‬
‫از‬
‫‪Save‬‬
‫گزینه‬
‫بر‬
‫میان‬
‫منویمنوی‬
‫‪ Window‬می باشد‪.‬‬
‫‪Tile‬یاز‬
‫‪Windows‬‬
‫گزینه‬
‫بر‬
‫میان‬
‫کلید‬
‫کلید کلید میان بر گزینه ‪ Paste‬از‬
‫کلید میان بر گزینه ‪ Options‬از منوی ‪ Lingo‬می باشد‪.‬‬
‫کلید میان بر گزینه ‪ Print‬از منوی ‪ File‬می باشد‪.‬‬
‫)‪Menus (LINGO Menu‬‬
‫مدل مربوط به پنجره فعال را برای حل‪ ،‬به حل کننده لینگو می فرستد‬
‫‪Solve‬‬
‫جعبه محاوره ای )‪ ،(Dialog Box‬گزینه هایی ازگزارش حل را بازمی کند‪ ،‬کهه اماهان یعیهین نگهونای هاهرمهورد نظهرگهزارش حهل را فهراهم‬
‫می کنند‬
‫‪Solution‬‬
‫یههگ گهزارش حههد (تحلیههل حساس ه ت) ارائههه مههی کنههد‪ .‬ایههگ گهزارش نمههان مههی دهههد کههه ی ییههران هرای مههی توانههد درنههه محههدوده ای باشههد‪ ،‬بههدون‬
‫اینکه مقادیر بهینه عوش شوند‬
‫‪Range‬‬
‫اماان مماهده و ی ییرپارامترهای مختلفی را که درهناام استفاده ازلینگو درگیر هستند‪ ،‬فراهم می کند‬
‫ویرایش دیگری از مدل را به صورن جبری‪ ،‬تحت لیندو و یا ساختار ‪ MPS‬تولید می کند‪ .‬ایگ فرمان می تواند برای شماره گذاری سطر ها و‬
‫نمایش مدل به صوریی که کاربربتواند راحت تربا آن کارکند‪ ،‬مورد استفاده قرارمی گیرد‪ .‬فرمان ‪ ،GEN‬ازپنجره فرمان نیز‪ ،‬دارای‬
‫قابلیت ممابهی ازایگ نوع است‬
‫‪Options‬‬
‫‪Generate‬‬
‫مدل را بصورن ماتریس ی نمایش می دهد‬
‫‪Picture‬‬
‫خطاهای موجود درمدل را یافته و تو یح می دهد‬
‫‪Debug‬‬
‫اطالعایی راجع به مدل در اختیار قرار می دهد (مانند یعداد مت یرها‪ ،‬یعداد سطرها و‪)...‬‬
‫تمام و یا قسمتی ازسطرهای انتخابی مدل را نمایش می دهد‬
‫‪7-21‬‬
‫‪Model Statistics‬‬
‫‪Look‬‬
‫کلیات برنامه نویس ی‬
‫‪‬در لینگو هر عبارت با یک ” ; “ پایان می یابد؛‬
‫‪ ‬هرگاه بخواهیم یک عبارت توضیحی به متن برنامه بیافزاییم‬
‫کافیست در ابتدای عبارت از عالمت تعجب ( ! ) استفاده کنیم‪ .‬این‬
‫توضیحات نیز به ” ; “ ختم می شوند؛‬
‫‪ ‬کلیه عبارات متنی که مابین ( ! ) و ” ; “ نوشته می شوند از سوی‬
‫لینگو نادیده گرفته می شوند؛‬
‫‪ ‬لینگو به بزرگ یا کوچک بودن حروف حساس نیست؛‬
‫‪8-21‬‬
‫کلیات برنامه نویس ی (ادامه)‬
‫‪ ‬نوشتن تابع هدف ‪:‬‬
‫تابع هدف بسته به اينکه به صورت حداکثرسازی يا حداقل سازی‬
‫باشد ‪ ،‬به شکل " … = ‪ "Max‬يا " … = ‪ "Min‬نوشته می‬
‫شود‪.‬‬
‫‪9 -21‬‬
‫حالت ساده مدل نویس ی‬
‫‪ ‬در این حالت وارد کردن مدل شبیه تایپ کردن در یک محیط پردازشگر متنی تحت ویندوز‬
‫است؛ یعنی تقریبا باید آنچه را که به صورت دستی نوشته اید‪ ،‬وارد نرم افزار کنید‪ .‬کاربر می‬
‫تواند اطالعات ورودی خود را در پنجره ی داخلی که ابتدا تحت عنوان ‪Lingo Model‬‬
‫است‪ ،‬وارد کند‬
‫‪ ‬لینگو نیازمند تابع هدف‪ ،‬یک یا چند متغیر (و محدودیت) است‪.‬‬
‫‪10-21‬‬
‫مسئله‪:1‬‬
‫شرکتی دو نوع محصول توليد ميکند‪.‬برای ساخت اين دو نوع محصول از‬
‫دونوع ماده اوليه ‪ A‬و‪ B‬استفاده ميکند‪.‬حداکثر ميزان در دسترس از اين‬
‫مواد به ترتيب ‪6‬و‪ 8‬واحد است‪.‬اگر سود حاصل از فروش هرواحد از‬
‫محصوالت ‪1‬و‪ 2‬بترتيب ‪3‬و‪ 2‬باشد برای داشتن حداکثر سود چه بايد کرد؟‬
‫‪11-21‬‬
‫محصول‬
‫ماده‬
‫‪2‬‬
‫‪1‬‬
‫‪2‬‬
‫‪1‬‬
‫‪A‬‬
‫‪1‬‬
‫‪2‬‬
‫‪B‬‬
‫کاربا منوی ‪LINGO‬‬
‫فرمان های ‪ Solution‬و‬
‫‪ Range‬پس از حل مدل فعال‬
‫خواهند شد‪.‬‬
‫فرمان ‪ Solution‬را پس از حل مدل‬
‫اجرا می کنیم‪ ،‬پنجره ی مقابل باز‬
‫خواهد شد‪.‬‬
‫‪12-21‬‬
‫مسئله‪:2‬‬
‫محصولی از دو تکه تشکیل میشود‪.‬اطالعات زیر از این محصول در‬
‫دسترس است‪.‬‬
‫تکه‪2‬‬
‫تکه‪1‬‬
‫ظرفیت‬
‫دپارتمان‬
‫‪15‬‬
‫‪13‬‬
‫‪150‬‬
‫‪1‬‬
‫‪16‬‬
‫‪14‬‬
‫‪200‬‬
‫‪2‬‬
‫اگر هدف ساخت بیشترین محصول تولیدی باشدو بخواهیم کمترین‬
‫میزان قطعه بالاستفاده را داشته باشیم‪ ،‬مسئله را حل نمایید‪.‬‬
‫‪13-21‬‬
‫مجموعه ها در لینگو‬
‫مجموعه ها در لینگو در واقع قالبی برای تعریف متغیرهای برنامه می باشند (این متغیرها می‬
‫توانند متغیر تصمیم گیری و یا پارامترهای عددی مدل باشند)‪ .‬در لینگو دو نوع مجموعه‬
‫داریم ‪:‬‬
‫‪ ‬مجموعه های مستقل؛ ‪Primitive Sets‬‬
‫‪ ‬مجموعه های وارث ؛ ‪Derived Sets‬‬
‫مجموعه های مستقل برای تعریف متغیرهای آرایه ای یک بعدی و مجموعه های وارث برای‬
‫تعریف آرایه های چند بعدی مورد استفاده قرار می گیرند‪.‬‬
‫‪14-21‬‬
‫مجموعه های مستقل‪:‬‬
‫ساختار کلی تعريف مجموعه های مستقل در لينگو به شکل زير می‬
‫باشد‪:‬‬
‫; نام متغيرها‪ / :‬عناصر مجموعه ‪ /‬نام مجموعه‬
‫مثال‪:‬‬
‫;‪Factory / 1…3 / :setup_cost‬‬
‫;‪Costumer / c1,c2,c3,c4 / :demand‬‬
‫‪15-21‬‬
‫مجموعه های وارث‪:‬‬
‫در لینگو نمی توان بطور مستقیم ماتریس و آرایه های چند بعدی را تعریف‬
‫کرد‪ .‬برای تعریف آنها از مجموعه های وارث استفاده میکنیم‪.‬‬
‫ساختار کلی نوشتن این مجموعه ها‪:‬‬
‫)‪ /;)set1‬آرايه ‪ /‬اسم مجموعه مستقل‬
‫;‪Car / 1…3 /‬‬
‫;متغيرها (‪ : )set1,set2,…,setN‬اسم مجموعه وارث‬
‫;‪Demand (Car, City): Dem‬‬
‫‪16 -21‬‬
‫برای درک بهتر به مثال کلی زیر توجه کنید‪:‬‬
‫فرض کنید کارخانه ای ‪3‬نوع ماشین مختلف تولید میکند و مشتریان ‪5‬شهر‬
‫مختلف نیز سفارشهای متفاوتی از هر نوع ماشین به کارخانه می دهند‪.‬حال‬
‫زیربرنامه زیر را در نظر‬
‫بگیرید‪:‬‬
‫‪Sets:‬‬
‫;‪Car/1..3/‬‬
‫;‪City/1..5/‬‬
‫;‪Demand (Car, City): Dem‬‬
‫‪End sets‬‬
‫این زیربرنامه مجموعه ای مستقل از نوع‪ car‬به صورت آرایه تک بعدی ‪3‬خانه‬
‫ای و مجموعه ای مستقل از نوع ‪ city‬به صورت یک آرایه تک بعدی ‪ 5‬خانه‬
‫ای تولید میکند‪.‬‬
‫در خط چهارم این زیربرنامه ‪،‬مجموعه وارث ‪ demand‬بصورت یک ماتریس‬
‫‪ 5*3‬و ماتریس ‪ dem‬ازنوع ‪ demand‬تعریف میشود‪.‬‬
‫‪17 -21‬‬
‫بخش داده ها‬
‫بخش داده ها به ما این امکان را می دهد که داده ها را از بقیه مدل جدا‬
‫کنیم‪ .‬این کار باعث می شود در هنگام تغییر و یا توسعه مدل راحت تر و کم‬
‫اشتباه تر عمل کنیم‪ .‬در بخش داده که مابین دو کلمه کلیدی ‪ DATA‬و‬
‫‪ ENDDATA‬است می توانیم مقادیر پارامترها و اسم عناصر مجموعه هایی را‬
‫که در بخش قبلی تعریف شده اند مقداردهی کنیم‪.‬‬
‫‪18- 21‬‬
SETS:
SET1 / A, B, C/: X, Y;
ENDSETS
DATA:
X = 1, 2, 3;
Y = 4, 5, 6;
ENDDATA
19 -21
20-21
21