1 1 1 1 1 1 1 1 1 1 Rating 5.00 (1 Vote)

در این پست قصد داریم یک مساله چندهدفه بهینه‌سازی را به کمک الگوریتم ژنتیک فرموله کرده و حل کنیم. مساله به شرح زیر است:

5 سایت برای احداث بیمارستان داریم و بودجه فقط برای دو احداث دو بیمارستان کافی است. هر سایت باتوجه به منطقه شهری که در آن قرار دارد، تعداد مشخص و محدودی از مردم به آن دسترسی مستقیم و نزدیک دارند. جدول زیر درصد پوشش افراد در هر منطقه را نشان می‌دهد:

500

100

125

200

300

بدیهی است که انتخاب سایت 1 و 5 با تعداد افراد تحت پوشش 500 و 300 بهترین انتخاب برای احداث بیمارستان‌ها خواهد بود. اما پارامتر دیگری نیز وجود دارد و آن آلودگی هواست. هر 5 منطقه آلودگی هوای متفاوتی از هم دیگر دارند و ترجیح وزارت بهداشت این است که بیمارستان‌ها در فضای تمییزتری احداث شوند که برای حال مراجعه کنندگان نیز بهتر باشد. جدول الودگی هر منطقه از 100% آلودگی ممکن به شکل زیر است:

30%

40%

50%

60%

70%

همان‌طور که مشخص است اکنون مساله دارای دو هدف متفاوت است یکی افزایش جمعیت تحت پوشش و دیگری کاهش الودگی مناطق انتخابی، قطعا در این حالت نمی‌توان صرفا افزایش جمعیت یا کاهش آلودگی را انتخاب کرد، چرا که در مورد اولی سایت های 1 و 5 مناسب هسند اما برای کمینه کردم هدف دوم سایت های 1 و 2. در این حالت البته روش خاص و ثابتی وجود ندارد که بتوان گفت چگونه می‌توان این پارامترها را ترکیب کرد ولی اصول مدل های چندهدفه یکی است. کمینه کردن یا بیشینه کردن! باید یکی از دو پارامتر بالا یعنی افزایش جمعیت/کاهش الودگی را هم شکل کنیم و هر دو را صعودی یا نزولی در نظر بگیریم. یک راه حل ساده وارون کردن مقادیر میزان الودگی است به طوری که برای مثال مقدار 0.3(سی درصد) برابر با 10/3 یا 3.3 خواهد شد. در این حالت عکس آلودگی هوا نیز باید بیشینه باشد و هر دو هدف مساله در راستای بیشینه شدن قرار می‌گیرند.

کار ساده شد.نه؟ اما هنوز یک چالش دیگر پابرجاست! ترکیب این دو پارامتر و هدف تعیین کننده اثر هر هدف است. اگر در حالت کنونی مقادیر هر دو هدف را جمع کنیم بدیهی است مقادیر بالای 100 جمعیت تاثیرگذاری کاملی بر مقادیر کمتر از ده عکس آلودگی هوا دارند و رسما الودگی هوا را از مساله حذف کرده ایم. در این شرایط الگوریتم ژنتیک قطعا به سمت عدد بزرگتر خواهد رفت و سعی در انتخاب کمتر این مقادیر خواهد کرد. راه حل؟ هر چند روش‌های مختلفی نظیر تاثیر یک ضریب در هدف کوچکتر و امثالهم وجود دارد، روش نرمال کردن روشی مناسب و معقول است. در واقع ما می‌خواهیم هر دو هدف تاثیر کاملا یکسانی بگذارند. پس کافی است اعداد هر دو جدول را بین کمترین مقدار و بیشترین مقدار هر هدف نرمال کنیم. در این حالت جدول های 1 و 2 به صورت زیر در خواهد آمد.توجه کنید جدول دوم پس از معکوس کردن مقادیر، نرمال سازی شده است.

 1.0000         0    0.0625    0.2500    0.5000

1.0000    0.5625    0.3000    0.1250         0

همانطور که مشاهده می‌کنید، جمعیت 500 نفر بیشترین ارزش و جمعیت 100 نفر ارزشی برابر 0 دارد و در مقابل کمترین آلودگی ارزش 1 و بیشترین آلودگی ارزش 0 دارد. در این شرایط تاثیرگذاری انتخاب کمترین جمعیت و یا بیشترین آلودگی بسیار زیاد است و معمولا الگوریتم ژنتیک به سمت این مقادیر نخواهد رفت.

در نهایت کافی است مقادیر کروموزوم هر عضو جمعیت را در هر دو جدول(بردار) ضرب کرده و مجموع را به عنوان ارزش هر عضو محاسبه کنیم. در پایان بیشترین مقدار تعیین کننده پاسخ مساله است. نکته آخر اینکه ممکن است برای احداث بیمارستان ارزش تحت پوشش بودن بیشتر از الودگی هوا باشد یا برعکس در این شرایط با تعریف یک ضریب پشت هر بش تاثیرگذاری آن را مشخص می‌کنید. برای مثال اگر ضریب 2 برای الودگی و 1 برای جمعیت در نظر گرفته شود، ارزش انتخاب مناطق با الودگی کمتر بیشتر شده و شانس انتخاب سایت های 1 2 و3 بیشتر از باقی سایت ها خواهد شد. اگر ضریبی مثل 3 برای جمعیت و 1 برای آلودگی در نظر بگیرید در این شرایط شانس انتخاب سایت های 1 و 4 و5 را افزایش داده‌اید. همان‌طور که مشاهده می‌کنید. به طور کامل یک روش برای تاثیر اهداف وجود ندارد و براساس اهمیت تاثیر هر هدف، این مساله جواب‌های متفاوتی خواهد داشت.

 

* این مساله را می‌توانید در ابعاد 100-200 بیمارستان موجود و انتخاب بخشی از آن تست کنید تا ارزش جست و جوی فضای مساله توسط الگوریتم ژنتیک را بهتر درک کنید. این مثال صرفا یک مثال ساده در جهت درک بهتر مفهوم الگوریتم چند هدفه است. 

 

کدهای این پروژه را به طور رایگان از فروشگاه تهیه کنید و با این آموزش فرا بگیرید.

مطالب مشابه

کتاب آموزش شبیه سازی و مدل ساز

  مشخصات: مولف: دکتر نیکوبین (استاد دانشکده مکان

کتاب الکترونیکی سری سوم - آموز

      اي که برای دانلود قرار داده شده است براي

کتاب آموزش MATLAB

  نویسندگان: مهندس علی اکبر علمداری، مهندس نسرین

تنظيم خروجيها روي صفحه نمايش ب

اگر مقدار يك متغير را بخواهيد بدانيد مي توانيد آن

آموزش كاربردي مباحث پيشرفته با

آموزش كاربردي مباحث پيشرفته با Matlab            

الگوریتم های ژنتیک در Matlab

الگوریتم های ژنتیک در Matlab - - - - - - - - - - -

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید