نسخه باینری الگوریتم رقابت استعماری

سوال: چگونه می توان نسخه باینری الگوریتم رقایت استعماری (Binary Imperialist Competitive Algorithm) را ایجاد کرد؟
پاسخ: تهیه نسخه باینری این الگوریتم بسیار ساده و با افزودن دو خط به کدهای پیوسته امکان پذیر است. کافی است، مقدار کمینه و بیشیه متغیرها را بین صفر و یک قرار دهید و بگذارید الگوریتم کارش را انجام دهد. فقط قبل از ارسال مقادیر به تابع هزینه، با تابع round مقادیر را روند کنید تا به بردار صفر و یک تبدیل شوند. توجه کنید که ماهیت متغیرها همچنان پیوسته بوده و پیوسته باقی خواهند ماند و فقط قبل از ورود به تابغ هزینه با تابع round باینری می شوند. به عبارت دیگر، الگوریتم به خیال خود مشغول حل یک مسئله پیوسته است و تابع هزینه هم به خیال خود گسسته است. این میان یک دستور روند کردن، زبان ارتباطی تابع هزینه گسسته (باینری) و الگوریتم پیوسته را برقرار می کند.
پایان متن

نمودار هزینه امپریالیست ها در الگوریتم رقابت استعماری – پرسش و پاسخ

http://www.icasite.info/icasite/post_i/ques_ans.png

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

سوال:

اگر در نمودار نشان داده شده برای رقابت استعماری دو منحنی Best ,Mean به هم نرسد و با هم موازی شود آیا اشتباه است؟ من هرچه تعداد دهه ها را زیاد می کنم این دو به هم نمی رسند.

پاسخ:
نمودار Best میزان هزینه بهترین امپراطوری را در هر لحظه (تکرار یا دهه از الگوریتم) نشان می دهد که در مسائل مینیمم سازی این یک نمودار غیر بالارونده است. در مقابل، نمودار Mean که اهمیت کمتری دارد، تنها برای نمایش میانگین هزینه امپریالیست های امپراطوری ها در نظر گرفته شده است و بیشتر ارزش مانیتورینگ روند حرکت برنامه را دارد.

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

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

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

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

 

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

پرسش و پاسخ – تنظیم میزان مناسب زاویه جذب در الگوریتم رقابت استعماری

http://www.icasite.info/icasite/post_i/ques_ans.png
 
پرسشی در مورد نحوه تنظیم میزان مناسب زاویه جذب در الگوریتم رقابت استعماری، مطرح شده است. شما را به مشاهده صورت این پرسش مهم و عمومی و نیز در صورت علاقه، به خواندن ادامه مطلب جهت یافتن پاسخ این پرسش دعوت می کنیم.
 
پرسش:
 

با سلام

سوالی در رابطه با زاویه جذب دارم، ممنون میشوم راهنمایی کنید.

زاویه جذب اگر مقدار کمی داشته باشه چه تاثیری می تواند روی روند کار بگذارد (برعکسش چطور؟ اگر زیاد باشد چی؟) منظور من از لحاظ الگوریتم جستجو هست و اینکه تاثیرش رو به شکل جستجو چطور میشود بیان کرد؟

اگه بخواهیم زاویه جذب رو در ابتدا زیاد بعد کم یا بر عکس تعریف کنیم، نتیجه چطور می شود؟ یا بخواهیم به صورت یک تابع خطی یا غیر خطی افزایش یا کاهش بدیم، چطور؟

ممنون میشوم به سوالات بالا از دیدگاه الگوریتم جستجو پاسخ بدهید.

 
 
 پاسخ: در ادامه پاسخ مشروح مطرح شده را می بینیم.

پرسش و پاسخ – تعیین بازه های متغیرها در کدهای مختلف بهینه سازی

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

با عرض سلام و خسته نباشید
می خواستم بدانم، اگر در الگوریتم رقابت استعماری (یا الگوریتم های دیگر) بخواهم حدود متغیرها با یکدیگر فرق داشته باشد چگونه باید کد الگوریتم را تغییر دهم؟ مثلا می خواهم متغیر اول بین 0 تا 1 و متغیر دوم بین 1 تا 30 و متغیر سوم بین 10 تا 20 باشد.

ادامه مطلب

حل یک مسئله ماکزیمم (بیشنه) سازی توسط کدهای برنامه یک روش مینیمم سازی

http://www.icasite.info/icasite/post_i/ques_ans.png
معمولاً کدهای رایگانی که به صورت عمومی در مورد یک روش بهینه سازی منتشر می شوند، برای حل مسائل کمینه سازی نوشته شده اند. به عنوان مثال کدهای رایگان الگوریتم رقابت استعماری و یا الگوریتم ژنتیک موجود در وبسیات محاسبات تکاملی، مختص مسائل بهینه سازی هستند. اما این به این معنی نیست که از آنها، نمی توان برای حل مسائل بیشینه سازی استفاده کرد. دلیل اصلی این نوع نوشتن کدها، این هست که مسائل بهینه سازی کمینه سازی و بیشینه سازی، هیچ تفاوتی با هم نداشته و به سادگی قابل تبدیل به هم هستند و چون غالب مسائل بهینه سازی بصورت مینیمم سازی هستند، این کدها نیز، به این صورت منتشر می شوند.
یکی از دوستان سوالی را در مورد نحوه حل مسئله ماکزیمم سازی توسط کدهای الگوریتم رقابت استعماری پرسیده بودند، که این پست، در پاسخ به سوال ایشان تهیه شده است. اگر شما نیز به سوال مشابهی برخورد کرده اید، در ادامه مطلب با ما همراه باشید.

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

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

آیا الگوریتم رقابت استعماری، انتخاب مناسبی برای موضوع پایان نامه می باشد؟

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

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

http://www.icasite.info/icasite/post_i/ques_ans.png

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

 پرسش ها:
  • درطی فرآیند بهینه سازی در الگوریتم رقابت استعماری، از تعداد کشورها کاسته شود، بهتر است یا تا پایان بهینه سازی تعداد کشورها ثابت باشد؟
  • آیا شرایط دیگری را هم می شود برای سقوط امپراطوری و همچنین شرایط همگرائی در نظر گرفت؟
  • برای مسئله ای که تعداد کشورهای اولیه آن در حدود 300 تا 500 می باشد؛ چه تعداد امپراطوری اولیه برای الگوریتم مناسب می باشد؟
  • انتخاب کمتر کشور و بیشتر تکرار ها بهتر هست یا برعکس؟ اگر مثلا تعداد کشورهای اولیه را 40  و تکرار را 100 در نظر بگیریم، بهتر هست یا اینکه تعداد کشورها را 50 و تعداد تکرار را 60 بگیرم؟
  • چگونه می توان در متلب، اعداد تصادفی را به گونه ای ایجاد کرد که دارای میانگین و واریانس مشخصی باشند؟ 
 پاسخ ها:

نحوه پیاده سازی عملی عملگر جذب (Assimilation) در الگوریتم رقابت استعماری – پرسش و پاسخ

http://www.icasite.info/icasite/post_i/ques_ans.png
پرسش:  من کد متلب ICA را قبلا دانلود کرده ام. اما به نظر می رسد، از AssimilationAngleCoefficient که مربوط به  زاویه است، استفاده نشده است. میخواهم بدانم از زاویه تتا (theta) به چه صورت در یک مسئله چند بعدی می شود استفاده کرد؟ از نظر شکلی زاویه قابل درک است ولی در عمل چطور اعمال می شود؟
پاسخ:نگاهی به کدهای آماده دانلود الگوریتم رقابت استعماری می توانند مفید باشند. لینک زیر:
http://www.icasite.info/2010/05/blog-post_01.htmlنقش تتا (theta) ایجاد انحراف در مسیر حرکت مستعمره است (شکلهای موجود در متن آموزشی (+) را ببینید). فرض کنید، می خواهیم در دو بعد از نقطه (0,0)، محل مستعمره به سمت نقطه (2,2)، موقعیت استعمارگر حرکت کنیم. فاصله بین این دو نقطه برابر خواهد بود با:
D = sqrt(4+4) = sqrt(8);
حال با فرض قرار دادن بتا مساوی 2، خواهیم داشت:

x ~ U(0,Beta*D) ~ U(0,2*sqrt(8))

ادامه مطلب