الگوریتم رقابت استعماری در متلب عنوان موضوعی است که در این پست به آن پرداخته شده است. این الگوریتم با نام Imperialist Competitive Algorithm یا الگوریتم ICA نیز نامیده می شود. در این مجموعه سعی می کنیم تا جزئیات بهتری از سورس کد الگوریتم رقابت استعماری در متلب ICA ارائه دهیم.
الگوریتم رقابت استعماری روشی در حوزه محاسبات تکاملی است که به یافتن پاسخ بهینه مسائل مختلف بهینهسازی میپردازد. این الگوریتم با مدل سازی ریاضی فرآیند تکامل اجتماعی – سیاسی، الگوریتمی برای حل مسائل ریاضی بهینهسازی ارائه میدهد.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم رقابت استعماری (ICA)
همانند همه الگوریتمهای قرار گرفته در دسته الگوریتم های بهینه سازی، الگوریتم رقابت استعماری نیز مجموعه اولیه ای از جوابهای احتمالی را تشکیل میدهد. این جواب های اولیه در الگوریتم ژنتیک با عنوان «کروموزوم»، در الگوریتم ازدحام ذرات با عنوان «ذره» و در الگوریتم رقابت استعماری نیز با عنوان «کشور» شناخته میشوند. الگوریتم رقابت استعماری با روند خاصی که در ادامه میآید، این جوابهای اولیه (کشورها) را به تدریج بهبود داده و در نهایت جواب مناسب مسئله بهینهسازی (کشور مطلوب) را در اختیار میگذارد.
پایههای اصلی این الگوریتم را سیاست همسان سازی (Assimilation)، رقابت استعماری (Imperialistic Competition) و انقلاب (Revolution) تشکیل میدهند. این الگوریتم با تقلید از روند تکامل اجتماعی، اقتصادی و سیاسی کشورها و با مدلسازی ریاضی بخشهایی از این فرایند، عملگرهایی را در قالب منظم به صورت الگوریتم ارائه میدهد که میتوانند به حل مسائل پیچیده بهینهسازی کمک کنند. در واقع این الگوریتم جوابهای مسئله بهینهسازی را در قالب کشورها نگریسته و سعی میکند در طی فرایندی تکرار شونده این جوابها را رفته رفته بهبود داده و در نهایت به جواب بهینه مسئله برساند.
مراحل الگوریتم رقابت استعماری
مراحل کلی روند الگوریتم بهصورت زیر است.
- چند نقطه تصادفی روی تابع انتخاب کرده و امپراتوریهای اولیه را تشکیل بده.
- مستعمرات را به سمت کشور امپریالیست حرکت بده (سیاست همسانسازی یا جذب).
- عملگر انقلاب را اعمال کن.
- اگر مستعمرهای در یک امپراتوری وجود داشته باشد که هزینه ای کمتر از امپریالیست داشته باشد جای مستعمره و امپریالیست را عوض کن.
- هزینه کل یک امپراتوری را حساب کن (با در نظر گرفتن هزینه امپریالیست و مستعمراتشان).
- یک (چند) مستعمره از ضعیفترین امپراتوری را انتخاب کرده و آن را به امپراتوری که بیشترین احتمال تصاحب را دارد، بده.
- امپراتوریهای ضعیف را حذف کن.
- اگر تنها یک امپراتوری باقیمانده باشد توقف کن و در غیر این صورت به 2 برو.
برای درک کامل الگوریتم الگوریتم رقابت استعماری مقاله ای تحت عنوان الگوریتم رقابت استعماری IMPERIALIST COMPETITIVE ALGORITHM آماده کرده ایم که می توانید مطالعه کنید.
سورس کد الگوریتم رقابت استعماری در متلب
سورس کد الگوریتم ICA در Matlab شامل یک فایل با یک Script که در واقع کد اصلی برنامه می باشد و بقیه فراخوانی ها از آنجا انجام می شود.همچنین این برنامه با 6 تابع تست ارائه شده است. توابع تست برای ارزیابی الگوریتم های بهینه سازی بکار می روند که در این سایت برای توضیحات بیشتر در مورد توابع تست الگوریتم های بهینه سازی مقاله ای آماده کردیم. توابع تست این پروژه عبارتند از :
- تابع SPHERE
- تابع ACKLEY
- تابع SUM SQUARES
- تابع ROSENBROCK
- تابع SUM OF DIFFERENT POWERS
- تابع ZAKHAROV
توابع زیادی برای تست عملکرد الگوریتم های بهینه سازی وجود دارد که در اینجا ما به این 6 تابع اکتفا کرده ایم. همچنین لازم به ذکر است که برای اجرای الگوریتم بهینه سازی روی مسئله مورد نظر تابع هزینه یا Cost Function آن تغییر خواهد کرد و بقیه الگوریتم دست نخورده باقی می ماند بنابراین برای اجرای الگوریتم ICA در متلب برای بهینه سازی مسئله خودتان تابع هزینه خود را بر اساس پارامترهای مسئله خود تعریف کنید. در ادامه قسمت هایی از سورس کد الگوریتم رقابت استعماری در Matlab آورده شده است.
for it=1:MaxIt % Assimilation emp=AssimilateColonies(emp); % Revolution emp=DoRevolution(emp); % Intra-Empire Competition emp=IntraEmpireCompetition(emp); % Update Total Cost of Empires emp=UpdateTotalCost(emp); % Inter-Empire Competition emp=InterEmpireCompetition(emp); % Update Best Solution Ever Found imp=[emp.Imp]; [~, BestImpIndex]=min([imp.Cost]); BestSol=imp(BestImpIndex); % Update Best Cost BestCost(it)=BestSol.Cost; % Show Iteration Information disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCost(it))]); end
ویدئوی معرفی محصول
درباره الگوریتم ica
سورس کد الگوریتم رقابت استعماری در متلب در محیط Matlab 2014b نوشته و اجرا شده است این سورس کد توسط تیم پشتیبانی پی استور تست و اجرا شده است. کیفیت محصول توسط پی استور تضمین می شود و محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری فرمایید به محض خرید لینک دانلود در دسترس خواهد بود.
مباحث مرتبط با الگوریتم رقابت استعماری
تاریخ انتشار: | 7 فروردین 1398 |
---|---|
تاریخ بروزرسانی: | 8 مرداد 1398 |
حجم فایل: | 6 کیلوبایت |
فرمت فایل | m. در قالب Matlab |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2014b |
تاکنون 238 نفر این محصول را تهیه کرده اند و 1 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 49,000 تومان
تاریخ انتشار: | 7 فروردین 1398 |
---|---|
تاریخ بروزرسانی: | 8 مرداد 1398 |
حجم فایل: | 6 کیلوبایت |
فرمت فایل | m. در قالب Matlab |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2014b |
1 بازخورد (مشاهده نظرات)
قیمت: 49,000 تومان
مدیریت و پشتیبانی
نطرات و دیدگاه های خود را با ما در میان بگذارید.