![]() |
نحوه پیاده سازی عملی عملگر جذب (Assimilation) در الگوریتم رقابت استعماری
نحوه پیاده سازی عملی عملگر جذب (Assimilation) در الگوریتم رقابت استعماری
پرسش: من کد متلب ICA را قبلا دانلود کرده ام. اما به نظر می رسد، از AssimilationAngleCoefficient که مربوط به زاویه است، استفاده نشده است. میخواهم بدانم از زاویه تتا (theta) به چه صورت در یک مسئله چند بعدی می شود استفاده کرد؟ از نظر شکلی زاویه قابل درک است ولی در عمل چطور اعمال می شود؟ پاسخ: نگاهی به کدهای آماده دانلود الگوریتم رقابت استعماری می توانند مفید باشند. لینک زیر: کدهای الگوریتم رقابت استعماری و فیلم آموزش استفاده از آنها نقش تتا (theta) ایجاد انحراف در مسیر حرکت مستعمره است (شکلهای موجود در متن آموزشی (+) را ببینید). فرض کنید، می خواهیم در دو بعد از نقطه (0,0)، محل مستعمره به سمت نقطه (2,2)، موقعیت استعمارگر حرکت کنیم. فاصله بین این دو نقطه برابر خواهد بود با: كد:
D = sqrt(4+4) = sqrt(8); حال با فرض قرار دادن بتا مساوی 2، خواهیم داشت: كد:
x ~ U(0,Beta*D) ~ U(0,2*sqrt(8)) یعنی x با توزیع یکنواخت در بازه زیر می باشد. كد:
[0 , 2*sqrt(8)] داریم: كد:
2*sqrt(8) = 5.66 حال یک عدد تصادفی بین 0 و 5.66، برای ایجاد x، تولید می کنیم. مثلاً می شود (x=3، به خاطر رند بودن این x در نظر گرفته می شود). اگر زاویه تصادفی "تتا" مطرح نبود، موقعیت جدید مستعمره برابر بود با: كد:
new_position = (0 , 0) + ((2,2) - (0,0)) / sqrt(8) * 3 = (2.12,2.12); http://www.matlabsite.net/eag/icasit...i/image465.jpg شكل: شماي کلي حرکت مستعمرات به سمت امپرياليست. وجود زاویه تصادفی تتا، مقداری انحراف تصادفی به مسیر حرکت مستعمره اضافه می کند. در حالت دو بعدی، این رابطه به سادگی با ضرب یک ماتریس دوران، قابل انجام و توصیف است. در حالتهای با بعد بالاتر، این کار با توسعه این حالت و دوران در بعد بالاتر انجام می شود. مثلاً دوران در مختصات کروی در حالت سه بعدی و .... شكل 3 6: حرکت واقعي مستعمرات به سمت امپرياليست آنچه ما می خواهیم بررسی کنیم، نمایش دیگری از دوران است که در پیاده سازی عملی الگوریتم رقابت استعماری پیچیدگی ضرب ماتریس دوران و ... را ندارد و به سادگی قابل تعمیم به ابعاد بالاتر است. بردار زیر را در نظر بگیرید.كد:
كد:
كد:
كد:
كد:
كد:
برداری که می خواهیم دوران دهیم، خودش حاصل یک پروسه تصادفی است. چون حاصل حرکت مستقیم در راستای مستعمره به سمت امپریالیت با "اندازه تصادفی" است. بنابراین اگر کمی تغییر در اندازه آن به وجود آید که با احتمالات مساوی در جهت افزایش یا کاهش اندازه آن عمل خواهد کرد؛ خیلی اتفاق مهم و ناخواسته ای نیفتاده است. البته اگر اندازه به صورت معنی داری تغییر نکند. اگر اندازه خیلی تغییر پیدا کند، نیز باز مهم نیست. ما می خواستیم برداری را دوران دهیم که در تغییر جهت آن (دوران) به هدف خود رسیده ایم. حال اگر اندازه آن، آنگونه که ما می خواهیم نیست، باز هم کار بسیار ساده است. بردار جدید (با جهت جدید و با اندازه احتمالاً کمی تغییر یافته) را با بردار قبلی، هم اندازه می کنیم. این هم که بسیار ساده و یک خط کد نویسی به کار اضافه می کند. همین! مثلاً اگر بخواهیم a5 که جهتش با a4 متفاوت است، اندازه اش با آن کاملاً یکی باشد، می نویسیم: كد:
روند بالا به سادگی قابل تعمیم به هر بعدی است. مستقل از بعد، ما اعداد تصادفی خود را تولید می کنیم و در تک تک مولفه ضرب می کنیم و .... میزان گاما (gama)، میزان انحراف و دوران را تنظیم می کند. هرچه گاما بیشتر باشد، میزان انحراف بیشتر است و بر عکس. تنظیم مناسب گاما، برای یک مسئله و یا دسته ای از مسائل نیاز به بررسی بیشتری دارد و حتی مستقلاً می تواند، موضوع یک کار پژوهشی مجزا باشد. منبع :نحوه پیاده سازی عملی عملگر جذب (Assimilation) در الگوریتم رقابت استعماری - پرسش و پاسخ |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۸:۳۶ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.