سورس کد الگوریتم CMAES در متلب عنوان موضوعی است که در این پست به آن پرداخته می شود. الگوریتم CMA-ES از جمله الگوریتمهای تکاملی شناخته شدهی بهینهسازی است که از یک توزیع نرمال، نمونهگیری کرده و جمعیت جدید را به وجود میآورد. این الگوریتم تکاملی یک ماتریس کواریانس و یک بردار میانگین را از جمعیت تخمین میزند. قوانین مختلف به روزرسانی، ماتریس کواریانس تطبیق یافتهای را در هر نسل ایجاد میکند که در کیفیت جمعیت جدید و در نتیجه هدایت تکامل نقش مهمی دارد.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم CMAES
این الگوریتم مخفف Covariance Matrix Adaptation Evolution Strategy به معنای استراتژی تکاملی انطباق ماتریس کوواریانس می باشد. دو اصل اصلی برای سازگاری پارامترهای توزیع جستجو در الگوریتم CMA-ES مورد استفاده قرار می گیرند.
ابتدا، یک اصل حداکثر احتمال maximum-likelihood، برای افزایش احتمال موفقیت راه حل های کاندید شده و مراحل جستجو در نظر گرفته می شود. متوسط توزیع به روز می شود به طوری که احتمال موفقیت پیشین موفق به راه حل های حداکثر می شود. ماتریس کوواریانس توزیع (به طور تدریجی) به روز می شود به طوری که احتمال مراحل پیشین موفق جستجو افزایش می یابد.
هر دو به روز رسانی را می توان به عنوان یک شیب طبیعی شناخت. همچنین، در نتیجه، CMA یک مولفه اصلی تکرار شده برای تجزیه و تحلیل مراحل جستجو موفق را در حالی که تمام محورهای اصلی را نگه می دارد انجام می دهد. برآورد الگوریتم های توزیع و روش متقاطع آنتروپی براساس ایده های بسیار مشابه است، اما ماتریس کوواریانس را با حداکثر کردن احتمال احتمال نقاط حل موفق به جای مراحل جستجو موفق، غیرمستقیم می کند.
دوم، دو مسیر از زمان تکامل میانگین توزیع استراتژی ثبت شده، به نام مسیر جستجو یا تکامل می باشد. این مسیرها حاوی اطلاعات مهمی درباره همبستگی بین مراحل متوالی هستند. به طور خاص، اگر مراحل متوالی در جهت مشابهی گرفته شود، مسیرهای تکاملی بلند می شوند. مسیرهای تکاملی از دو راه بهره برداری می شوند. یک راه برای روش انطباق ماتریس کوواریانس به جای مراحل موفقیت آمیز موفقیت آمیز استفاده می شود و باعث افزایش احتمال واریانس بسیار بیشتر جهت جهت مطلوب می شود.
مسیر دیگر مورد استفاده برای کنترل اضافی اندازه گام است. هدف این کنترل گام به گام، ایجاد حرکات متوالی از توزیع به طور متعادل در انتظار است. کنترل گام اندازه گیری به طور موثر مانع از همگرایی زودرس می شود، اما همگام سازی سریع را به بهترین وجه امکان می دهد.
شبه کد الگوریتم CMAES
در زیر، بیشترین استفاده الگوریتم μ / μw، λ -CMA-ES مشخص شده است، که در هر گام تکرار ترکیبی وزنی از μ بهترین از λ راه حل های نامزد جدید برای به روز رسانی پارامترهای توزیع استفاده می شود. حلقه اصلی شامل سه بخش اصلی است:
1) نمونه برداری از راه حل های جدید؛
2) ترتیب مجدد راه حل های نمونه بر اساس تناسب آن؛
3) به روز رسانی متغیرهای حالت داخلی بر اساس نمونه های مرتب شده.
یک pseudocode از الگوریتم به شرح زیر است.
سورس کد الگوریتم CMAES در متلب
سورس کد الگوریتم CMAES شامل توابعی است که تابع CMAES در واقع کد اصلی برنامه می باشد و بقیه فراخوانی ها از آنجا انجام می شود. همچنین این برنامه با 7 تابع تست ارائه شده است. توابع تست برای ارزیابی الگوریتم های بهینه سازی بکار می روند که در این سایت برای توضیحات بیشتر در مورد توابع تست الگوریتم های بهینه سازی مقاله ای آماده کردیم. توابع تست این پروژه عبارتند از :
- تابع SPHERE
- تابع ACKLEY
- تابع SUM SQUARES
- تابع ROSENBROCK
- تابع SUM OF DIFFERENT POWERS
- تابع ZAKHAROV
- تابع Rastrigin
توابع زیادی برای تست عملکرد الگوریتم های بهینه سازی وجود دارد که در اینجا ما به این 7 تابع اکتفا کرده ایم. همچنین لازم به ذکر است که برای اجرای الگوریتم بهینه سازی روی مسئله مورد نظر تابع هزینه یا Cost Function آن تغییر خواهد کرد و بقیه الگوریتم دست نخورده باقی می ماند بنابراین برای اجرای الگوریتم CMAES در متلب برای بهینه سازی مسئله خودتان تابع هزینه خود را بر اساس پارامترهای مسئله خود تعریف کنید.
قسمتی از سورس کد
clc; clear; close all; %% Problem Settings CostFunction=@(x) Sphere(x); % Cost Function % CostFunction=@(x) Sum_Squares(x); % Cost Function % CostFunction=@(x) Sum_Of_Different(x); % Cost Function % CostFunction=@(x) Ackley(x); % Cost Function %CostFunction=@(x) Rosenbrock(x); % Cost Function % CostFunction=@(x) Zakharov(x); % Cost Function % CostFunction=@(x) Rastrigin(x); nVar=10; % Number of Unknown (Decision) Variables VarSize=[1 nVar]; % Decision Variables Matrix Size VarMin=-10; % Lower Bound of Decision Variables VarMax= 10; % Upper Bound of Decision Variables %% CMA-ES Settings % Maximum Number of Iterations MaxIt=300; % Population Size (and Number of Offsprings) lambda=(4+round(3*log(nVar)))*10; % Number of Parents mu=round(lambda/2); % Parent Weights w=log(mu+0.5)-log(1:mu); w=w/sum(w); % Number of Effective Solutions mu_eff=1/sum(w.^2); % Step Size Control Parameters (c_sigma and d_sigma); sigma0=0.3*(VarMax-VarMin); cs=(mu_eff+2)/(nVar+mu_eff+5); ds=1+cs+2*max(sqrt((mu_eff-1)/(nVar+1))-1,0); ENN=sqrt(nVar)*(1-1/(4*nVar)+1/(21*nVar^2)); % Covariance Update Parameters cc=(4+mu_eff/nVar)/(4+nVar+2*mu_eff/nVar); c1=2/((nVar+1.3)^2+mu_eff); alpha_mu=2; cmu=min(1-c1,alpha_mu*(mu_eff-2+1/mu_eff)/((nVar+2)^2+alpha_mu*mu_eff/2)); hth=(1.4+2/(nVar+1))*ENN; %% Initialization ps=cell(MaxIt,1); pc=cell(MaxIt,1); C=cell(MaxIt,1); sigma=cell(MaxIt,1); ps{1}=zeros(VarSize); pc{1}=zeros(VarSize); C{1}=eye(nVar); sigma{1}=sigma0; empty_individual.Position=[]; empty_individual.Step=[]; empty_individual.Cost=[]; M=repmat(empty_individual,MaxIt,1); M(1).Position=unifrnd(VarMin,VarMax,VarSize); M(1).Step=zeros(VarSize); M(1).Cost=CostFunction(M(1).Position); BestSol=M(1); BestCost=zeros(MaxIt,1); %% CMA-ES Main Loop for g=1:MaxIt % Generate Samples pop=repmat(empty_individual,lambda,1); for i=1:lambda pop(i).Step=mvnrnd(zeros(VarSize),C{g}); pop(i).Position=M(g).Position+sigma{g}*pop(i).Step; pop(i).Cost=CostFunction(pop(i).Position); % Update Best Solution Ever Found if pop(i).Cost<BestSol.Cost BestSol=pop(i); end
برای دانلود سورس کامل محصول را خریداری فرمایید.
تصویر خروجی محصول
ویدئوی معرفی محصول
درباره محصول
سورس کد الگوریتم CMAES در متلب در محیط Matlab 2017b نوشته و اجرا شده است این سورس کد توسط تیم پشتیبانی پی استور تست و اجرا شده است. کیفیت محصول توسط پی استور تضمین می شود و محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری فرمایید به محض خرید لینک دانلود در دسترس خواهد بود.
مباحث مرتبط با الگوریتم CMAES
سورس کدهای الگوریتم بهینه سازی
تاریخ انتشار: | 14 تیر 1398 |
---|---|
تاریخ بروزرسانی: | 25 اسفند 1398 |
حجم فایل: | 3 کیلوبایت |
فرمت فایل | m. در قالب متلب |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2017b |
تاکنون 259 نفر این محصول را تهیه کرده اند و 1 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 49,000 تومان
تاریخ انتشار: | 14 تیر 1398 |
---|---|
تاریخ بروزرسانی: | 25 اسفند 1398 |
حجم فایل: | 3 کیلوبایت |
فرمت فایل | m. در قالب متلب |
نسخه: | 1.0 |
شناسه اثر: | ندارد |
هماهنگی با: | Matlab 2017b |
1 بازخورد (مشاهده نظرات)
قیمت: 49,000 تومان
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.