1 / 102

واحد علوم وتحقيقات تهران دانشكده مديريت واقتصاد مديريت فن آوري اطلاعات

واحد علوم وتحقيقات تهران دانشكده مديريت واقتصاد مديريت فن آوري اطلاعات. موضوع : نرم افزار lingo . تهيه كنندگاه : احمد محمدي – عليرضا روتيوند غياثوند – نقوي . مقدمه اي بر لينگو.

rock
Télécharger la présentation

واحد علوم وتحقيقات تهران دانشكده مديريت واقتصاد مديريت فن آوري اطلاعات

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. واحد علوم وتحقيقات تهران دانشكده مديريت واقتصاد مديريت فن آوري اطلاعات موضوع : نرم افزارlingo تهيه كنندگاه : احمد محمدي –عليرضا روتيوند غياثوند – نقوي

  2. مقدمه اي بر لينگو بسته هاي نرم افزاري ليندو و لينگو توسط شرکت ليندو سيستمز(1) براي حل مسائل بهينه سازي در دانشگاه، صنعت و تجارت، طراحي گرديده است. دو محصول فوق همراه با کتاب تحقيق در عمليات : کاربرد ها و الگوريتم ها (1994)(2) و کتاب مقدمه اي بر برنامه ريزي رياضي : کاربرد ها و الگوريتم ها (1995)(3) که توسط پروفسور واين ال. وينستون(4) نگاشته شده است، تشريح گرديده اند. 1) Lindo Systems, Inc. 2) Operations Research : Applications and Algorithms (1994) 3) Introduction to Mathematical Programming : Application and Algorithms (1995) 4) Wayne L.Winston

  3. نرم افزارهاي مشابه امروزه بسياري از مدل هاي بهينه سازي تحقيق در عمليات اعم از مدل هاي خطي، غير خطي و يا عدد صحيح به مدد نرم افزارهاي کامپيوتري به سادگي قابل تجزيه و تحليل مي باشند. در اين ميان مي توان از نرم افزارهايي چون GAMS، GINO، LINDO، LINGO، QSB و TORA نام برد.

  4. LINGO بعد ازGAMSقوي ترين نرم افزار تحقيق در عمليات مي باشد. از جمله برتري هاي لينگو نسبت بهLINDO ياGAMS، قدرت آن در مدل سازي تمام مسائلي است که توسط ليندو مدل شده اند، بدون اين که نيازي به تعيين نوع مدل توسط کاربر باشد، در حالي کهLINDOياGAMSچنين قابليتي را دارا نمي باشد. يکي ديگر از قابليت هاي مهم لينگو برخورداري ازHelpي بسيار قوي، ساده و کامل مي باشد. به گونه اي که با استفاده ازHelpآن مي توان تا حد زيادي بر اين نرم افزار مسلط شد .

  5. لينگو چيست ؟ تعريف اول : راهنماي PDF لينگو : لينگو ابزاري ساده براي بهره گيري از قدرت برنامه ريزي خطي و غير خطي در فرموله کردن مسائل خيلي بزرگ به صورت مختصر و تجزيه و تحليل آنهاست. بهينه سازي به شما کمک مي کند تا جوابي را با بيشترين سود، خروجي، يا رضايتمندي و يا جوابي با کمترين هزينه، تلفات يا ناراحتي بدست آوريد. اغلب اين مسائل با استفاده موثر از منابعي همچون پول، زمان، ماشين، نيروي کار، موجودي و ... در ارتباط است.

  6. تعريف دوم : کتاب تحقيق در عمليات واين ال. وينستون : لينگو يک بسته نرم افزاري با امکان برقراري ارتباط دو طرفه با کاربر است و از آن مي توان در حل مسائل خطي، عدد صحيح و غير خطي کمک گرفت. استفاده از اين نرم افزار وضعيت مشابهي مانند ليندو دارد، اما از انعطاف بيشتري در بيان مدل برخوردار است. بر خلاف ليندو، لينگو امکان استفاده از پرانتزها و متغيرها را در سمت راست معادله فراهم مي آورد. بنابراين، محدوديت ها را مي توان به صورت اوليه، بدون نياز به تبديل آن به ساختار استاندارد (آوردن مقادير ثابت به سمت راست) نوشت. همچنين لينگو داراي يک کتابخانه بزرگ از توابع رياضي، آماري و احتمالي بوده و قدرت بالاي آن در خواندن اطلاعات از فايل هاي خارجي و نرم افزارهاي صفحه گسترده است.

  7. مسائل بهينه سازي اغلب به خطي و غير خطي تقسيم مي شوند، که اين تقسيم بندي با توجه به رابطه متغيرهاست؛ بدين معني که اگر رابطه همه متغيرها با هم خطي باشد، مسئله را خطي و در غير اينصورت غير خطي مي گويند. لينگو زباني جامع و فراگير جهت تسهيل تمام مدل هاي بهينه سازي از مسائل تحقيق در عمليات گرفته تا اقتصاد مهندسي، شبيه سازي، کنترل کيفيت، کنترل پروژه و کنترل موجودي مي باشد.

  8. نصب نرم افزار نصب لينگو به راحتي انجام مي گيرد و همانند بسياري از نرم افزارهاي تحت سيستم عامل Windows مي باشد. تنها نکته اي که در نصب مي توان به آن اشاره کرد فضاي مورد نياز در روي ديسک سخت مي باشد که 40MB است. براي دريافت نرم افزار مي توانيد به سايت لينگو مراجعه کنيد.

  9. وارد کردن يک مدل در نسخه تحت ويندوز لينگو، شبيه تايپ کردن در يک محيط پردازشگر متني تحت ويندوز است؛ چون وقتي در يک مدل داده تايپ مي کنيد، تقريبا بايد آنچه را که به صورت دستي نوشته ايد، وارد مدل کنيد. کاربر مي تواند اطلاعات ورودي خود را در پنجره ي داخلي که ابتدا تحت عنوان Lingo Model است، وارد کند. همچنين، لينگو شامل دستورات ابتدايي ويرايش براي بريدن، کپي کردن و چسباندن يک متن است. اين ابزارها و ساير ويژگي ها، در منوي فرمان ها موجود است که در ادامه مورد بررسي قرار مي گيرد.

  10. عناصر مورد نياز در لينگو مشابه ليندو است. لينگو نيازمند تابع هدف، يک يا چند متغير و يک يا چند محدوديت است. بر خلاف ليندو، محدوديت هاي لينگو بعد از عبارات خاص از قبيل SUBJECT TO يا SUCH THAT نمي آيند.

  11. اصول اوليه مدل نويسي در لينگو • در لينگو هر عبارت با يک “ ; ” پايان مي يابد؛ • هرگاه بخواهيم يک عبارت توضيحي به متن برنامه بيافزاييم کافيست در ابتداي عبارت از علامت تعجب ( ! ) استفاده کنيم. اين توضيحات نيز به “ ; ” ختم مي شوند؛ • کليه عبارات متني که مابين ( ! ) و “ ; ” نوشته مي شوند از سوي لينگو ناديده گرفته مي شوند؛ • لينگو به بزرگ يا کوچک بودن حروف حساس نيست؛

  12. مي توانيم دو خط برنامه لينگو را در يک خط بياوريم و يا يک خط آن را در دو سطر بياوريم: Max = 100 * Standard + 150 * Turbo; يا Standard <= 100;Turbo <= 120; • حتي مي توانيم توضيحات را در وسط محدوديت ها بياوريم: X = Y + !Number of Products; Q + 2 * C; ( معادل X = Y + Q + 2 * C است )

  13. عملگرهاي رياضي حتما فراموش نشود؛ ( مخصوصا عملگر ضرب “ * “ ) 2X + 3Y <= 25(اشتباه) 2 * X + 3 * Y <= 25(درست) • اسامي متغيرها حتما با يک حرف شروع مي شوند. بعد از آن مي توان حرف، رقم يا زير خط ( _ ) استفاده کرد. اسم متغيرها نمي تواند بيشتر از 32 کاراکتر باشد؛ • استفاده از فاصله “ “ ( فاصله ) در اسم متغير ها ممنوع است؛

  14. علائم ساده رياضي، توان ( ^ )، ضرب ( * )، تقسيم ( / )، جمع ( + ) و تفريق ( - ) با همين ترتيب اولويت معتبرند؛ • اگر بخواهيم به محدوديت اسمي اختصاص دهيم در ابتداي محدوديت اسم آن را در داخل علامت کروشه مي آوريم؛ و به صورت مقابل مي نويسيم : ]اسم محدوديت[ • Help لينگو يک راهنماي بسيار خوب براي استفاده بهتر از نرم افزار است. از آن بهره بگيريد!

  15. پيغام خطا • هنگام حل مدل اگر ايرادي در آن وجود داشته باشد، نرم افزار پيغام خطا داده و مکان نما به اول سطري مي رود که به نظر لينگو اين خطا از آنجا ناشي شده است؛ • ممکن است در بعضي مواقع با وجود آنکه فکر مي کنيد مدلي که نوشته ايد درست است، نرم افزار هنگام حل آن پيغام خطا بدهد. در اين مواقع يک راه ساده آن است که يک صفحه جديد لينگو باز کرده و دستورات و عبارت هايي که در مدل نوشته ايد را يکي يکي، به صفحه ي جديد کپي کرده و هر بار مدل جديد را اجرا کنيد. با اين کار در اکثر موارد به راحتي مي توانيد به اشکال برنامه پي ببريد.

  16. محيط نرم افزار نرم افزار لينگو از سه بخش کلي منوها، Toolbar و پنجره ي مدل نويسي تشکيل شده است. • منوهاي نرم افزار به ترتيب زير مي باشد : File; Edit; LINGO; Window; Help منويي که بيشتر به چشم آمده و در واقع منوي اصلي نرم افزار مي باشد منوي LINGO ست، با ساير منوها که در نرم افزارهاي تحت سيستم عامل Windows عموماَ موجود مي باشند پيشتر آشنا هستيد. • Toolbar شامل ابزارهاي Shortcut (ميانبر) موجود در منوها مي باشد. • پنجره ي مدل نويسي محل پياده سازي مسئله ي بهينه سازي فرموله شده طبق قواعد لينگوست.

  17. Toolbar Menus پنجره ي مدل نويسي

  18. پياده سازي مدل در لينگو • توسعه ي يک مدل بهينه سازي يک شرکت کامپيوتري دو نوع کامپيوتر استاندارد و توربو توليد مي کند. سود هر کامپيوتر استاندارد براي اين شرکت $100 و هر دستگاه توربو برابر $150 است. در شرکت، خط توليد کامپيوتر استاندارد حداکثر تا 100 دستگاه در روز مي تواند توليد کند. همچنين حداکثر توان توليد خط توربو برابر 120 دستگاه در روز اعلام شده است. شرکت نيروي کار محدود 160 نفر ساعت در هر روز در اختيار دارد. کامپيوترهاي استاندارد يک ساعت نيروي کار لازم دارند در حالي که کامپيوترهاي توربو 2 ساعت نيروي کار نياز دارند. مساله اي که شرکت با آن روبروست اين است که ترکيبي از کامپيوترهاي استاندارد و توربو را براي توليد انتخاب کند که سودش را بيشينه کند در حالي که از محدوديت هاي توان خطوط توليد و ظرفيت نيروي کار تجاوز نکند.

  19. يک مدل بهينه سازي شامل موارد زير است : • تابع هدف – فرمولي است که دقيقا آنچه را که مي خواهيد بهينه کنيد، بيان مي کند. در مدل هاي مربوط به کسب و کار اين يک تابع سود است که مي خواهيد آن را بيشينه کنيد و يا يک تابع هزينه است که مي خواهيد آن را کمينه کنيد. مدل ها ممکن است حداکثر يک تابع هدف داشته باشد. در مثالي که داريم، تابع هدف، سود شرکت را به صورت تابعي از خروجي کامپيوترهاي استاندارد و توربو محاسبه مي کند.

  20. متغيرها – کميت هايي هستند که تحت کنترل شما هستند و شما بايد تصميم بگيريد که بهترين مقادير اين متغير ها کدامند؛ به همين دليل گاها به آنها متغير هاي تصميم گيري نيز مي گويند. هدف بهينه سازي يافتن مقاديري براي متغيرهاي مدل است که با توجه به همه شرايط محدود کننده که روي متغيرها اعمال مي شوند، بهترين مقدار را براي تابع هدف توليد کنند. در اين مثال ما دو متغير تصميم گيري يکي مربوط به تعداد کامپيوترهاي استاندارد و ديگري مربوط به تعداد کامپيوترهاي توربو داريم.

  21. محدوديت ها – تقريبا بدون استثنا، برخي محدوديت ها براي مقاديري که متغيرها مي توانند اتخاذ کنند خواهد بود. حداقل يک منبع محدود خواهد بود. (براي مثال زمان، مواد اوليه، بودجه دپارتمان شما و ...) اين محدوديت ها به وسيله توابعي از متغيرهاي مدل بيان مي شوند. اين فرمول ها به عنوان محدوديت شناخته مي شود، چون مقاديري را که متغيرها مي توانند بگيرند، محدود مي کنند.

  22. در اين مثال ما براي هر خط توليد يک محدوديت و براي کل نيروي کار استفاده شده نيز يک محدوديت داريم. متغيرهاي Standard و Turbo را به عنوان تعداد کامپيوترهاي استاندارد و توربو که شرکت مي خواهد توليد کند در نظر مي گيريم. هدف شرکت بيشينه کردن سود کل است که اين سود برابر مجموع سود حاصل از کامپيوترهاي استاندارد و توربو است : Max = 100 * Standard + 150 * Turbo;

  23. حال محدوديت مربوط به ظرفيت خطوط توليد را اعمال مي کنيم : Standard <= 100; Turbo <= 120; محدوديت مربوط به نيروي کار نيز بصورت زير است : ! Our labor supply is limited; Standard + 2 * Turbo <= 160;

  24. حل وقتي حل شروع مي شود، نرم افزار پنجره وضعيت حل کننده (Solver Status) را مانند شکل زير نمايش مي دهد:

  25. کادر متغيرها: تعداد کل متغيرها در مدل، تعداد متغيرهاي غيرخطي (nonlinear) و تعداد متغيرهاي صحيح • کادر محدوديتها: تعداد کل محدوديتها و تعداد محدوديتهاي غيرخطي • کادر غيرصفرها: تعداد کل ضرايب غيرصفر در مدل، و تعدادي از آنها که روي متغيرهاي غيرخطي ظاهر مي شوند. • کادر حافظه اشغال شده: اين کادر، مقدار حافظه مولد مدل LINGO از سهم حافظه آن که در حال استفاده ميباشد. • کادر مدت زمان سپري شده: کل زمان سپري شده براي توليد و حل مدل

  26. کادر وضعيت حل کننده: Model Class دسته بندي هاي مدل را نشان مي دهد. دسته هاي احتمالي عبارتند از • LP : همه عبارتها خطي هستند و مدل محدوديت عدد صحيحي روي متغيرها ندارد. • QP : همه عبارات خطي يا درجه دوم هستند، مدل محدب است و محدوديت عدد صحيح وجود ندارد. • ILP : همه عبارات خطي هستند و زيرمجموعه اي از متغيرها، به مقادير صحيح محدود مي شوند. • IQP : همه عبارات خطي يا درجه دوم هستند. مدل محدب است و زيرمجموعه اي از متغيرها، محدوديت عدد صحيح دارند. • PILP: همه عبارات خطي هستند و همه متغيرها به مقادير صحيح محدود مي شوند. • PIQP: همه عبارات خطي يا درجه دوم هستند، مدل محدب است و همه متغيرها به مقادير صحيح محدود مي شوند. • NLP : حداقل يکي از روابط در مدل، نسبت به متغيرها غيرخطي است. • INLP: حداقل يکي از عبارات در مدل غيرخطي است و زيرمجموعه اي از متغيرها، محدوديت عدد صحيح دارد. به طور کلي حل اين دسته از مدلها بسيار سخت خواهد بود، مگر براي کوچکترين موارد. • PINLP: حداقل يکي از عبارات در مدل غيرخطي است و همه متغيرها محدوديت عدد صحيح دارند. بطور کلي حل اين دسته از مدلها بسيار سخت خواهد بود، مگر براي کوچکترين موارد.

  27. State وضعيت حل جاري را نشان مي دهد. حالات ممکن عبارتند از: Global Optimum Local Optimum Feasible Unbounded Interrupted Undetermined

  28. Objective • Infeasibility مقاديري که همه محدوديتهاي مدل توسط آنها نقص مي شوند (از آن تجاوز مي کنند) را ليست مي کند • Iteration تعداد مراحل حل

  29. کادر وضعيت حل توسعه يافته اطلاعاتي مربوط به چندين حل کننده ويژه • حل کننده انشعاب و تحديد(Branch and Bound Solver) • حل کننده عمومي(Global Solver) • حل کننده چند آغازه (Multistart Solver) فيلدهاي اين کادر با اجراي يکي از اين سه حل کننده بهنگام مي شوند.

  30. کادر وضعيت حل توسعه يافته • Solver Type: نوع حل کننده ويژه مورد استفاده • Best OBJ: مقدار تابع هدف براي بهترين حلي که تا کنون بدست آمده است. • OBJ Bound: کران نظري بر روي مقدار تابع هدف را نشان مي دهد. • Steps: تعدا مراحلي که توسط Solver ادامه يافته است. • Active: تعداد زير مسئله هاي فعالي که براي تحليل باقي مانده اند.

  31. گزارش حل

  32. تحليل خروجي Objective value: 14500.0000 مشخص مي کند که مقدار بهينه تابع هدف 14500 است. Value مقدار متغير در جواب بهينه مدل خطي را مي دهد. بنابراين جواب بهينه توليد 100 کامپيوتر STANDARD و 30 کامپيوتر TURBO، است. Reduced Cost ضريب متغير در سطر صفر جدول بهينه را مي دهد (مسئله ماکزيمم سازي). همانگونه که مي دانيد بايد هزينه کاهش يافته هر متغير پايه برابر صفر باشد. براي يک متغير غير پايه xj، هزينه کاهش يافته مقداري است که اگر xj ، 1 واحد اضافه شود، به آن اندازه، جواب بهينه کاهش مي يابد (درحالي که بقيه متغيرهاي غير پايه برابر صفر بمانند).

  33. در قسمت بعدي از خروجي يا Report مشاهده مي کنيم که هر خط مدل با شماره اي مشخص شده و در مقابل آن دو عبارت SlackorSurplus و DualPrice مشاهده مي شود : SlackorSurplus مقدار کمبود يا اضافي (مازاد) در جواب بهينه را نشان مي دهد. DualPrice يا قيمت سايه مقداري است که اگر سمت راست محدوديت، يک واحد اضافه شود، به آن اندازه جواب بهينه، بهبود مي يابد ( با فرض اينکه اين تغييرات باعث از دست رفتن پايه بهينه فعلي نمي شوند ). اگر بعد از يک تغيير در طرف راست محدوديت، پايه فعلي ديگر بهينه نماند، قيمت هاي سايه محدوديت ها ممکن است تغيير کند.

  34. انواع مسائل لينگو قادر به حل مسائل مختلف بهينه سازي از جمله برنامه هاي خطي، کوآدراتيک، خطي عدد صحيح، کوآدراتيک عدد صحيح، عدد صحيح خطي خالص، عدد صحيح کوآدراتيک خالص، غير خطي، غير خطي عدد صحيح و غير خطي عدد صحيح خالص مي باشد. مدل هاي فوق توسط لينگو تشخيص داده شده و در گزارش خروجي مدل پس از حل آن به ترتيب فوق LP، QP، ILP، IQP، PILP، PIQP، NLP، INLP، PINLP خواهيم داشت. در اينجا به پياده سازي و تحليل يک مدل خطي مي پردازيم.

  35. Case Study شرکت داکوتا فرنيچر، توليد کننده ميز تحرير، ميز و صندلي است. توليد هر کدام از انواع مبلمان به الوار و دو نوع نيروي کار ماهر در دو زمينه نجاري و پرداخت نياز دارد. مقدار هر يک از منابع مورد نياز براي توليد هر يک از انواع مبلمان در جدول ذيل آمده است :

  36. در حال حاضر، 48 فوت تخته از الوارها، 20 ساعت زمان پرداخت و 8 ساعت زمان نجاري موجود است. هر ميز تحري 60 دلار، ميز 30 دلار و صندلي 20 دلار به فروش مي رسد. و حداکثر تقاضاي ميز 5 عدد مي باشد. با فرض اينکه منابع در دسترس به تازگي تدارک ديده شده باشند، شرکت داکوتا مي خواهد کل سود خود را به حداکثر برساند. متغير هاي تصميم بصورت ذيل تعريف شده اند : Desk : تعداد ميز تحريرهاي توليد شده Table : تعداد ميزهاي توليد شده Chair : تعداد صندلي هاي توليد شده

  37. شرکت داکوتا به حل مدل خطي زير نياز دارد : 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

  38. مدل فوق به زبان لينگو در قسمت Lingo Model وارد مي شود :

  39. با استفاده از گزينه Solve جواب نهايي سيمپلکس بصورت زير خواهد بود :

  40. تحليل خروجي Objective value: 280.0000 مشخص مي کند که مقدار بهينه تابع هدف 280 است. Value مقدار متغير در جواب بهينه مدل خطي را مي دهد. بنابراين جواب بهينه داکوتا توليد 2 ميز تحرير، صفر ميز، و 8 صندلي است. Reduced Cost ضريب متغير در سطر صفر جدول بهينه را مي دهد (مسئله ماکزيمم سازي). همانگونه که مي دانيد بايد هزينه کاهش يافته هر متغير پايه برابر صفر باشد. براي يک متغير غير پايه xj، هزينه کاهش يافته مقداري است که اگر xj ، 1 واحد اضافه شود، به آن اندازه، جواب بهينه کاهش مي يابد (درحالي که بقيه متغيرهاي غير پايه برابر صفر بمانند). در خروجي لينگو براي مسئله داکوتا، هزينه کاهش يافته ميز برابر 5 است. اين يعني اگر داکوتا بخواهد يک ميز توليد کند، درآمد به اندازه 5 دلار کاهش خواهد يافت.

  41. در قسمت بعدي از خروجي يا Report مشاهده مي کنيم که هر خط مدل با شماره اي مشخص شده و در مقابل آن دو عبارت SlackorSurplus و DualPrice مشاهده مي شود : SlackorSurplus مقدار کمبود يا اضافي (مازاد) در جواب بهينه را نشان مي دهد. بنابراين 24 فوت تخته الوار و 5 عدد ميز به صورت مازاد وجود خواهد داشت. DualPrice يا قيمت سايه مقداري است که اگر سمت راست محدوديت، يک واحد اضافه شود، به آن اندازه جواب بهينه، بهبود مي يابد ( با فرض اينکه اين تغييرات باعث از دست رفتن پايه بهينه فعلي نمي شوند ). اگر بعد از يک تغيير در طرف راست محدوديت، پايه فعلي ديگر بهينه نماند، قيمت هاي سايه محدوديت ها ممکن است تغيير کند.

  42. تحليل حساسيت پس از حل مدل توسط Solve با استفاده از گزينه Range موجود در منوي LINGO گزارش خروجي تحليل حساسيت مدل را مشاهده مي کنيم، در صورت مشاهده خطا وارد LINGO Option شده و گزينه Dual Computations از قسمت General Solver را در حالت سوم قرار دهيد.

  43. تحليل حساسيت نشان مي دهد که ضرايب تابع تا چه ميزان مي توانند افزايش يا کاهش يابند بدون اينکه پايه بهينه مسئله (مجموعه متغيرهاي غير صفر) عوض شود. تحليل حساسيت شامل دو بخش است، يکي مربوط به تابع هدف و ديگري مربوط به محدوديت ها، که در هر کدام به تفکيک مقدار واقعي و مقادير کاهش و افزايش قيد شده است. در پايان با استفاده از گزينه Solution در منوي LINGO مي توانيد نمايش گرافيکي از هر يک از متغيرهاي موجود در مدل را داشته باشيد.

  44. ساخت يک مدل حمل و نقل • فرض کنيد شرکت Wireless Widget 6 انبار براي تامين، و 8 مرکز فروش کالاي توليدي دارد. هر انبار محدوديت مقدار کالاي انبار شده دارد که بيشتر از آن مقدار، انبار کردن آن کالا مقدور نيست و نيز هر مرکز فروش تقاضايي دارد، که مي بايست حداقل به اندازه آن مقدار تامين شود. شرکت مي خواهد تعداد کالايي که از هر انبار، به هر مرکز فروش حمل مي شود را، به گونه اي که کل هزينه حمل مينيمم گردد تعيين کند. V1 WH1 V2 WH2 V3 WH3 V4 WH4 V5 WH5 V6 WH6 V7 V8

  45. ظرفيت هر انبار تقاضاي هر فروشنده هزينه حمل هر کالا

  46. تابع هدف • VOLUME_I_J: مقدار کالاي حمل شده از انبار I به مرکز فروش J MIN = 6 * VOLUME_1_1 + 2 * VOLUME_1_2 + 6 * VOLUME_1_3 + 7 * VOLUME_1_4 + 4 * VOLUME_1_5 + . . 8 * VOLUME_6_5 + VOLUME_6_6 + 4 * VOLUME_6_7 + 3 * VOLUME_6_8 Minimize ijCOSTij  VOLUMEij LINGO: MIN= @SUM(LINK(I,J): COST(I,J)* VOLUME(I,J);

  47. محدوديتها • دسته اول: محدوديتهاي تقاضا VOLUME_1_1 + VOLUME_2_1+ VOLUME_3_1+ VOLUME_4_1+ VOLUME_5_1+ VOLUME_6_1=35 I VOLUMEij = DEMANDj, for all in VENDORS LINGO: @FOR(VENDORS(J): @SUM(WAREHOUSE(I): VOLUME(I,J))= DEMAND(J));

  48. محدوديتها • دسته دوم: محدوديتهاي ظرفيت j VOLUMEij <= CAPi, for all in WAREHOUSES LINGO: @FOR(WAREHOUSES(I): @SUM(VENDORS(J): VOLUME(I, J))<= CAPACITY(I));

  49. مشخص کردن مجموعه ها SETS: WAREHOUSES: CAPACITY; VENDORS: DEMAND; LINKS(WAREHOUSES, VENDORS): COST, VOLUME; ENDSETS

  50. مدل و حل آن

More Related