نحوه کد کردن کروموزوم، ذره و یا کشور در الگوریتم های بهینه سازی به صورت ماتریس

وبسایت محاسبات تکاملی – در برخی موارد، متغیرهای بهینه سازی ما در قالب یک ماتریس قرار دارند. سوالی که مطرح می شود این هست که چگونه می توان موارد این چنینی را توسط کدهای آماده روشهای مطرح بهینه سازی همچون الگوریتم ژتتیک، الگوریتم ازدحام ذرات و الگوریتم رقابت استعماری حل کرد؛ در حالی که این کدها، غالباً با دنباله متغیرهایی به صورت یک رشته با طول N کار می کندد نه یک ماتریس! مثلاً سوال زیر را در نظر بگیرید، که توسط یکی از دوستان در مورد نحوه انجام این کار در الگوریتم رقابت استعماری پرسیده بودند:

 

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

با سپاس فراوان

 

پاسخ سوال بسیار ساده می باشد.

ابتدا لازم به ذکر است که در موارد ماتریسی، نسخه هایی از روشهای مطرح بهینه سازی وجود دارند که در همان ابتدا، مسئله را به صورت یک ماتریس کد می کنند و تمام عملیات را روی آنها بازتعریف می کنند. اما درعمل نیازی به چنین کاری نیست. برای حل مشکل کافی است ما ماتریس متغیرها را reshape کنیم. مثلاً فرض کنید ۲۰ مجهول مسئله بهینه سازی به صورت یک ماتریس ۴*۵ قرار گرفته اند. کاری که ما انجام می دهیم این هست که مسئله بهینه سازی را برای بردار ۲۰*۱ تعریف می کنیم (که در این حالت همانگونه که بیان شد روشهای بهینه سازی با آن مشکلی ندارند). اما در داخل تابع هزینه یک دستور reshape (در صورت استفاده از متلب) به کار می بریم تا قبل از ارزیابی تابع هزینه برای بردار ۲۰*۱، ابتدا آن را به ماتریس ۴*۵ تبدیل کند. یعنی در خط اول تابع هزینه می نویسیم:

 

function Cost  = CostFunction(X)
XR = reshape(X,5,4);
Cost = evaluate cost at XR
end

 

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

دانلود رایگان فیلم آموزشی حل مسائل گسسته با استفاده از الگوریتم PSO (به زبان فارسی)

دانلود رایگان فیلم آموزشی حل مسائل گسسته با استفاده از الگوریتم PSO (به زبان فارسی)

 

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

الگوریتم بهینه سازی ازدحام ذرات یا Particle Swarm Optimizatoion (به اختصار PSO) یکی از مهم ترین الگوریتم های  بهینه سازی هوشمند است که در حوزه هوش ازدحامی (Swarm Intelligence) جای می گیرد. این الگوریتم، توسط جیمز کندی  و راسل سی ابرهارت  در سال ۱۹۹۵ معرفی گردید، و با الهام از رفتار اجتماعی حیواناتی چون ماهی ها و پرندگان که در گروه هایی کوچک و بزرگ کنار هم زندگی می کنند، طراحی شده است. در الگوریتم PSO، اعضای جمعیت جواب ها، به صورت مستقیم با هم ارتباط دارند و از طریق تبادل اطلاعات با یکدیگر و یادآوری خاطرات خوب گذشته، به حل مسأله می پردازند. الگوریتم PSO برای انواع مسائل پیوسته و گسسته مناسب است و پاسخ های بسیار مناسبی برای مسائل بهینه سازی مختلف داده است.

 

این فیلم به صورت رایگان ارائه شده است و شما می توانید آن را دانلود نمایید. برای دریافت لینک های دانلود این فیلم آموزشی، بر روی لینک ادامه مطلب کلیک کنید.

ادامه مطلب >>

دانلود رایگان فیلم آموزشی روش های کدینگ پاسخ در مسأله فروشنده دوره گرد (به زبان فارسی)

دانلود رایگان فیلم آموزشی روش های کدینگ پاسخ در مسأله فروشنده دوره گرد (به زبان فارسی)

 

مسأله فروشنده دوره گرد یا Traveling Salesman Problem (به اختصار TSP)، یکی از مسائل بسیار مهم و پرکاربرد در علوم کامپیوتر و تحقیق در عملیات است. پیش از این مطالبی را در متلب سایت در ارتباط با مسأله فروشنده دوره گرد مطرح کرده بودیم که فهرستی از آن ها در ادامه آمده است:

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

 

برای دریافت اطلاعات تکمیلی، بر روی لینک ادامه مطلب کلیک نمایید.

ادامه مطلب >>

هشت گام ساده برای یادگیری کامل الگوریتم رقابت استعماری (از شروع تا انتشار مقاله علمی)

 

http://files.matlabsite.com/images/tutorials/ica_conf.jpg

 

استفاده از الگوریتم رقابت استعماری (Imperialist Competitive Algorithm – ICA) در عین نوپا بودن و تازه بودن آن، همچنان در حال گسترش می باشد. این روزها این، الگوریتم به پایه ثابت پروژه ها و پایان نامه های دوره های مختلف تحصیلی تبدیل شده است. تنوع رشته های مرتبط با این الگوریتم نیز آنچنان بالاست که مقالات متعدد منتشر شده در مورد این الگوریتم، نه تنها نشان از کاربرد آن در رشته های مهندسی (برق، مهندسی صنایع، عمران، مکانیک و …) دارد، بلکه این الگوریتم به بخش اصلی مقالات مهم منتشر شده در اقتصاد، مدیریت و بازرگانی نیز تبدیل شده است. در این میان، در متلب سایت به عنوان مرجع هوش مصنوعی و برنامه نویسی متلب در ایران، درخواست های متعددی از طرف دانشجویان و پژوهشگران دریافت کردیم در مورد انتشار موارد آموزشی بیشتر در مورد این الگوریتم. امروز تصمیم گرفتیم پاسخ به این درخواست را بیش از این به تاخیر نیاندازیم و هشت گام ساده در جهت آموزش این الگوریتم را به شما معرفی نماییم. این گامها به راحتی شما را راهنمایی خواهند کرد تا حتی در صورت مبتدی بودن در این زمینه، به راحتی این الگوریتم را فراگرفته و کار پژوهشی خود را تا مرحله انتشار مقاله به پیش ببرید. مراحل آنقدر ساده و کامل هستند که در آن ها حتی ما ارائه مقاله شما در یک نشست علمی را نیز پیش بینی کرده و موارد آموزشی لازم را ارائه کرده ایم. با ما در ادامه مطلب همراه باشد.

ادامه مطلب >>

برای افزایش سرعت اجرای برنامه ها در متلب چه باید کرد؟ — ۸ نکته مهم و کاربردی

 

برای افزایش سرعت اجرای برنامه ها در متلب چه باید کرد؟ -- 8 نکته مهم و کاربردی

 

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

 

ادامه مطلب >>

ترفند متلب: ریشه یابی و حل معادلات جبری در متلب (بخش اول)

ترفند متلب: ریشه یابی و حل معادلات جبری در متلب (بخش اول)

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

ادامه مطلب >>

ترفند متلب: برازش منحنی مبتنی بر داده در متلب

ترفند متلب: برازش منحنی مبتنی بر داده در متلب

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

  • شما یک دیتا ست دارید که متشکل از دو متغیر است، که آن ها را در این پست با نام X و Y نشان خواهیم داد؛
  • شما نیازمند مدلی (تابعی) هستید که ارتباط میان این دو متغیر را به صورت ریاضی توصیف نماید؛
  • و هیچ دانش اولیه ای در مورد چگونگی معادلات ریاضی توصیف کننده این ارتباط ندارید و فقط می بایست با استفاده از داده ای که در دست دارید، این مسأله را حل نمایید.

سئوال اصلی: چگونه می توان بهترین منحنی توصیف کننده ارتباط X و Y را به دست آورد؟

برای حل این مسأله روش های مختلفی عددی ارائه شده اند که می توان از روش های کلاسیک مبتنی بر چند جمله ای (مثلا روش لاگرانژ)، سیستم های فازی و شبکه های عصبی مصنوعی نام برد. در این پست، که از سلسله ترفندهای متلب در متلب سایت است، قصد داریم برخی از امکانات جعبه ابزار (تولباکس) برازش منحنی یا Curve Fitting Toolbox را برای حل مسأله برازش منحنی مبتنی بر داده به کار بگیریم. با ما در ادامه مطلب همراه باشید.

ادامه مطلب >>

ترفند متلب: چگونگی حل معادلات دیفرانسیل معمولی در متلب

ترفند متلب: چگونگی حل معادلات دیفرانسیل معمولی در متلب

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

ادامه مطلب >>