دانلود رایگان کتاب الگوریتم ژنتیک عملی Practical Genetic Algorithms

کتاب الگوریتم ژنتیک عملی (Practical Genetic Algorithms) از رایج ترین و پراستفاده ترین مراجع در زمینه آموزش الگوریتم های ژنتیک در متلب می باشد. از ویژگی های منحصر به فرد این کتاب آموزش کد نویسی الگوریتم ژنتیک در متلب می باشد. با توجه به اهمیت کتاب مذکور، متلب سایت کتاب الگوریتم ژنتیک عملی را در اختیار مراجعین محترم قرار داده است. این کتاب آموزشی مفید را می توانید از لینکهای زیر دانلود کنید. با ما در ادامه مطلب همراه باشید.

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

در این پست یک پایان نامه از دانشگاه MIT راجع به برنامه ریزی ژنتیک را برای دانلود در اختیار مراجعین عزیز گذاشته ایم. با نگاهی کوتاه به نظر می رسد که گرفتن مدرک کارشناسی ارشد از دانشگاه MIT زیاد هم سخت نیست. (D:) عنوان پایان نامه (Characterizing Function Inlining with Genetic Programming) می باشد. این پایان نامه را می توانید از لینک زیر دانلود کنید.

لینک دانلود

دانلود رایگان فایل آموزش تولباکس الگوریتم ژنتیک در متلب – GA Toolbox Tutorial

الگوریتم ژنتیک (Genetic Algorithm – GA) تکنیک جستجویی در علم رایانه برای یافتن راه‌حل تقریبی برای بهینه‌سازی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتمهای تکامل است که از تکنیکهای زیست‌شناسی فرگشتی مانند وراثت و جهش استفاده می‌کند. با ما در ادامه مطلب همراه باشید.

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

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

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

نکته مهم: اگر سرعت اینترنتان پایین است، روی لینک راست کلیک کرده و گزینه save as را انتخاب کنید.
لینک دانلود (3.1 MB)

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

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

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

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

دانلود رایگان کتاب الگوریتم بهینه سازی کلونی مورچه ها – Ant Colony Optimization

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

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

نویسندگان این کتاب، از سرشناس ترین دانشمندان در حوزه هوش جمعی یا هوش ازدحامی (Swarm Intelligence) و الگوریتم های مورچه هستند. نوسینده اول این کتاب مارکو دوریگو (Marco Dorigo) است که برای اولین بار، موضوع بهینه سازی با استفاده از رفتار اجتماعی مورچه ها را در رساله دکترای خود پیشنهاد کرد و سال ها با موسسه ایریدیا (Iridia)، که یک موسسه تحقیقات ریاضی در ایتالیاست، در این زمینه همکاری کرده است. وی رساله ده ها دانشجوی دکترا را در زمینه الگوریتم مورچه ها، راهنمایی کرده است. نویسنده دوم این کتاب نیز، اشتوتزل (Stutzle) است که او نیز نقش بسیار زیادی در تکامل تئوری الگوریتم مورچه ها داشته است. به عنوان مثال الگوریتم سیستم مورچه کمینه-بیشینه (Max-Min Atn System) یا MMAS از ابداعات وی می باشد.

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

لینک دانلود

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

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

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

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

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

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

دانلود رایگان کتاب بهینه سازی چند هدفه – Multiobjective Optimization

در این پست، بهینه سازی چند هدفه را برای دانلود در اختیار علاقه مندان قرار داده ایم. با ما در ادامه مطلب همراه باشید.

موضوع بحث کتاب بهینه سازی چند هدفه (Muti-objective Optimization)، مسائلی است که دارای دو یا چند معیار بهینگی هستند که غالبا با هم در تعارض می باشند. این گونه مسائل، در شاخه های مختلف علوم پایه، مهندسی و اقتصاد، روز به روز بیشتر مطرح می شوند و از این رو نیاز به روش های مناسب برای حل دقیق و صحیح این مسائل، در حال افزایش است. مشکل اصلی که در برخورد با این گونه مسائل مطرح است، این است که، بر خلاف مسائل بهینه سازی تک هدفه که دارای یک جواب بهینه هستند، در مسائل بهینه سازی چند هدفه، مجموعه ای از جواب ها وجود دارند که هر کدام از دیدگاهی می توانند بهینه باشند. این مجموعه از جواب ها در حوزه بهینه سازی چند هدفه، به جبهه پارتو یا Pareto Front معروف هستند. لذا الگوریتم های خاصی برای برخورد با این گونه مسائل طراحی شده اند که در این کتاب به مفاهیم اساسی این روش ها پرداخته شده است. مطالعه این کتاب برای افرادی که می خواهند از الگوریتم رقابت استعماری در حل مسائل چند هدفه خود استفاده کنند، نیز مفید خواهد بود.
لینک دانلود این کتاب در ادامه قرار داده شده است:

الگوریتم بهینه سازی کلونی مورچگان چیست؟

الگوریتم Ant colony Optimization که به اختصار ACO نامیده می شود و به نامهای الگوریتم کلونی مورچگان و بهینه سازی کلونی مورچه ها در ایران شناخته می شود یکی از شناخته شده ترین الگوریتم های بهینه سازی تکاملی است. بر آن شدیم تا در وبسایت الگوریتم رقابت استعماری در پستی کوتاه به معرفی این الگوریتم بپردازیم. با ما در ادامه مطلب همراه باشید.

مورچه‌ها اين قابليت را دارند که مي‌توانند با توليد فرومون، کوتاه‌ترين مسير به غذا را بيابند. مورچه‌ها مسير غذا را توسط فرمون، پيدا مي‌کنند. مورچه‌هايي که کوتاه‌ترين مسير را انتخاب مي‌کنند، نسبت به آن‌هايي که مسير طولاني‌تري را انتخاب مي‌کنند، دنباله‌ي فرمون شديدتري، ايجاد مي‌کنند. از آنجاکه فرمون شديدتر، مورچه‌ها را بهتر جذب مي‌کند، مورچه‌هاي بيشتر و بيشتري، مسير کوتاه‌تر را انتخاب مي‌کنند تا آنجاکه همه‌ي مورچه‌ها، کوتاه‌ترين مسير را يافته و از آن مسير حرکت مي‌کنند. براي بررسي بيشتر موضوع، فرض مي‌کنيم که به عنوان مثال، سه مسير به منبع غذا وجود دارند که داراي طول متفاوتي هستند. مورچه‌ها، هر سه مسير را با احتمالات يکسان، انتخاب مي‌کنند. مورچه‌هايي که مسير کوتاه‌تر را رفته و برگشته‌اند، بيشترين فرمون را زودتر از بقيه توليد مي‌کنند. در نتيجه، مورچه‌هاي ديگر اين مسير را زودتر انتخاب کرده و به نوبه‌ي خود، سطح فرمون اين مسير را تقويت مي‌کنند. در نهايت همه‌ي مورچه‌ها، کوتاه‌ترين مسير به غذا را مي‌پيمايند.
عملکرد مورچه‌هاي آرژانتيني(1) در يافتن کوتاه‌ترين مسير بين لانه و منبع غذايي، بسيار عجيب و حيرت انگيز است. مورچه‌ي آرژانتيني عملا کور است و طبعا کوتاه‌ترين مسير براي او مفهومي ندارد و توسط او قابل شناخت نمي‌باشد. اما با وجود چنين کمبودي، توده‌اي از اين مورچه‌ها مي‌توانند با همکاري يکديگر، کوتاه‌ترين مسير موجود بين لانه و محل مواد غذايي را پيدا کنند. براي پي بردن به اين خاصيت، آزمايشي در محيطي شبيه به شکل 2-10 ترتيب داده شده است. در ابتدا تمامي مورچه‌ها در محل لانه هستند و قبلا هيچ مورچه‌اي از مسير بين لانه و محل مواد غذايي رد نشده است. آزمايش نشان مي‌دهد که مورچه‌ها پس از مدتي کوتاه‌ترين مسير بين لانه و محل مواد غذايي را انتخاب خواهند نمود. اين آزمايش توسط گاس و همکارانش انجام گرفته است و نتايج آن طي مقالاتي در سال‌هاي 1989 و 1992 منتشر گرديده است.

شکل: رفتار مورچه‌هاي آرژانتيني در آزمايش گاس و همکارانش

اولين الگوريتم بهينه‌سازي کلوني مورچه‌ها (ACO) براي حل مسئله‌ي فروشنده‌ي دوره‌گرد طراحي شد [1]. در اين بخش به طور خلاصه چگونگي عملکرد ACO براي حل اين مسئله مورد بررسي قرار مي‌گيرد. در اين مسئله، ACO با يک تعداد اوليه از مورچه‌ها که مسير‌ي را در اطراف شهرها، طي مي‌کنند، شروع مي‌شود. هر مورچه، فرموني را در طول مسير آزاد مي‌کند. الگوريتم با اختصاص هر مورچه به يک شهر که بطور تصادفي انتخاب مي‌شود، شروع مي‌گردد. شهر بعد با يک احتمال وزن‌دار، که تابعي از شدت فرمون موجود در مسير و طول آن است، انتخاب مي‌شود. احتمال اينکه مورچه‌ي kام مسير شهر mام به شهر nام را طي کند برابر است با

p_{mn}^k = \frac{{\tau _{mn}^a/d_{mn}^b}}{{\sum\nolimits_q {(\tau _{mn}^a/d_{mn}^b)} }}

که در آن
  • \tau ، شدت فرمون
  • q، شهر‌هاي موجود در مسير k که بعد از شهر m مي‌آيند.
  • a، وزن‌دهي فرمون؛ زماني که a=0، نزديک‌ترين شهر انتخاب مي‌شود.
  • b، وزن‌دهي فاصله؛ زماني که b=0، فاصله ميان شهر در نظر گرفته نمي‌شود.

کوتاه‌ترين مسير، با بيش‌ترين فرمون، بيش‌ترين احتمال انتخاب شدن را دارد. در استفاده‌هاي اوليه‌ي از ACO، اين نتيجه حاصل شد که يک استراتژي نخبه‌گرايي نيز همانند آنچه که براي GA وجود دارد، مي‌تواند کارايي الگوريتم را بهبود ببخشد. در نتيجه، در محاسبه‌ي سطوح فرمون، به فرمون در طول بهترين مسير، وزني داده مي‌شود. فرمول بهينه‌سازي فرمون، به صورت زير بيان مي‌شود.

که در آن

{\tau _{mn}} = (1 - \xi ){\tau _{mn}} + \sum\limits_{k = 1}^{{N_{ants}}} {\tau _{mn}^k + \varepsilon \tau _{mn}^{elite}}
  • \tau _{mn}^k، فرمون ايجاد شده توسط مورچه‌ي k بين شهر‌هاي m و n
  • \xi ، ضريب تبخير فرمون
  • \varepsilon ، ثابت وزن‌دهي مسير نخبه
  • \tau _{mn}^{elite}، فرمون ايجاد شده روي بهترين مسيري که تاکنون، توسط الگوريتم يافته شده است. ی

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

شکل: یک حل نوعی از مسئله فرشنده دوره گرد توسط الگوریتم کلونی مورچگان

ACO براي حل مسائل ديگر بهينه‌سازي نيز استفاده مي‌شود. الگوریتم کلونی مورچگان در ورژن اولیه خود برای حل مسائل گسسته از نوع جایگشتی معرفی شد. بیشترین استفاده از این الگوریتم به حل مسائل مسیریابی در شبکه های کامپیوتری، تخصیص منابع در مهندسی صنایع، تقسیم وظایف در پردازنده ها و میان ماشین آلات بر می گردند. در مقابل ACO، الگوریتم های PSO و رقابت استعماری که به اختصار ICA نامیده می شود برای حل مسائل پیوسته معرفی شدند. اما هر دو الگوریتم در مدت کوتاهی پس از معرفی شدن، با معرفی نسخه های گسسته به ابزاری برای حل مسائل گسسته و بطور ویژه مسائل جایگشتی تبدیل شدند.

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

——————————————————————————————-

(1) نام علمي اين گونه‌ي خاص Linepithema Humile است که قبلا به نام Iridomyrmex Humilis نيز خوانده مي‌شد. مورچه‌ي آرژانتيني بسيار ريز و تيره رنگ است. زيستگاه اين موجود در بخش‌هاي شمالي آرژانتين، اوروگوئه و پاراگوئه و همچنين بخش‌هاي جنوبي برزيل است.

 شکل: رفتار بهینه کلونی مورچه ها

شکل: رفتار بهینه کلونی مورچه ها

شکل: رفتار بهینه کلونی مورچه ها


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

صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.
تبلیغات:
متلبسایت فایل آموزشی جامعی در این زمینه دارد. با ذکر نام وبسایت الگوریتم رقابت استعماری و بهینه سازی تکاملی از 30 درصد تخفیف ویژه!! در خرید فایل آموزشی جامع زیر در مورد الگوریتم کلونی مورچگان بهره مند شوید. جهت کسب اطلاعات بیشتر روی لینک عکس زیر کلیک کنید.

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

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

در این پست می خواهیم بطور خلاصه به معرفی الگوریتم بهینه 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 درصد تخفیف ویژه بهره مند شوید. جهت کسب اطلاعات بیشتر، این لینک را ببینید.

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

هفتمین کنفرانس بین المللی مهندسی صنایع

دانشكده مهندسی صنايع دانشگاه صنعتی اصفهان با همكاری انجمن مهندسی صنايع ايران، هفتمین کنفرانس بین المللی مهندسی صنایع را در تاریخ ۱۴ و ۱۵ مهرماه ۱۳۸۹ برگزار می‌نماید. بدین وسیله از كلیه پژوهشگران، صاحب نظران، متخصصان و علاقمندان در رشته های مختلف مهندسی صنایع دعوت می‌شود تا مقالات خود حاوی آخرین یافته‌های علمی در زمینه‌های موضوعی كنفرانس را به دبیرخانه كنفرانس ارسال نمایند.
عنوان کنفرانس: هفتمين كنفرانس بين المللي مهندسي صنايع
 
7th International Industrial Engineering Conference
تاريخ برگزاري: 14 مهر 1389 تا 15 مهر 1389
برگزار کننده: انجمن مهندسي صنايع ايران
سایر برگزار کنندگان: دانشكده مهندسي صنايع دانشگاه صنعتي اصفهان
محل برگزاري: اصفهان
تاریخ‌های مهم:
مهلت ارسال اصل مقاله: 1389/2/10
دریافت نسخه نهایی مقالات: 1389/5/20
اعلام نتایج داوری اصل مقاله: 1389/4/20
مهلت ثبت نام: 1389/7/14
محورهاي اصلي كنفرانس
  • برنامه‌ريزي و كنترل توليد و موجودي
  • بهينه سازي و برنامه‌ريزي رياضي
  • توالي عمليات و زمان‌بندي
  • جايابي / طراحي استقرار
  • حمل و نقل و لجستيك
  • داده‌كاوي و كشف دانش (اطلاعات)
  • روش‌هاي تصميم‌گيري
  • روشهاي فرا ابتكاري در مهندسي صنايع
  • سيستم‌هاي ساخت و توليد پيشرفته
  • طراحي و مديريت زنجيره تأمين
  • كاربردهاي مهندسي صنايع در صنعت و خدمات
  • مدل‌سازي و شبيه‌سازي سيستم‌ها
  • مدل‌هاي احتمالي / فازي
  • مديريت كيفيت، مهندسي كيفيت
  • مديريت، برنامه‌ريزي وكنترل پروژه
  • قابليت اطمينان و مديريت نگهداري و تعميرات
  • مهندسي فاكتورهاي انساني
  • هوش مصنوعي و سيستم‌هاي خبره
اطلاعات تماس با دبیرخانه:
تلفن دبيرخانه:
فکس دبيرخانه:
ایمیل: info@iiec2010.com
وب‌سایت: http://www.iiec2010.com/
_____________________________________________
نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.
صرف زمان برای یادگیری اتلاف زمان نیست. سرمایه گذاری زمانی است.

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

این پست در پاسخ سوال یکی از دوستان در مورد نحوه مواجهه با قیود در الگوریتم رقابت استعماری تهیه شده است. مطالعه این پست را به آنهایی که علاقه دارند تا مسائل بهینه سازی مقید خود را با الگوریتم های تکاملی و به طور ویژه با الگوریتم رقابت استعماری حل کنند، توصیه می کنیم. ایده مطرح شده در این پست، کلی بوده و قابل اعمال به همه الگوریتم های تکاملی از جمله الگوریتم های ژنتیک (Genetic Algorithms)، الگوریتم پرندگان یا ازدحام ذرات (Particle Swarm Optimization) و یا کلونی مورچگان (Ant Colony Optimization) می باشد. با ما در ادامه مطلب همراه باشید.

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

 

فرض کنید می خواهیم در یک مسئله بهینه سازی در حوزه مدیریت مالی، از مجموع یک بودجه برداشتی بهینه داشته باشیم. یک تابع هدف نیز داریم. قیدی داریم که مجموع برداشت ها باید یک (100 درصد) باشد. این قید هم باید در تولید جوابهای اولیه و هم در ایجاد تغییرات آرام (تابع جذب) و هم در تغییرات ناگهانی (تابع انقلاب) لحاظ شود.
در ورژن اولیه کدها که معمولاً استفاده می شود، این سه تابع به ترتیب عبارتند از
  • GenerateNewCountry
  • AssimilateColonies
  • RevolveColonies
در هر سه این توابع باید خطوطی از کد را اضافه کنیم که جمع متغیرهای تولیدی را برابر با یک کند. مثلاً تابع GenerateNewCountry در حالت اولیه به صورت زیر است.
function NewCountry = GenerateNewCountry(NumOfCountries,ProblemParams)
VarMinMatrix = repmat(ProblemParams.VarMin,NumOfCountries,1);
VarMaxMatrix = repmat(ProblemParams.VarMax,NumOfCountries,1);
NewCountry = (VarMaxMatrix – VarMinMatrix) . rand(size(VarMinMatrix)) + VarMinMatrix;
end
با اضافه کردن یک خط می توان مجموع اجزای یک کشور را در مرحله ایجاد برابر با یک کرد. تابع تغییر یافته و خط اضافه شده را در زیر می بینید.
function NewCountry = GenerateNewCountry(NumOfCountries,ProblemParams)
VarMinMatrix = repmat(ProblemParams.VarMin,NumOfCountries,1);
VarMaxMatrix = repmat(ProblemParams.VarMax,NumOfCountries,1);
NewCountry = (VarMaxMatrix – VarMinMatrix) . rand(size(VarMinMatrix)) + VarMinMatrix;
%% Normalizing the sum of population to 1
NewCountry = NewCountry . repmat(sum(NewCountry,2),1,ProblemParams.NPar);
end

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

تغییرات مشابهی در توابع بعدی نیز باید ایجاد شود. دو تابع بعدی را به ترتیب در زیر آورده ایم.

تابع AssimilateColonies در حالت اولیه

function TheEmpire = AssimilateColonies(TheEmpire,AlgorithmParams,ProblemParams)
NumOfColonies = size(TheEmpire.ColoniesPosition,1);
Vector = repmat(TheEmpire.ImperialistPosition,NumOfColonies,1)-TheEmpire.ColoniesPosition;
TheEmpire.ColoniesPosition = TheEmpire.ColoniesPosition + 2 AlgorithmParams.AssimilationCoefficient rand(size(Vector)) . Vector;
MinVarMatrix = repmat(ProblemParams.VarMin,NumOfColonies,1);
MaxVarMatrix = repmat(ProblemParams.VarMax,NumOfColonies,1);
TheEmpire.ColoniesPosition=max(TheEmpire.ColoniesPosition,MinVarMatrix);
TheEmpire.ColoniesPosition=min(TheEmpire.ColoniesPosition,MaxVarMatrix);
end

تابع AssimilateColonies در حالت تغییر یافته

function TheEmpire = AssimilateColonies(TheEmpire,AlgorithmParams,ProblemParams)
NumOfColonies = size(TheEmpire.ColoniesPosition,1);
Vector = repmat(TheEmpire.ImperialistPosition,NumOfColonies,1)-TheEmpire.ColoniesPosition;
TheEmpire.ColoniesPosition = TheEmpire.ColoniesPosition + 2 AlgorithmParams.AssimilationCoefficient rand(size(Vector)) . Vector;
%% Modifying Population according to Conditions
MinVarMatrix = repmat(ProblemParams.VarMin,NumOfColonies,1);
MaxVarMatrix = repmat(ProblemParams.VarMax,NumOfColonies,1);
TheEmpire.ColoniesPosition=max(TheEmpire.ColoniesPosition,MinVarMatrix);
TheEmpire.ColoniesPosition=min(TheEmpire.ColoniesPosition,MaxVarMatrix);
TheEmpire.ColoniesPosition = TheEmpire.ColoniesPosition .      repmat(sum(TheEmpire.ColoniesPosition,2),1,ProblemParams.NPar);
end

تابع RevolveColonies در حالت اولیه

function TheEmpire = RevolveColonies(TheEmpire,AlgorithmParams,ProblemParams)
NumOfRevolvingColonies = round(AlgorithmParams.RevolutionRate numel(TheEmpire.ColoniesCost));
RevolvedPosition = GenerateNewCountry(NumOfRevolvingColonies , ProblemParams);
R = randperm(numel(TheEmpire.ColoniesCost));
R = R(1NumOfRevolvingColonies);
TheEmpire.ColoniesPosition(R,) = RevolvedPosition;
MinVarMatrix = repmat(ProblemParams.VarMin,NumOfColonies,1);
MaxVarMatrix = repmat(ProblemParams.VarMax,NumOfColonies,1);
TheEmpire.ColoniesPosition=max(TheEmpire.ColoniesPosition,MinVarMatrix);
TheEmpire.ColoniesPosition=min(TheEmpire.ColoniesPosition,MaxVarMatrix);
end

تابع RevolveColonies در حالت تغییر یافته

function TheEmpire = RevolveColonies(TheEmpire,AlgorithmParams,ProblemParams)
NumOfRevolvingColonies = round(AlgorithmParams.RevolutionRate numel(TheEmpire.ColoniesCost));
RevolvedPosition = GenerateNewCountry(NumOfRevolvingColonies , ProblemParams);
R = randperm(numel(TheEmpire.ColoniesCost));
R = R(1NumOfRevolvingColonies);
TheEmpire.ColoniesPosition(R,) = RevolvedPosition;
%% Modifying Population according to Conditions
NumOfColonies = size(TheEmpire.ColoniesPosition,1);
MinVarMatrix = repmat(ProblemParams.VarMin,NumOfColonies,1);
MaxVarMatrix = repmat(ProblemParams.VarMax,NumOfColonies,1);
TheEmpire.ColoniesPosition=max(TheEmpire.ColoniesPosition,MinVarMatrix);
TheEmpire.ColoniesPosition=min(TheEmpire.ColoniesPosition,MaxVarMatrix);
TheEmpire.ColoniesPosition = TheEmpire.ColoniesPosition . repmat(sum(TheEmpire.ColoniesPosition,2),1,ProblemParams.NPar);
end

با ایجاد این تغییرات تضمین می شود که جواب بهینه نهایی مسئله مجموع یک خواهد داشت.

در زیر نمودار همگرایی مسئله را می بینیم.

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

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

  1. مسئله من تعداد زیادی قید داره، تا جایی که من کد ها رو بررسی کردم باید اونا رو تو 3 جا اعمال کنیم:      RevolveColonies و GenerateNewCountry و AssimilateColonies. اینا درستن یا جای دیگه ای هم هست؟
  2. بعد از تولید جمعیت اولیه ( یا مراحل بعدی) به صورت اتفاقی، شرایط رو اعمال میکنم و اگر جواب نداد هر مرحله رو از اول تکرار میکنم تا جمعیت ها حتما قیود رو شامل باشن و این کار خیلی سرعت رو پایین میاره آیا راه حلی برای بهبود این وضعیت هست؟

پاسخ ها:

  1. دقیقاً این بخشها هستند که باید تغییر پیدا کنند. تازه اینها بخشهایی هستند در صورت استفاده از “سیاست پیشگیری”، باید تغییر یابند. اگر از سیاست جریمه استفاده شوند، همین ها هم نیازی به تغییر ندارند! در این مورد فرض بر این هست که شما فایل صوتی زیر را مورد استفاده قرار داده اید!
    1. http://www.icasite.info/2010/05/blog-post_1525.html
  2. این بخش نیاز به خلاقیت در هر مسئله دارد. به عنوان یک مثال ساده، مثلاً وقتی قیدها قرار است مجموعشان برابر عدد یک شود، شما می توانید همیشه یکی از متغیرها را برابر یک منهای بقیه تعریف کنید. روش دیگر می تواند، تقسیم همه اعداد به مجموع شان باشد. بسته به شرایط، هر یک از این دو روش می تواند مناسب تر از دیگری باشد. اینکه چه راهی مناسب تر است، نیاز به ایده زنی در آن مسئله دارد. در ضمن اگر دیدید این مسیر سخت می شود، استفاده از متدهای کلی مبتنی بر جریمه پیش روی شماست! در نهایت این را هم در نظر بگیرید که چرخه مورد نظر نباید آنقدر پیچیده و با تغییرات بسیار در جوابها باشد که اطلاعات جواب را از میان ببرد. یعنی فقط به خاطر قیدها آنقدر روی جوابها کار شود که معلوم نشود از کجا آمدند و به کجا رفتند. در این شرایط ممکن است الگوریتم گیج شود. چون کلی انرژی بر روی حرکت در مسیر خاصی گذاشته شده و بعد شما بصورت میانبر آن جواب را وارد حوزه ممکنه جوابها کرده باشید، بدون اینکه الگوریتم بفهمد از چه مسیری به اینجا رسید تا دفعه بعد نیز، حواسش باشد. در حقیقت همان سیستم ماهی و ماهی گیری می شود. باید شما به الگوریتم با قیدهایتان، ماهیگیری یاد دهید.
_____________________________________________
نظرات شما در انتهای این پست برای سایر خوانندگان، بسیار مفید خواهد بود. می توانید نظر خود را با اکانت سرویس های مختلف و یا به عنوان ناشناس در این پست درج نمائید.

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