鲸鱼算法程序

news/2024/9/2 1:50:02 标签: 算法

%参数初始化,初始时主要设置代理数量和最大迭代次数即可,其他算法相关的参数因为和当前迭代次数相关,需要在迭代中设置。
clc;clear;
dim=2;%变量的维数
SearchAgents_no=30; % 搜索代理数量,种群中个体个数
Max_iteration=500; % 最大迭代次数
ub=15;%上限
lb=-15;%下限
%种群初始化。随机初始化所有代理各个维度上的位置值,需要保证在取值范围内。
Positions=rand(SearchAgents_no,dim).*(ub-lb)+lb;
Leader_score = fobj(Positions(1,:));
for t=1:Max_iteration
    fit(t)=Leader_score;
    %(评估种群中每个代理的目标值,如有某个代理由于当前最优解,则将其设为最优解。)
    for i=1:size(Positions,1)
    % 计算每个代理的目标值
    fitness=fobj(Positions(i,:));
    % 更新最优解
        if fitness < Leader_score % 如果是最大化问题,这里就是">"
        Leader_score=fitness; 
        Leader_pos=Positions(i,:);
        end
    end
    
    
    %(设置和迭代次数相关的算法参数。)
    a=2-t*((2)/Max_iteration); % 等式(3)中a随迭代次数从2线性下降至0 
    %a2从-1线性下降至-2,计算l时会用到
    a2=-1+t*((-1)/Max_iteration);
 
    
    % Update the Position of search agents(对每个代理的每一维度进行位置更新)
    for i=1:size(Positions,1)
        r1=rand(); % r1为[0,1]之间的随机数
        r2=rand(); % r2为[0,1]之间的随机数
 
        A=2*a*r1-a;  % 等式(3)
        C=2*r2;      % 等式(4)
 
        b=1;               %  等式(5)中的常数b
        l=(a2-1)*rand+1;   %  等式(5)中的随机数l
        p = rand();        %  等式(6)中的概率p
        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)); % 等式(7)
                Positions(i,j)=X_rand(j)-A*D_X_rand;      % 等式(8)
 
                elseif abs(A)<1
                D_Leader=abs(C*Leader_pos(j)-Positions(i,j)); % 等式(1)
                Positions(i,j)=Leader_pos(j)-A*D_Leader;      % 等式(2)
                end
            elseif p>=0.5
 
                distance2Leader=abs(Leader_pos(j)-Positions(i,j));
                % 等式(5)
                Positions(i,j)=distance2Leader*exp(b.*l).*cos(l.*2*pi)+Leader_pos(j);
            end
        end
    end
 
end
k=1:1:500;
plot(k,fit,'r');

 


http://www.niftyadmin.cn/n/232147.html

相关文章

KD2684S绕组匝间故障检测仪

一、产品简介 KD2684S匝间冲击耐压试验仪适用于电机、变压器、电器线圈等这些由漆包线绕制的产品。因漆包线的绝缘涂敷层本身存在着质量问题&#xff0c;以及在绕线、嵌线、刮线、接头端部整形、绝缘浸漆、装配等工序工艺中不慎而引起绝缘层的损伤等&#xff0c;都会造成线圈层…

【Docker】docker run 命令详解

docker run一、什么是Docker运行命令&#xff1f;二 、Docker运行命令的语法三、Docker运行命令的实例3.1运行基于Ubuntu镜像的容器&#xff0c;并执行bash命令&#xff1a;3.2运行一个名为“webserver”的Nginx容器&#xff1a;3.3运行基于Tomcat 8镜像的应用程序&#xff0c;…

macos homebrew 源更改

Homebrew官方的源一般下载包之类的会很慢&#xff0c;所以通常我们都是用国内的镜像源来代替&#xff0c;这样会提高我们的效率。Homebrew主要有四个部分组成: brew、homebrew-core 、homebrew-bottles、homebrew-cask。 名称 说明 brew Homebrew 源代码仓库 homebrew-core Ho…

Mac系统介绍,个人理解

Mac系统是一种由苹果公司开发的操作系统&#xff0c;它是一款基于Unix的系统&#xff0c;它拥有丰富的特性和功能&#xff0c;可以满足各种用户的需求。本文将介绍Mac系统的一些主要特性&#xff0c;包括安全性、可靠性、易用性、可定制性等方面。 一、安全性 Mac系统具有强大…

《高等工程数学》试题卷二(第一部分,每个题型3道例题,AI出题)

1.1 给定线性空间的一个基&#xff0c;求一给定向量在该基下的坐标 题目1&#xff1a;给定线性空间VR2V\mathbb{R}^2VR2&#xff0c;基B{(1,2),(3,4)}B\{(1,2),(3,4)\}B{(1,2),(3,4)}&#xff0c;求向量(5,6)(5,6)(5,6)在基BBB下的坐标。 解题过程&#xff1a; 因为BBB是VVV的…

Impala事故处理手册

Impala事故处理手册 本文不是事故原因汇总&#xff0c;只介绍当Impala集群出现事故时的处理流程&#xff0c;以最大限度保留现场信息&#xff0c;方便事后调查。第一节介绍故障表现和对应的操作建议&#xff0c;第二节介绍每个操作的具体执行流程。本文将不定期更新&#xff0…

研读Rust圣经解析——Rust learn-3(变量与可变性,数据类型)

研读Rust圣经解析——Rust learn-3&#xff08;变量与可变性&#xff0c;数据类型&#xff09;变量|常量与可变性变量声明案例为什么不可变变量可变&#xff08;mut关键字&#xff09;变量可变&#xff08;覆盖&#xff09;常量声明数据类型标量类型整型整型字面值整型溢出问题…

CRMEB开源商城/标准版后台默认admin路径修改、后台目录地址修改

默认admin路径修改 v4.7 版本开始兼容可以修改admin路径&#xff0c;可以根据自己的要求更换后台访问地址&#xff1b; 默认路径不能携带特殊字符、全部都为小写字母 修改后台admin默认路径 标准版本文件位置根目录/config/app.php 开源版本文件位置根目录/crmeb/config/app.p…