精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鯨魚優(yōu)化算法MATLAB實(shí)戰(zhàn)

冬至子 ? 來源:matlab學(xué)習(xí)之家 ? 作者:matlab學(xué)習(xí)之家 ? 2023-06-02 16:17 ? 次閱讀

一、鯨魚優(yōu)化算法

鯨魚優(yōu)化算法(Whale Optimization Algorithm,WOA)是模仿自然界中鯨魚捕食行為的新型群體智能優(yōu)化算法。它通過對(duì)自然界中座頭鯨群體狩獵行為的模擬,通過鯨魚群體搜索、包圍、追捕和攻擊獵物等過程實(shí)現(xiàn)優(yōu)時(shí)化搜索的目的。鯨魚優(yōu)化算法的工作原理如下:

1、初始化:首先,在算法開始時(shí),需要為每個(gè)鯨魚設(shè)定一個(gè)初始位置,并生成初始種群。

2、搜索:每個(gè)鯨魚都會(huì)按照一定的規(guī)則探索空間。這個(gè)過程可以模擬鯨魚包圍、追捕和攻擊獵物等過程。

3、評(píng)估:每當(dāng)鯨魚移動(dòng)的時(shí)候,都會(huì)對(duì)當(dāng)前的鯨魚種群計(jì)算適應(yīng)度值。如果當(dāng)前的適應(yīng)度值優(yōu)于之前的適應(yīng)度值,則將當(dāng)前適應(yīng)度值設(shè)為最優(yōu)解。

4、更新:當(dāng)所有的鯨魚都完成了移動(dòng)和評(píng)估后,算法會(huì)更新所有鯨魚的位置,并重復(fù)以上步驟。

5、迭代:鯨魚優(yōu)化算法可以進(jìn)行多次迭代,直到找到最優(yōu)解為止。

鯨魚優(yōu)化算法的優(yōu)勢(shì)在于操作簡(jiǎn)單,調(diào)整的參數(shù)少以及跳出局部最優(yōu)的能力強(qiáng),它能夠快速找到最優(yōu)解,并且對(duì)于各種類型的優(yōu)化問題都能有效地工作。對(duì)于基礎(chǔ)的問題,它還具有很好的收斂性和穩(wěn)定性。

鯨魚優(yōu)化算法主要包括三個(gè)過程:1)包圍獵物;2)發(fā)泡網(wǎng)攻擊;3)搜索捕食。

圖片

圖片

圖片

鯨魚優(yōu)化算法的流程圖如下圖所示:

圖片

二、代碼實(shí)戰(zhàn)

%_________________________________________________________________________%
%  Whale Optimization Algorithm (WOA) source codes demo 1.0               %
%                                                                         %
%  Developed in MATLAB R2011b(7.13)                                       %
%                                                                         %
%  Author and programmer: Seyedali Mirjalili                              %
%                                                                         %
%         e-Mail: ali.mirjalili@gmail.com                                 %
%                 seyedali.mirjalili@griffithuni.edu.au                   %
%                                                                         %
%       Homepage: http://www.alimirjalili.com                             %
%                                                                         %
%   Main paper: S. Mirjalili, A. Lewis                                    %
%               The Whale Optimization Algorithm,                         %
%               Advances in Engineering Software , in press,              %
%               DOI: http://dx.doi.org/10.1016/j.advengsoft.2016.01.008   %
%                                                                         %
%_________________________________________________________________________%


% You can simply define your cost in a seperate file and load its handle to fobj 
% The initial parameters that you need are:
%__________________________________________
% fobj = @YourCostFunction
% dim = number of your variables
% Max_iteration = maximum number of generations
% SearchAgents_no = number of search agents
% lb=[lb1,lb2,...,lbn] where lbn is the lower bound of variable n
% ub=[ub1,ub2,...,ubn] where ubn is the upper bound of variable n
% If all the variables have equal lower bound you can just
% define lb and ub as two single number numbers


% To run WOA: [Best_score,Best_pos,WOA_cg_curve]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj)
%__________________________________________


clear all 
clc


SearchAgents_no=30; % Number of search agents


Function_name='F1'; % Name of the test function that can be from F1 to F23 (Table 1,2,3 in the paper)


Max_iteration=500; % Maximum numbef of iterations


% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);


[Best_score,Best_pos,WOA_cg_curve]=WOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);


figure('Position',[269   240   660   290])
%Draw search space
subplot(1,2,1);
func_plot(Function_name);
title('Parameter space')
xlabel('x_1');
ylabel('x_2');
zlabel([Function_name,'( x_1 , x_2 )'])


%Draw objective space
subplot(1,2,2);
semilogy(WOA_cg_curve,'Color','r')
title('Objective space')
xlabel('Iteration');
ylabel('Best score obtained so far');


axis tight
grid on
box on
legend('WOA')


display(['The best solution obtained by WOA is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by WOA is : ', num2str(Best_score)]);
%_________________________________________________________________________%
%  Whale Optimization Algorithm (WOA) source codes demo 1.0               %
%                                                                         %
%  Developed in MATLAB R2011b(7.13)                                       %
%                                                                         %
%  Author and programmer: Seyedali Mirjalili                              %
%                                                                         %
%         e-Mail: ali.mirjalili@gmail.com                                 %
%                 seyedali.mirjalili@griffithuni.edu.au                   %
%                                                                         %
%       Homepage: http://www.alimirjalili.com                             %
%                                                                         %
%   Main paper: S. Mirjalili, A. Lewis                                    %
%               The Whale Optimization Algorithm,                         %
%               Advances in Engineering Software , in press,              %
%               DOI: http://dx.doi.org/10.1016/j.advengsoft.2016.01.008   %
%                                                                         
%                                                                         %
%_________________________________________________________________________%




% The Whale Optimization Algorithm
function [Leader_score,Leader_pos,Convergence_curve]=WOA(SearchAgents_no,Max_iter,lb,ub,dim,fobj)


% initialize position vector and score for the leader
Leader_pos=zeros(1,dim);
Leader_score=inf; %change this to -inf for maximization problems




%Initialize the positions of search agents
Positions=initialization(SearchAgents_no,dim,ub,lb);


Convergence_curve=zeros(1,Max_iter);


t=0;% Loop counter


% Main loop
while t< Max_iter
    for i=1:size(Positions,1)


        % Return back the search agents that go beyond the boundaries of the search space
        Flag4ub=Positions(i,:) >ub;
        Flag4lb=Positions(i,:)< lb;
        Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;


        % Calculate objective function for each search agent
        fitness=fobj(Positions(i,:));


        % Update the leader
        if fitness< Leader_score % Change this to > for maximization problem
            Leader_score=fitness; % Update alpha
            Leader_pos=Positions(i,:);
        end


    end


    a=2-t*((2)/Max_iter); % a decreases linearly fron 2 to 0 in Eq. (2.3)


    % a2 linearly dicreases from -1 to -2 to calculate t in Eq. (3.12)
    a2=-1+t*((-1)/Max_iter);


    % Update the Position of search agents 
    for i=1:size(Positions,1)
        r1=rand(); % r1 is a random number in [0,1]
        r2=rand(); % r2 is a random number in [0,1]


        A=2*a*r1-a;  % Eq. (2.3) in the paper
        C=2*r2;      % Eq. (2.4) in the paper




        b=1;               %  parameters in Eq. (2.5)
        l=(a2-1)*rand+1;   %  parameters in Eq. (2.5)


        p = rand();        % p in Eq. (2.6)


        for j=1:size(Positions,2)


            if p< 0.5   
                if abs(A) >=1
                    rand_leader_index = floor(SearchAgents_no*rand()+1);
                    X_rand = Positions(rand_leader_index, :);
                    D_X_rand=abs(C*X_rand(j)-Positions(i,j)); % Eq. (2.7)
                    Positions(i,j)=X_rand(j)-A*D_X_rand;      % Eq. (2.8)


                elseif abs(A)< 1
                    D_Leader=abs(C*Leader_pos(j)-Positions(i,j)); % Eq. (2.1)
                    Positions(i,j)=Leader_pos(j)-A*D_Leader;      % Eq. (2.2)
                end


            elseif p >=0.5


                distance2Leader=abs(Leader_pos(j)-Positions(i,j));
                % Eq. (2.5)
                Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);


            end


        end
    end
    t=t+1;
    Convergence_curve(t)=Leader_score;
    [t Leader_score]
end

實(shí)驗(yàn)結(jié)果:

圖片

圖片

圖片

圖片

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • MATLAB仿真
    +關(guān)注

    關(guān)注

    4

    文章

    176

    瀏覽量

    19903
  • WOA
    WOA
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    9776
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB的各種優(yōu)化算法介紹

    ,并介紹了最優(yōu)化問題輔助計(jì)算軟件MATLAB6.5產(chǎn)生的背景、優(yōu)化工具篇及其工程應(yīng)用 [hide] [/hide]
    發(fā)表于 03-06 14:53

    MATLAB優(yōu)化算法案例分析與應(yīng)用》

    MATLAB優(yōu)化算法案例分析與應(yīng)用》清華大學(xué)出版社《MATLAB優(yōu)化算法案例分析與應(yīng)用》這本書
    發(fā)表于 10-10 12:34

    【下載】MATLAB R2014a完全自學(xué)一本通+MATLAB智能算法30個(gè)案例分析

    環(huán)境的基礎(chǔ)上,對(duì)MATLAB 使用中常用的知識(shí)和工具進(jìn)行了詳細(xì)的介紹,書中各章均提供了大量有針對(duì)性的算例,供讀者實(shí)戰(zhàn)練習(xí)。根據(jù)內(nèi)容的側(cè)重點(diǎn)不同,全書分為4 部分共20 章:第1~5 章為基礎(chǔ)部分,講解
    發(fā)表于 06-01 18:01

    果蠅優(yōu)化算法MATLAB實(shí)現(xiàn)

    果蠅優(yōu)化算法MATLAB實(shí)現(xiàn)發(fā)布時(shí)間:2018-10-12 23:28,瀏覽次數(shù):1183, 標(biāo)簽:MATLAB果蠅優(yōu)化
    發(fā)表于 08-17 07:28

    果蠅優(yōu)化算法MATLAB實(shí)現(xiàn)過程是怎樣的?

    果蠅優(yōu)化算法MATLAB實(shí)現(xiàn)過程是怎樣的?
    發(fā)表于 11-22 07:48

    基于遺傳算法的PID 控制及其MATLAB 仿真

    本 文介紹了遺傳算法和基于遺傳算法的PID 控制設(shè)計(jì), 并對(duì)設(shè)計(jì)MATLAB/SIMULINK 下進(jìn)行了仿真,取得了良好的控制效果。關(guān)鍵詞:遺傳算法;最
    發(fā)表于 06-11 09:06 ?101次下載

    MATLAB車輛工程應(yīng)用實(shí)戰(zhàn)程序包括軟件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是MATLAB車輛工程應(yīng)用實(shí)戰(zhàn)程序包括軟件免費(fèi)下載
    發(fā)表于 08-07 08:00 ?25次下載
    <b class='flag-5'>MATLAB</b>車輛工程應(yīng)用<b class='flag-5'>實(shí)戰(zhàn)</b>程序包括軟件免費(fèi)下載

    MATLAB的簡(jiǎn)單函數(shù)優(yōu)化的遺傳算法程序免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是MATLAB的簡(jiǎn)單函數(shù)優(yōu)化的遺傳算法程序免費(fèi)下載。
    發(fā)表于 10-24 08:00 ?2次下載
    <b class='flag-5'>MATLAB</b>的簡(jiǎn)單函數(shù)<b class='flag-5'>優(yōu)化</b>的遺傳<b class='flag-5'>算法</b>程序免費(fèi)下載

    用于MATLAB遺傳優(yōu)化算法謝菲爾德大學(xué)遺傳算法工具箱免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是用于MATLAB遺傳優(yōu)化算法謝菲爾德大學(xué)遺傳算法工具箱免費(fèi)下載
    發(fā)表于 05-27 08:00 ?11次下載
    用于<b class='flag-5'>MATLAB</b>遺傳<b class='flag-5'>優(yōu)化</b><b class='flag-5'>算法</b>謝菲爾德大學(xué)遺傳<b class='flag-5'>算法</b>工具箱免費(fèi)下載

    使用MATLAB遺傳算法工具

    ,GADS)。使用遺傳算法與直接搜索工具箱,可以擴(kuò)展 MATLAB 及其優(yōu)化工具箱在處理優(yōu)化問題方面的能力,可以處理傳統(tǒng)的優(yōu)化技術(shù)難以解決的
    發(fā)表于 04-19 15:22 ?11次下載

    改進(jìn)鯨魚優(yōu)化算法在路徑規(guī)劃的應(yīng)用綜述

    改進(jìn)鯨魚優(yōu)化算法在路徑規(guī)劃的應(yīng)用綜述
    發(fā)表于 06-23 17:02 ?15次下載

    MATLAB優(yōu)化算法匯總01

    MATLAB優(yōu)化算法匯總01
    發(fā)表于 10-08 10:57 ?0次下載

    MATLAB優(yōu)化算法匯總02

    MATLAB優(yōu)化算法匯總02
    發(fā)表于 10-08 10:59 ?0次下載

    MATLAB優(yōu)化算法匯總03

    MATLAB優(yōu)化算法匯總03
    發(fā)表于 10-08 11:01 ?0次下載

    基于MATLAB的遺傳算法

    基于MATLAB的遺傳算法程序分享
    發(fā)表于 09-30 14:28 ?24次下載