当前位置: 首页 > news >正文

2023年最新智能优化算法之——切诺贝利灾难优化器 (CDO),附MATLAB代码和文献

切诺贝利灾难优化器Chernobyl Disaster Optimizer (CDO)是H. Shehadeh于2023年提出的新型智能优化算法。该方法是受到切尔诺贝利核反应堆堆芯爆炸而来的启发。在CDO方法中,放射性的发生是由于核的不稳定性,核爆炸会发出不同类型的辐射。这些辐射中最常见的种类被称为伽马、贝塔和阿尔法粒子。算法主要围绕三种粒子的更新方式展开。

6038b6c6a80101866e52a16a3c2f427f.png

01

bf4cdafb088d04c8c9f6ba817fbc0cf6.png


经作者查阅文献发现,该方法其实与灰狼算法有很大的相似性,大家可以作为参考。在CEC2005函数中结果展示:

ddba1cf55bf8ffe6b21f276970ccc318.png

e0727a8767795ecd5f3410968917d705.png

76689a328227ed6d366a4a9eb9d1e341.png

f6217747251cc706668dd69d6a9cb893.png

% CDO函数,该算法与灰狼算法很像
function [Alpha_score,Alpha_pos,Convergence_curve]=CDO(SearchAgents_no,Max_iter,lb,ub,dim,fobj)% initialize alpha, beta, and gamma particle positions (search radiations (Agents)) 
Alpha_pos=zeros(1,dim);
Alpha_score=inf; %change this to -inf for maximization problemsBeta_pos=zeros(1,dim);
Beta_score=inf; %change this to -inf for maximization problemsGamma_pos=zeros(1,dim);
Gamma_score=inf; %change this to -inf for maximization problems%Initialize the positions of search radiations (Agents)
Positions=initialization(SearchAgents_no,dim,ub,lb);Convergence_curve=zeros(1,Max_iter);l=0;% Loop counter% Main loop
while l<Max_iterfor i=1:size(Positions,1)  % Return back the search radiations (Agents) that go beyond the boundaries of the search spaceFlag4ub=Positions(i,:)>ub;Flag4lb=Positions(i,:)<lb;Positions(i,:)=(Positions(i,:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb;               % Calculate objective function for each search radiations (Agents)fitness=fobj(Positions(i,:));% Update Alpha, Beta, and Gamma - search radiations (Agents)if fitness<Alpha_score Alpha_score=fitness; % Update alphaAlpha_pos=Positions(i,:);endif fitness>Alpha_score && fitness<Beta_score Beta_score=fitness; % Update betaBeta_pos=Positions(i,:);endif fitness>Alpha_score && fitness>Beta_score && fitness<Gamma_score Gamma_score=fitness; % Update gammaGamma_pos=Positions(i,:);endenda=3-l*((3)/Max_iter); % a decreases linearly from 3 to 0 Equation(9)a1 = ((log10((16000-1)*rand(1,1)+16000)));a2 = ((log10((270000-1)*rand(1,1)+270000)));a3 = ((log10((300000-1)*rand(1,1)+300000)));  % Update the Position of search radiations (Agents)for i=1:size(Positions,1)for j=1:size(Positions,2)     %------------------- alpha------------------------------           r1=rand(); % r1 is a random number in [0,1]r2=rand(); % r2 is a random number in [0,1]pa=pi*r1*r1/(0.25*a1)- a*rand() ; % Equation (23)C1=r2*r2*pi; D_alpha=abs(C1*Alpha_pos(j)-Positions(i,j)); va=0.25*(Alpha_pos(j)-pa*D_alpha); % Equation (22)%------------------- Beta------------------------------           r1=rand();r2=rand();pb=pi*r1*r1/(0.5*a2)- a*rand()  ; % Equation (17)C2=r2*r2*pi; D_beta=abs(C2*Beta_pos(j)-Positions(i,j)); vb=0.5*(Beta_pos(j)-pb*D_beta); % Equation (16)      %------------------- Gamma ------------------------------           r1=rand();r2=rand(); py=(pi*r1*r1)/a3- a*rand() ; % Equation (11)C3=r2*r2*pi; D_gamma=abs(C3*Gamma_pos(j)-Positions(i,j));vy=Gamma_pos(j)-py*D_gamma; % Equation (10)             Positions(i,j)=(va+vb+vy)/3;% Equation (28)endendl=l+1;    Convergence_curve(l)=Alpha_score;
end

03

参考文献

[1]H. Shehadeh.Chernobyl Disaster Optimizer (CDO): A Novel Metaheuristic Method for Global Optimization, Neural Computing and Applications. DOI: https://dx.doi.org/10.1007/s00521-023-08261-1

04代码获取方式:后台回复关键词:2023

免费获取2023年智能优化算法合集matlab代码

http://www.lryc.cn/news/106261.html

相关文章:

  • uniapp跨域解决
  • 力扣-94、144、145-前中后序遍历
  • 什么是线程?为什么需要线程?和进程的区别?
  • 【业务功能篇61】SpringBoot项目流水线 dependencyManagement 标签整改依赖包版本漏洞问题
  • uniapp使用getStorage对属性赋值无效
  • 20230802-下载并安装android-studio
  • python 第九章 —— GUI界面开发(tkinter详解)
  • 线段树合并例题
  • Stable Diffusion 硬核生存指南:WebUI 中的 VAE
  • vue项目 前端加前缀(包括页面及静态资源)
  • 使用文心一言等智能工具指数级提升嵌入式/物联网(M5Atom/ESP32)和机器人操作系统(ROS1/ROS2)学习研究和开发效率
  • 【Rust 基础篇】Rust动态大小类型:理解动态大小类型与编写安全的代码
  • 【Python】使用nuitka打包Python程序为EXE可执行程序
  • 背景图片及精灵图
  • 简要介绍 | 生成模型的演进:从自编码器(AE)到变分自编码器(VAE)和生成对抗网络(GAN),再到扩散模型
  • 8.2Thread类的常见属性
  • 博客摘录「 mvvm框架工作原理及优缺」2023年7月31日
  • 第12章 Linux 实操篇-Linux磁盘分区、挂载
  • 使用express搭建后端服务
  • 深度学习——划分自定义数据集
  • Jmeter性能测试之正则表达式提取器
  • 浅谈Kubernetes中Service网络实现(服务发现)
  • 【重造轮子】golang实现可重入锁
  • torch显存分析——对生成模型清除显存
  • electron+vue+ts窗口间通信
  • 基于Fringe-Projection环形投影技术的人脸三维形状提取算法matlab仿真
  • 如何使用Webman框架实现多语言支持和国际化功能?
  • 接受平庸,特别是程序员
  • HTML兼容性
  • Java日期和时间处理入门指南