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

多目标优化算法:基于非支配排序的小龙虾优化算法(NSCOA)MATLAB

一、小龙虾优化算法COA

小龙虾优化算法(Crayfsh optimization algorithm,COA)由Jia Heming 等人于2023年提出,该算法模拟小龙虾的避暑、竞争和觅食行为,具有搜索速度快,搜索能力强,能够有效平衡全局搜索和局部搜索的能力。

小龙虾是一种形状类似于虾的甲壳类动物,其甲壳坚硬且颜色丰富。成体的小龙虾身长约5.6-11.9厘米,整体颜色包括红色、红棕色和粉红色。背部是酱暗红色,两侧则是粉红色,带有橘黄色或白色的斑点。甲壳部分近黑色,而腹部背面则有一楔形条纹。幼虾体为均匀的灰色,有时具有黑色波纹,其螯狭长,甲壳中部不被网眼状空隙分隔,甲壳上明显具有颗粒。

小龙虾属于杂食性动物,它们的饮食习性比较特殊。在河底,小龙虾更喜欢吃泥,并且喜欢吃已经死亡的小鱼或其他水中生物。除此之外,植物类、小鱼、小虾、浮游生物、底栖生物和藻类都可以成为它们的食物。

参考文献:

[1] Jia, H., Rao, H., Wen, C. et al. Crayfish optimization algorithm. Artif Intell Rev (2023). Crayfish optimization algorithm | SpringerLink

二、基于非支配排序的小龙虾优化算法NSCOA

基于非支配排序的小龙虾优化算法(Non-Dominated Crayfsh optimization algorithm,NSCOA)由小龙虾优化算法与非支配排序策略结合而成。将NSCOA用于求解46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计),并采用IGD、GD、HV、SP进行评价。

(1)部分代码

close all;
clear ; 
clc;
%%
% TestProblem测试问题说明:
%一共46个多目标测试函数,详情如下:
%1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6
%6-12:DZDT1-DZDT7
%13-22:wfg1-wfg10
%23-32:uf1-uf10
%33-42:cf1-cf10
%43-46:Kursawe、Poloni、Viennet2、Viennet3
%47 盘式制动器设计 温泽宇,谢珺,谢刚,续欣莹.基于新型拥挤度距离的多目标麻雀搜索算法[J].计算机工程与应用,2021,57(22):102-109.
%%
TestProblem=1;%1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 100;        % Population size
params.Nr = 200;        % Repository size
params.maxgen =100;    % Maximum number of generations
numOfObj=MultiObj.numOfObj;%目标函数个数
D=MultiObj.nVar;%维度
f = NSCOA(params,MultiObj);
X=f(:,1:D);%PS
Obtained_Pareto=f(:,D+1:D+numOfObj);%PF
if(isfield(MultiObj,'truePF'))%判断是否有参考的PF
True_Pareto=MultiObj.truePF;
%%  Metric Value
% ResultData的值分别是IGD、GD、HV、Spacing  (HV越大越好,其他指标越小越好)
ResultData=[IGD(Obtained_Pareto,True_Pareto),GD(Obtained_Pareto,True_Pareto),HV(Obtained_Pareto,True_Pareto),Spacing(Obtained_Pareto)];
else%计算每个算法的Spacing,Spacing越小说明解集分布越均匀ResultData=Spacing(Obtained_Pareto);%计算的Spacing
end
%%
disp('Repository fitness values are stored in Obtained_Pareto');
disp('Repository particles positions are store in X');

(2)部分结果

三、完整MATLAB代码

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

相关文章:

  • Linux学习第13天:嵌入式LinuxLED驱动开发:一字一符总见情
  • ModuleNotFoundError: No module named ‘omni‘
  • 题解:ABC320B - Longest Palindrome
  • 大模型从入门到应用——LangChain:代理(Agents)-[代理执行器(Agent Executor):结合使用Agent和VectorStore]
  • 【算法题】100040. 让所有学生保持开心的分组方法数
  • TrOCR – 基于 Transformer 的 OCR 入门
  • 单例模式优缺点
  • 【Java 基础篇】Java 字节流详解:从入门到精通
  • Vue记录(下篇)
  • 【测试开发】概念篇 · 测试相关基础概念 · 常见开发模型 · 常见测试模型
  • 1. 快速体验 VSCode 和 CMake 创建 C/C++项目
  • 【JAVA-Day18】用大白话讲解 Java 中的内存机制
  • [Hadoop] start-dfs.sh ssh报错
  • amlogic 多wifi 多bluetooh 兼容方案
  • Apache Hive概述,模拟实现Hive功能,Hive基础架构
  • postgresql|数据库|centos7下基于postgresql-12的主从复制的pgpool-4.4的部署和使用
  • python之pyQt5实例:PyQtGraph的应用
  • Java——键盘输入的几种常见方式
  • Shell脚本中文英文多语言国际化和命令行批处理(bash sh cmd bat)中定义函数的简单写法
  • stringBuffer.append(analyze);使用这个拼接时候如何在字符串参数字符串参数整数参数字符串数组参数内容之间添加空格
  • 点云从入门到精通技术详解100篇-大范围田间场景 3D 点云语义分割研究(续)
  • Mysql详解Explain索引优化最佳实践
  • STM32H7 Azure RTOS
  • 基于LUT查找表方法的图像gamma校正算法FPGA实现,包括tb测试文件和MATLAB辅助验证
  • Function模块
  • Prometheus PromQL数据查询语言
  • 如何将转换器应用于时序模型
  • 数据结构:队列
  • AUTOSAR汽车电子嵌入式编程精讲300篇-基于AUTOSAR架构的AT控制系统研究与实现
  • 计网第五章(运输层)(四)(TCP的流量控制)