فیلم: مروری بر روشهای محاسبات تکاملی و الگوریتم رقابت استعماری

دراین پست فیلم یکی از نشست های وبینار محاسبات تکاملی با موضوع “مروری بر روشهای محاسبات تکاملی و الگوریتم رقابت استعماری” را خدمتتان جهت دانلود و نیز مشاهده آنلاین قرار داده ایم.

ادامه مطلب

نحوه مقایسه کارکرد دو الگوریتم بهینه سازی

سوال مهمی که همیشه مطرح می باشد، این است که چه الگوریتمی برای یک مسئله بهینه سازی معین مناسب است و یا در حالت کلی تر، چه الگوریتمی نسبت به الگوریتم دیگر برتری دارد؟ در حالت کلی می توان گفت که از دید بهینه سازی اگر الگوریتم “الف” در زمان سریعتری نسبت به الگوریتم “ب” به جواب مسئله (یا هر جواب یکسان) برسد، الگوریتم ا”لف “بهتر است. به عبارت دیگر می توان گفت که در زمانهای مساوی، الگوریتم “الف” جواب های بهتر و بهینه تری را در اختیار می گذارد. شکل زیر این موضوع را به خوبی نشان می دهد.

دانلود رایگان کد الگوریتم ژنتیک ترکیب شده با الگوریتم پرندگان

الگوریتم ژنتیک، شناخته شده تربن و پرکاربرد ترین ابزار بهینه سازی تکاملی است. این الگوریتم در اغلب مسائل بهینه سازی به ویژه بهینه سازی گسسته، کارایی بالایی از خود نشان داده است. اما در حل مسائل پیوسته آنچنان که باید و شاید، کاراریی این الگوریتم نشان داده نشده است. در مقابل الگوریتم بهینه سازی انبوه ذرات که در داخل ایران به الگوریتم پرندگان نیز شناخته می شود، در حل مسائل گسسته بسیار موفق عمل کرده است. بنابراین یک ایده برای افزایش کارایی الگوریتم ژنتیک در حل مسائل پیوسته می تواند ترکیب آن با الگوریتم پرندگان (Hybrid Genetic and Particle Swarm Optimization) باشد. با ما در ادامه مطلب، همراه باشید.

متلب سایت در راستای رسالت علمی خود بر آن است تا مراجعین محترم را نه تنها با ابزارهای استاندارد در حوزه هوش مصنوعی آشنا کند، بلکه دریچه ای نیز به سوی جدیدترین متدهای مطرح شده در این حوزه برای مراجعین باز نماید. در این راستا متخصصین بخش بهینه سازی هوشمند متلب سایت، کد Hybrid Genetic and Particle Swarm Optimization را بر مبنای یکی از جدیدترین مقالات منتشر شده تهیه کرده و برای دانلود در اختیار مراجعین محترم قرار داند. بررسی و مطالعه این کد را به همه مراجعین که با الگوریتم های ژنتیک اآشنا هستند، توصیه می کنیم. به همراه کدها مقاله ای که مبنای پیاده سازی بوده است نیز قرار داده شده است.

 

در ادامه لینک دانلود این برنامه قرار داده شده است:
لینک دانلود کد الگوریتم ژنتیک ترکیب شده با الگوریتم پرندگان (340 KB)

کدها و برنامه رایگان ارائه شده می توانند به عنوان یک پروژه کامل  و مجزا در مورد الگوریتم ژنتیک و الگوریتم پرندگان (ازدحام ذرات یا PSO)، مورد استفاده آموزشی نیز قرار بگیرند.

نکته:اگر فایلهای دریافتی نیاز به پسورد داشتند، عبارت matlabsite.com را استفاده کنید.

نیاز به راهنمائی و مشاوره بیشتری در مورد این کدها دارید؟
یک فیلم کوتاه با کد محصول icaMV006 شامل توضیحاتی در مورد برنامه نوشته شده و نحوه اجرا و ایجاد تغییرات در آن تهیه شده است. قیمت این فیلم 2690 تومان است. با ارائه کد محصول فوق و با واریز وجه، لینک دانلود این فیلم را در عرض چند ساعت در ایمیل خود داشته باشد. از طریق بخش تماس با ما با ما جهت دریافت این محصول مکاتبه نمایئد. همچنین جلسات آموزشی آنلاین ما (در این لینک) نیز، تجربه موفقی از یک دوره فشرده آموزشی هوش مصنوعی را بر جای گذاشته است.

 

اگر به هر نحو ممکن در دانلود فایلهای فوق با مشکل روبرو شدید، با ارسال ایمیل از طریق قسمت تماس با ما و یا با نوشتن کامنت در پایین همین پست، ما را در جریان قرار دهید.
_____________________________________________

نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.

صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.

دانلود رایگان کد الگوریتم PSO یا الگوریتم پرندگان

الگوریتم بهینه سازی ازدحام ذرات یا PSO، که به نام الگوریتم پرندگان نیز شناخته می شود، یکی از الگوریتم های قدرتمند و پر طرفدار برای بهینه سازی است که بیشتر به خاطر سرعت همگرایی نسبتا بالایی که دارد، مورد استفاده قرار می گیرد. این الگوریتم با وجود عمر کمی که دارد، اما توانسته است در حوزه های کاربردی بسیاری، از الگوریتم های قدیمی تر، مانند الگوریتم ژنتیک، پیشی بگیرد و به عنوان انتخاب اول محسوب شود. گروه برنامه نویسان متلب سایت، کد الگوریتم کلاسیک PSO را تهیه نموده در برای دانلود در اختیار دوستان و مراجعین عزیز قرار داده است. با ما در ادامه مطلب، همراه باشید.

لینک دانلود کد الگوریتم PSO در ادامه قرار داده شده است. کدها و برنامه رایگان ارائه شده می توانند به عنوان یک پروژه کامل  و مجزا در مورد الگوریتم پرندگان (ازدحام انبوه ذرات – Particle Swarm Optimization) که به اختصار PSO نامیده می شود، مورد استفاده آموزشی نیز قرار بگیرند.
لینک دانلود کد الگوریتم پرندگان یا ازدحام ذرات – 32 کیلوبایت

نکته: اگر فایلهای دریافتی نیاز به پسورد داشتند، عبارت matlabsite.com را استفاده کنید.

اگر به هر نحو ممکن در دانلود فایلهای فوق با مشکل روبرو شدید، با ارسال ایمیل از طریق قسمت تماس با ما و یا با نوشتن کامنت در پایین همین پست، ما را در جریان قرار دهید.



منبع این پست، متلبسایت، مرجع کاربران و برنامه نویسان متلب و هوش مصنوعی می باشد.

نیاز به راهنمائی و مشاوره بیشتری در مورد این کدها دارید؟
یک فیلم کوتاه با کد محصول icaMV002 شامل توضیحاتی در مورد برنامه نوشته شده و نحوه اجرا و ایجاد تغییرات در آن تهیه شده است. قیمت این فیلم 2690 تومان است. با ارائه کد محصول فوق و با واریز وجه، لینک دانلود این فیلم را در کمتر از 24 ساعت در ایمیل خود داشته باشد. از طریق بخش تماس با ما با ما جهت دریافت این محصول مکاتبه نمایئد. همچنین جلسات آموزشی آنلاین ما (در این لینک) نیز، تجربه موفقی از یک دوره فشرده آموزشی هوش مصنوعی را بر جای گذاشته است.
_____________________________________________
نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.

صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.

دانلود رایگان کد الگوریتم پرندگان گسسته Binary PSO

الگوریتم بهینه سازی انبوه ذرات (PSO) در سال 1995 معرفی شد. توانایی اصلی این الگوریتم در حل مسائل پیوسته بود. اما دیری نگذشت که به علت استقبال بیش از انتظار از این روش بهینه سازی، نسخه های گسسته (Binary) آن نیز طراحی و معرفی شدند. در این بخش، متخصصین گروه بهینه سازی متلب سایت با تهیه برنامه مربوط به این روش، آن را به صورت رایگان در اختیار بازدید کنندگان محترم قرار داده اند. با ما در ادامه مطلب، همراه باشید.

در ادامه لینک دانلود این برنامه قرار داده شده است. کدها و برنامه رایگان ارائه شده می توانند به عنوان یک پروژه کامل  و مجزا در مورد نسخه گسسته الگوریتم پرندگان (ازدحام انبوه ذرات – Particle Swarm Optimization) که به اختصار PSO نامیده می شود، مورد استفاده آموزشی نیز قرار بگیرند.

لینک دانلود کد رایگان الگوریتم پرندگان گسسته (427.93 KB)

نکته: اگر فایلهای دریافتی نیاز به پسورد داشتند، عبارت matlabsite.com را استفاده کنید.

نکته مهم: نیاز به راهنمائی و مشاوره بیشتری در مورد این کدها دارید؟
متلب سایت، اخیراً یک محصول آموزشی جامع را به صورت فیلم تهیه کرده است که بصورت کامل نحوه پیاده سازی عملی کد الگوریتم پرندگان گسسته  Binary PSO را به همراه مباحث تئوری، آموزش می دهد. برای استفاده از این محصول لینک زیر را ببینید.
بررسی و مطالعه این کد را به همه مراجعین که در حوزه بهینه سازی تکاملی فعالیت می کنند، توصیه می کنیم. به همراه کدها مقاله ای که مبنای پیاده سازی بوده است نیز قرار داده شده است.
اگر به هر نحو ممکن در دانلود فایلهای فوق با مشکل روبرو شدید، با ارسال ایمیل از طریق قسمت تماس با ما و یا با نوشتن کامنت در پایین همین پست، ما را در جریان قرار دهید.

 

_____________________________________________
نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.

صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.

دانلود رایگان کتاب الگوریتم بهینه سازی ازدحام ذرات – Particle Swarm Optimization

الگوریتم پرندگان را شاید بتوان نزدیک ترین الگوریتم به الگوریتم رقابت استعماری در میان الگوریتم های تکاملی موجود نامید. الگوریتم PSO نیز همانند الگوریتم رقابت استعماری برای حل مسائل پیوسته معرفی شد (نسخه های گسسته هر دو الگوریتم بعد از معرفی نسخه پیوسته معرفی شدند). مطالعه این الگوریتم برای علاقه مندان الگوریتم رقابت استعماری جهت درک بهتر این الگوریتم و ایجاد توسعه آن خالی از لطفا نخواهد بود. با ما در ادامه مطلب همراه باشید.

متلب سایت، کتاب بهینه سازی ازدحام ذرات یا Particle Swarm Optimization را برای دانلود در اختیار علاقه مندان قرار داده است. این کتاب، اولین کتابی است که موضوع اصلی آن الگوریتم PSO است و صرفا به بررسی آن پرداخته است. الگوریتم بهینه سازی ازدحام ذرات یا PSO، که به نام های الگوریتم بهینه سازی انبوه ذرات و الگوریتم پرندگان نیز مشهور است، یکی از الگوریتم های موفق در زمینه بهینه سازی پیوسته و گسسته بوده است و سرعت همگرایی نسبتا خوبی که دارد، آن را به گزینه ای مناسب برای استفاده در بهینه سازی پویا (Dynamic Optimization) تبدیل نموده است.
لینک دانلود این کتاب در ادامه قرار داده شده است:

دانلود رایگان کتاب الگوریتم بهینه سازی ازدحام ذرات (3.14 MB)

اگر به هر نحو ممکن در دانلود فایلهای فوق با مشکل روبرو شدید، با ارسال ایمیل از طریق قسمت تماس با ما و یا با نوشتن کامنت در پایین همین پست، ما را در جریان قرار دهید.

منبع این پست، متلبسایت، مرجع کاربران و برنامه نویسان متلب و هوش مصنوعی می باشد.

الگوریتم پرندگان یا اجتماع ذرات چیست؟

همانگونه که قبلاً نیز اعلام کرده بودیم، در وبسایت الگوریتم رقابت استعماری و بهینه سازی تکاملی به معرفی سایر الگوریتم های تکاملی نیز پرداخته و مطالب آموزشی، کدها و فایل های آموزشی مربوط به آنها را نیز ارائه خواهیم کرد.

در این پست می خواهیم بطور خلاصه به معرفی الگوریتم بهینه Particle Swarm Optimization که به اختصار PSO نامیده شده و تحت نامهای مختلفی همچون الگوریتم انبوه ذرات، الگوریتم ازدحام ذرات و الگوریتم پرندگان درایران شناخته شده است، بپردازیم. با ما در ادامه مطلب همراه باشید.

عبارت Swarm در زبان انگلیسی به اجتماع دسته انبوهی از جانوران و حشرات اشاره می کند. در زیر یک swarm از زنبور ها را می بینید.

تصویر یک swarm از زنبورها

اگر سرعت اینترنتتان مناسب باشد، می توانید حرکت یک swarm از ماهی ها را در زیر ببینید. جهت حفظ امانت، لازم به ذکر است که تصویر متحرک زیر از ویکیپدیا گرفته شده است.

 

تصویر متحرک یک swarm از ماهی ها
ايده Particle Swarm Optimization، براي اولين بار توسط کندي و ابرهارت در سال 1995 مطرح شد. PSO، يک الگوريتم محاسبه اي تکاملي الهام گرفته از طبيعت و براساس تکرار مي‌باشد. منبع الهام اين الگوريتم، رفتار اجتماعي حيوانات، همانند حرکت دسته جمعي پرندگان و ماهي‌ها بود. از اين جهت که PSO نيز با يک ماتريس جمعيت تصادفي اوليه، شروع مي‌شود، شبيه بسیاری دیگر از الگوریتم های تکاملی همچون الگوريتم ژنتيک پيوسته و الگوریتم رقابت استعماری است. برخلاف الگوریتم ژنتیک ، PSO هيچ عملگر تکاملي همانند جهش و تزويج ندارد. از این جهت می شود گفت که الگوریتم رقابت استعماری شباهت بیشتری به PSO دارد تا به GA. هر عنصر جمعيت، يک ذره ناميده مي‌شود (که همان معادل کروموزوم در GA و یا کشور در الگوریتم رقابت استعماری) است. در واقع الگوريتم PSO از تعداد مشخصي از ذرات تشکيل مي-شود که به طور تصادفي، مقدار اوليه مي گيرند. براي هر ذره دو مقدار وضعيت و سرعت، تعريف مي شود که به ترتيب با يک بردار مکان و يک بردار سرعت، مدل مي‌شوند. اين ذرات، بصورت تکرارشونده اي در فضاي n‌ـ‌بعدي مسئله حرکت مي کنند تا با محاسبة مقدار بهينگي به عنوان يک ملاک سنجش، گزينه‌هاي ممکن جديد را جستجو کنند. بُعد فضاي مسئله، برابر تعداد پارامترهاي موجود در تابع مورد نظر براي بهينه سازي مي باشد. يک حافظه به ذخيرة بهترين موقعيت هر ذره در گذشته و يک حافظه به ذخيرة بهترين موقعيت پيش آمده در ميان همة ذرات، اختصاص مي‌يابد. با تجربة حاصل از اين حافظه ها, ذرات تصميم مي گيرند که در نوبت بعدي، چگونه حرکت کنند. در هر بار تکرار، همة ذرات در فضاي nـ‌بعدي مسئله حرکت مي¬کنند تا بالاخره نقطة بهينة عام، پيدا شود. ذرات، سرعت‌هايشان و موقعيت‌شان را بر حسب بهترين جواب‌هاي مطلق و محلي به‌روز مي‌کنند. يعني
v_{m,n}^{new} = v_{m,n}^{old} + {\Gamma _1} \times {r_1} \times (p_{m,n}^{local\,best} - p_{m,n}^{old}) + {\Gamma _2} \times {r_2} \times (p_{m,n}^{global\,best} - p_{m,n}^{old})
p_{m,n}^{new} = p_{m,n}^{old} + v_{m,n}^{new}

که در آن

  • {v_{m,n}}، سرعت ذره
  • {p_{m,n}}، متغير‌هاي ذره
  • {r_1},\,{r_2}، اعداد تصادفي مستقل با توزيع يکنواخت
  • {\Gamma _1},\,{\Gamma _2}\,، فاکتورهاي يادگيري
  • p_{m,n}^{local\,best}، بهترين جواب محلي
  • p_{m,n}^{global\,best}، بهترين جواب مطلق
مي‌باشند. الگوريتم PSO، بردار سرعت هر ذره را به‌روز کرده و سپس مقدار سرعت جديد را به موقعيت و يا مقدار ذره مي‌افزايد. به‌روز کردن‌هاي سرعت، تحت تأثير هر دو مقدار بهترين جواب محلي و بهترين جواب مطلق قرار مي‌گيرند. بهترين جواب محلي و بهترين جواب مطلق، بهترين جوابهايي هستند که تا لحظه‌ي جاري اجراي الگوريتم، به ترتيب توسط يک ذره و در کل جمعيت به دست آمده‌اند. ثابت‌هاي {\Gamma _1} و {\Gamma _2}\, به ترتيب، پارامتر ادراکي و پارامتر اجتماعي ناميده مي‌شوند. مزيت اصلي PSO اين است که پياده‌سازي اين الگوريتم ساده بوده و نياز به تعيين پارامتر‌هاي کمي دارد. همچنين PSO قادر به بهينه‌سازي توابع هزينه‌ي پيچيده با تعداد زياد مينيمم محلي است.

به زودی بر روی وبسایت الگوریتم رقابت استعماری و بهینه سازی تکاملی کدها و مراجع آموزشی مفیدی راجع به این الگوریتم را برایتان قرار خواهیم داد.

_____________________________________________
نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.

صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.

————————————-
تبلیغات متنی:

متلبسایت فایل آموزشی جامعی در مورد الگوریتم PSO تهیه کرده و ارائه نموده است. جهت مطالعه بیشتر در مورد این الگوریتم می توانید این فایل را تهیه کرده و مطالعه نمایید. با سفارش این محصول با ذکر نام وبسایت الگوریتم رقابت استعماری و بهینه سازی تکاملی، از 20 درصد تخفیف ویژه بهره مند شوید. جهت کسب اطلاعات بیشتر، این لینک را ببینید.

جهت ارائه محصولات آموزشی خود در وبسایت الگوریتم رقابت استعماری و بهینه سازی تکاملی با ما در تماس باشید.

استراتژی حل مسائل بهینه سازی با استفاده از الگوریتم رقابت استعماری

در بسیاری از موارد دوستان زیادی این سوال را مطرح کردند که چگونه باید الگوریتم رقابت استعماری را به مسئله بهینه سازی خود اعمال کنند. در حقیقت، برای حل یک مسئله بهینه سازی، باید تعریف دقیقی از خود مسئله و متغیرها و اهداف بهینه سازی به عمل آید. در این بخش می خواهیم استراتژی حل یک مسئله بهینه سازی را گام به گام بیان کنیم. توضیحات ارائه شده کاملاً عمومی خواهند بود و نه تنها برای استفاده از الگوریتم رقابت استعماری، بلکه برای حل مسائل بهینه سازی با استفاده از هر الگوریتمی مفید خواهند بود.

استراتژی حل مسائل بهینه سازی را گام به گام با بیان تعاریف زیر و پاسخ به سوالات رایج در این مورد ارائه می کنیم.

“این پست اختصاصی وبسایت محاسبات تکاملی و الگوریتم رقابت استعماری تهیه شده است و درج آن در رسانه های چاپی و یا مجازی فقط با کسب اجازه از وبسایت مذکور، مجاز می باشد.”
1) بهینه سازی چیست؟
بهينه‌سازي، تغيير دادن ورودي‌ها و خصوصيات يک دستگاه، فرايند رياضي و يا آزمايش تجربي است، به نحوي که بهترين خروجي يا نتيجه به دست بيايد (شکل زیر). ورودي‌ها، متغيرهاي فرايند يا تابع مورد بررسي هستند که با نام‌هاي تابع هدف (Objective Function)، تابع هزينه (Cost Function) و يا تابع برازندگي (Fitness Function) ناميده مي‌شود. خروجي‌ نيز به صورت هزينه، سود و يا برازندگي تعريف مي‌شود. غالب مسائل بهينه‌سازي به صورت کمينه‌سازي مقدار يک تابع هزينه در نظر گرفته شده‌اند. به راحتي مي‌توان نشان داد که هر نوع مسأله‌ي بهينه‌سازي را مي‌توان در قالب يک مسأله‌ي کمينه‌سازي تعريف نمود.

شكل: فرايند يا تابعي که بهينه‌سازي مي‌شود. در بهينه‌سازي ورودي‌ها يا متغيرها به نحوي تغيير داده مي‌شوند که خروجي مطلوب به دست بيايد.
مراحل حل یک مسئله بهینه سازی
مهمترین قدم در حل یک مسئله بهینه سازی با استفاده از الگوریتم رقابت استعماری و هر روش دیگری، تعریف متغیرهای بهینه سازی و در کنار آن اهداف بهینه سازی می باشد. فرض کنید که می خواهیم آنتن تلویزیون را به گونه ای تنظیم کنیم که بیشترین کیفیت تصویر دریافتی را داشته باشد. عبارت “تنظیم آنتن تلویزیون برای داشتن بیشترین کیفیت تصویر دریافتی” یک بیان کیفی از یک مسئله بهینه سازی است. در بعضی موارد روشهای سعی و خطا برای یافتن جواب بهینه استفاده می شود. بدین ترتیب که در این مثال نوعی، یک نفر به پشت بام رفته و شروع به جابجا کردن آنتن تلویزیون می کند و یک نفر دیگر نیز پشت تلویزیون نشسته و با عبارتهایی نظیر:
  • آهان همین زاویه رو نگه دار
  • یکم برگرد عقب تر
  • نه الان خیلی بد شد
  • و ….
با صدای بلند میزان کیفیت هر یک از موقعیت های آنتن را به گوش تنظیم کننده آنتن می رساند. معمولاً کسی که بالا رفته و آنتن را جابجا می کند، حرفه ای تر از فردی هست که پایین پشت تلویزیون نشسته و داد می زند.فرد بالای پشت بام (فرد حرفه ای تر) نقش الگوریتم بهینه سازی و فردی که کیفیت تصویر را داد میزند، نقش تابع هزینه را بازی می کند.در موارد زیادی حل مسئله بهینه سازی با سعی و خطا امکن پذیر نیست! یک دلیل برای این کار این است که فضای جستجوی مسئله بسیار بزرگ است. دلیل دیگر این است که نمی توان هر بار سیستم را اجرا کرده و نتیجه آن را مشاهده کرد. فرض کنیم که برای قرار گرفتن یک ماهواره در مدار زمین باید، بهینه ترین سرعت و زاویه پرتاب و بهینه ترین مسیر حرکت باید تعیین شوند. نمی توان برای تعیین جواب مسئله هر بار ماهواره ارسال کرد و با همان عبارتهای مشابه ” آهان همین رو نگه دار”، “یکم برگرد عقب تر” و “نه الان خیلی بد شد” (مشابه روش تعیین مسیر بهینه شلیک گلوله توپ به هدف) بهترین روش پرتاب ماهواره را تعیین نمود.

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

2) هدف چیست (بیان کیفی هدف)؟

در مثال مطرح شده هدف رسیدن به بیشترین کیفیت تصویر دریافتی از تلویزیون است.

3) متغیرهای بهینه سازی چه هستند؟

با بیان هدف به صورت کیفی، به سراغ پارامترهایی می رویم که دست ما هستند و می توانند برای رسیدن به هدف ما را کمک کنند. در این مورد متغییر قابل تغییر، زاویه آنتن تلویزیون می باشد. اگر پارامترهای دیگری نیز در مسئله تاثیر دارند، لیستشان می کنیم و در غیر این صورت به گام بعدی می رویم. به عنوان مثال در کنار زاویه آنتن، ممکن است که ارتفاع آن نیز در کیفیت تصویر دریافتی تاثیر داشته باشد. مواردی مانند کیفیت آنتن و یا مثلاً طول سیم آنتن و موارد مشابه دیگر می توانند بسته به تعریف ما، وارد متغیرهای بهینه سازی بشوند یا نشوند. ما فعلاً همان دو مورد اول را در نظر می گیریم و بنابراین داریم.

Image Quality = function(Antenna Angle , Antenna Height)

و به طور خلاصه داریم:

IQ = f(x1 , x2)

که در آن x1، میزان زاویه آنتن و x2 میزان ارتفاع آنتن است.

4) ارتباط میان هدف بهینه سازی و متغیرهای بهینه سازی به صورت ریاضی چیست؟

تا الان کاری که کردیم ارائه یک بیان کیفی از مسئله بهینه سازی است و عملاً تا الان کار زیادی انجام نداده ایم. کار اصلی بیان ریاضی یک مسئله بهینه سازی، در این مرحله انجام می شود. در این مرحله باید ارتباط میان متغیرها و هدف بهینه سازی را بیان کنیم. معمولاً بسته به حوزه تخصصی مربوط به مسئله بهینه سازی، این مرحله به دانش نسبتاً زیادی از مسئله بهینه سازی نیاز دارد و اینگونه نیست که فردی خارج از حوزه مرتبط به مسئله، حتی با داشتن تخصص بالا در بهینه سازی بتواند به بیان تابع هزینه کمک کند. مثلاً برای بیان ارتباط میان کیفیت تصویر دریافتی از تلویزیون و زاویه و ارتفاع آنتن، به دانش تخصصی در حوزه میدان ها و امواج و نیز تصویر نیاز است. فرض کنیم که با مراجعه به متون تخصصی این حوزه به رابطه مفروض زیر می رسیم.

IQ = 100 – x1^2 – (x2-5)^2

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

x1 = 0;
x2 = 5;

که با مقادیر فوق به کیفیت تصویر 100 می رسیم.

5) حال اگر رابطه فوق کمی پیچیده تر باشد، چه باید کرد؟ مثال زیر را در نظر می گیریم.

IQ = -20 – x1^2 + x2^2 + 10 * (cos(2*pi*x1) + cos(2*pi*x2));

این رابطه دارای تعداد زیادی نقاط اکسترمم محلی و یک نقطه اکسترمم مطلق در نقطه (0,0) می باشد. برای حل چنین مسائل بهینه سازی، از روش های دیگر بهینه سازی همچون بهینه سازی تکاملی و در میان آنها از می توان از الگوریتم رقابت استعماری استفاده کرد.

6) پس از تعریف ارتباط ریاضی تابع هزینه و متغیرهای بهینه سازی چه باید کرد؟

در این مرحله پیاده سازی عملی کار شروع می شود. در مراجع مختلف و به ویژه در اینترنت، کدهای رایگان بسیاری از الگوریتم های بهینه سازی تکاملی وجود دارند. کدهای رایگان الگوریتم رقابت استعماری نیز به سادگی با جستجوی عبارت “کدهای رایگان الگوریتم رقابت استعماری” و یا “Imperialist Competitive Algorithm Code” به زبانهای مختلف قابل تهیه هستند. نکته مشترک میان همه این کدها این هست که این کدها، تابع هزینه مسئله شما را گرفته و پس از جستجو با استراتژی های مختلف، جواب مسئله را به شما می دهند. برای استفاده از همه کدهای موجود بر روی وب باید تابع هزینه خود را به صورت یک تابع جداگانه بنویسید. البته میان نحوه تعریف تابع هزینه در کدهای مختلف شاید ، اندکی تفاوت موجود باشد. منتها روند کلی به صورت زیر است.

Cost = function(X)
Cost = f(X);
end

در مورد نحوه تعریف تابع هزینه، فیلم آموزشی کوتاهی بر روی سایت الگوریتم رقابت استعماری قرار گرفته است و موارد تکمیلی به زودی ارائه خواهند شد.

7) آیا تابع هزینه مسئله همیشه به صورت یک برنامه ساده و یک رابطه ریاضی مشخص است؟

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

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

8) مسئله بهینه سازی من پارامتهای دیگری دارد که متغیر بهینه سازی نیستند ولی در بهینه سازی تاثیر دارند، چه کنم؟

معمولاً تابع هزینه ما پارمترهای دیگری دارد. سعی کنید، تمام پارامتهای اضافی (پارامتهای به غیر از متغیرهای بهینه سازی) را داخل کد تابع هزینه قرار دهید و تابع هزینه شما فقط شامل متغیرهای بهینه سازی باشد (تابع شما فقط متغیرهای بهینه سازی را به عنوان ورودی دریافت کند). مثلاً جنس آنتن می تواند پارامتری باشد که کاملاً مدل شده است ولی جزو متغیرهای بهینه سازی ما نیست و در عین حال روی تابع هزینه مثال مطرح شده، تاثیر دارد. البته در کدهای تهیه شده برای الگوریتم رقابت استعماری، متغیرهای اضافی برای دریافت پارامتهای اضافی نیز ذخیر شده اند.

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

—————————————————————–

قسمتی از پروژه ی پایان نامه ی من به این شکل تعریف شده است:انجام آزمایشات (32 موردآزمایش) با استفاده از دستگاه WEDM: در طول انجام این آزمایشات که بر حسب روش طراحی آزمایش تاگوچی طرح ریزی شده اند، 5 فاکتور ورودی سیستم یعنی W (تغذیه ی سیم)، P (توان)، V (ولتاژ)، S (سر) و زمان تغییر می کند تا از این طریق اثر تغییر این پارامترها روی خروجی و یا کارایی سیستم بررسی شود. خروجی های سیستم هم حجم برداشته شده از سطح قطعه کار (MRR) و صافی سطح (SR) است.برای بهینه سازی خروجی فرایند، تصمیم گرفتم که از الگوریتم استعماری استفاده کنم. ولی مشکلی که دارم این است که نمی دانم به چه شکل می توانم تابع هزینه متناسب با این فرایند را تعریف کنم؟ یکی از توابع هزینه که درفرایند های ماشینکاری مطرح میشود به شکل زیر است

L(w,p,s,v,t) = MRR + 1/SR

به این مفهوم که با تغییر ورودی ها به ماکزیمم مقدار برداشت مواد از سطح و کمترین پستی و بلندی که با SR نمایش داده می شود برسیم.

—————————————————————–

سوالاتی زیر برای من مطرح است:

سوال 1: برای استفاده از الگوریتم رقابت استعماری، چه تعداد تابع هزینه بایستی تعریف شود؟

پاسخ: الگوریتم رقابت استعماری در حال حاضر برای حل مسائل بهینه سازی تک هدفه مفید می باشد. علاقه مندان زیادی بر روی نسخه های چند هدفه الگوریتم کار می کنند و مطمئناً به زودی کدهای چند هدفه الگوریتم را نیز بر روی وب خواهیم داشت. البته لازم به ذکر هست که مسائل بهینه سازی چند هدفه غالباً با جمع خطی تک تک اهداف به مسائل تک هدفه تبدیل می شوند. مسئله مذکور نیز همین گونه است. دو هدفMRRوSRبا جمع شدن با وزن واحد تبدیل به یک هدفLشده اند. البته همانگونه که به نظر می رسد، ظاهراًMRRباید کمینه شود وSRباید بیشینه شود، زیرا معکوس آن باMRRجمع شده است. البته تبدیل یک مسئله دو یا چند بعدی به یک مسئله یک بعدی روش هایی دیگری دارد که در مورد آنها در مطالب بعدی بر روی سایت بحث خواهد شد. فعلاً خلاصه می کنیم که تابع شما یک تابع یک هدفه است و یک تابع هزینه باید برای آن نوشته شود. البته این به این معنی نیست که کد برنامه فقط یک تابع خواهد داشت. در بسیاری موارد ما یک تابع تک هدفه حتی ساده را نیز به تعدادی تابع کوچکتر شکانده و وظایف بخش های مختلف برنامه را به این زیر تابع ها می سپاریم. اما در نهایت آنها در قالب یک تابع هزینه اصلی کنار هم سازمان دهی می کنیم. مثلاً

function Y = f(x)

Y = f1(x) + f2(x)

end

function Y = f1(x)

Y = sin(x)

end

function Y = f1(x)

Y = cos(x)

end
فراخوانی تابع f برای هر مقدار x به عبارت sin(x)+coss(x) خواهد رسید. بنابراین تعداد اهداف مسئله بهینه سازی (که در اکثر کاربردها یک می باشد)، لزوماً تعداد توابع مورد استفاده برای کد نویسی آن را نشان نمی دهد.

سوال 2: تابع هزینه به صورت FUNCTION باید باشد؟

پاسخ: بله! شما پس از جدا کردن و تعریف کردن متغیرهای بهینه سازی خود، یک تابع هزینه می نویسید که با دریافت این متغیرها ، خروجی هزینه را بدهد. در این مورد فیلم آموزشی کوتاهی بر روی سایت الگوریتم استعماری (www.icasite.info) وجود دارد. موارد آموزشی تکمیلی به زودی بر روی سایت قرار خواهد گرفت.

سوال 3: تابع هزینه باید رابطه ای بین ورودی ها باشد ویا خروجی ها؟

پاسخ: ظاهراً تابع هزینه شما باید بهترین مقادیر (w,p,s,v,t) را بدهد. بنابراین شما باید تابعی بنویسید که این مقادیر را گرفته وMRRوSRاز روی آنها تعیین شوند و در نهایتLبه دست آید. در حقیقت داریم.

MRR = MRR(w,p,s,v,t)
SR = SR(w,p,s,v,t)
L = L(w,p,s,v,t) = MRR + 1/SR = MRR(w,p,s,v,t) + 1/SR(w,p,s,v,t)

اگر بخواهیم تا حدی یک شبه کد برای این مسئله بنویسیم خواهیم داشت.

Function L = L_Fcn(w,p,s,v,t)
L = MRR_Fcn(w,p,s,v,t) + 1/ SR_Fcn(w,p,s,v,t)
end
Function MRR = MRR_Fcn(w,p,s,v,t)
{Required Calculations}
end
Function SR = SR_Fcn(w,p,s,v,t)
{Required Calculations}
end

الگوریتم رقابت استعماری فقط با تابع L_Fcn کار خواهد کرد و با بقیه تابع ها کاری نخواهد داشت.

پایان متن
————————————————————————–

بخش 1 این نوشتار با عنوان بهینه سازی چیست، به همراه تصویر موجود در این بخش برداشتی از کار ارزشمند جناب آقای مهندسی سید مصطفی کلامی هریس با کسب اجازه از ایشان بوده است.

 

_____________________________________________
نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.
صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.