کد خبر: ۲۲۳۲۰
تاریخ انتشار : ۰۹:۳۶ - ۱۷ خرداد ۱۳۹۶
در این پست، پروژه‌ای برای پیاده سازی الگوریتم تکاملی تفاضلی در نرم افزار Digsilent به اشتراک گذاشته می‌شود. برای برنامه نویسی در دیگسایلنت از زبان DPL استفاده شده است.
سرویس آموزش و آزمون برق نیوز: الگوریتم تکاملی تفاضلی (DE) نخستین بار در سال ۱۹۹۵ توسط استورن و پرایس معرفی شد. این دو نشان دادند که این الگوریتم توانایی خوبی در بهینه سازی توابع غیرخطی مشتق ناپذیر دارد که به عنوان روشی قدرتمند و سریع برای مسائل بهینه سازی در فضاهای پیوسته معرفی شده است.

الگوریتم (DE) جهت غلبه بر عیب اصلی الگوریتم ژنتیک، یعنی فقدان جستجوی محلی دراین الگوریتم ارائه شده است، تفاوت اصلی بین الگوریتم‌های ژنتیکی و الگوریتم (DE) در عملگر انتخاب selection operators می‌باشد.

در اپراتور انتخاب GA، شانس انتخاب یک جواب به عنوان یکی از والدین وابسته به مقدار شایستگی آن می‌باشد، اما در الگوریتم DE همه جواب‌ها دارای شانس مساوی جهت انتخاب شدن می‌باشند. یعنی شانس انتخاب شدن آن‌ها وابسته به مقدار شایستگی آن‌ها نمی‌باشد، پس از این که یک جواب جدید با استفاده از یک اپراتور جهش خود-تنظیم و اپراتور crossover تولید شد، جواب جدید با مقدار قبلی مقایسه می‌شود و در صورت بهتر بودن جایگزین می‌گردد.

در این الگوریتم بر خلاف دیگر الگورتیم‌ها که اول عملگر crossover و سپس عملگر mutation انجام می‌شود به گونه‌ای که ابتدا عملگرجهش اعمال شده و سپس عملگر تقاطع اعمال می‌شود تا بدین وسیله نسل جدید ایجاد گردد.

برای اعمال عملگر mutation از توزیع خاصی استفاده نمی‌شود بلکه طول گام جهش برابر با مقدار از فاصله میان اعضای فعلی تعیین می‌شود.
 
الگوریتم تکاملی تفاضلی در نرم افزار Digsilent 

برای تولید جمعیت اولیه معمولا از توزیع یکنواخت استفاده می‌شود تا اعضای جمعیت کاملا به طور یکسان در فضا پخش شده و در هر مرحله از الگوریتم این اعضا به یکدیگر نزدیک می‌شوند و این همگرایی منجر به رسیدن به جواب بهینه خواهد شد همچنین باید توجه داشت که تعداد زیاد اعضای جمعیت می‌تواند کمک مناسبی با یافتن جواب بهینه باشد.

یکی از عوامل مهم در این الگوریتم تعیین مقدار مناسب ضریب مقیاس می‌باشد، به طوریکه که اگر این ضریب کوچک انتخاب شود، طول گام‌ها در عملگر جهش کوچک‌تر می‌شود و زمان بیشتری برای جستجو صرف می‌گردد. همچنین اگر ضریب مقیاس در الگوریتم تکامل تفاضلی بزرگ در نظر گرفته شود باعث می‌شود این الگوریتم جواب‌های مناسب رو در نظر نگیرد. پس باید در تعیین این ضریب دقت بسیار زیادی صورت گیرد.

بعد از انجام جهش، کراس اور انجام می‌شود، بدین صورت که عددی تصادفی بین صفر و یک تولید شده و اگر عدد تولید شده کمتر از میزان نرخ کراس اور باشد عنصر مورد نظر در آن عضو از جمعیت، از قسمت جهش برداشته می‌شود در غیر اینصورت عنصر مورد نظر از مقدار اولیه عضو برداشته می‌شود اینقدر این کار تکرار می‌شود تا تمامی اعضای یک عضو یا از قسمت جهش خورده یا از مقادیر اولیه خود انتخاب گردند. سپس ماتریسی جدیدی که تولید شده با ماتریس اولیه مقایسه می‌شود و اگر ماتریس جدید دارای هزینه کمتری باشد جایگزین ماتریس اولیه می‌شود. این کار برای تمامی اعضای جمعیت انجام می‌شود.
 
در ادامه یک پروژه با الگوریتم تفاضلی در محیط نرم افزار Digsilent شبیه سازی شده است. برای این کار از زبان برنامه نویسی DPL بهره گرفته شده و نتایج شبیه سازی نیز ارائه گردیده است. در ادامه می توانید این فایل را دانلود نمایید.

 

ارسال نظر قوانین ارسال نظر
لطفا از نوشتن با حروف لاتین (فینگلیش) خودداری نمایید.
از ارسال دیدگاه های نا مرتبط با متن خبر، تکرار نظر دیگران، توهین به سایر کاربران و ارسال متن های طولانی خودداری نمایید.
لطفا نظرات بدون بی احترامی، افترا و توهین به مسئولان، اقلیت ها، قومیت ها و ... باشد و به طور کلی مغایرتی با اصول اخلاقی و قوانین کشور نداشته باشد.
در غیر این صورت، «برق نیوز» مطلب مورد نظر را رد یا بنا به تشخیص خود با ممیزی منتشر خواهد کرد.
نتیجه عبارت زیر را وارد کنید
captcha =
وضعیت انتشار و پاسخ به ایمیل شما اطلاع رسانی میشود.
پربازدیدها
برق در شبکه های اجتماعی
اخبار عمومی برق نیوز
عکس و فیلم
پربحث ترین ها
آخرین اخبار