多目标优化算法:多目标浣熊优化算法(multi-objective Coati Optimization Algorithm,MOCOA)

news2024/11/15 15:53:22

一、浣熊优化算法COA

浣熊优化算法(Coati Optimization Algorithm,COA)由Dehghani Mohammad等人于2022年提出的模拟浣熊狩猎行为的优化算法,该算法具有进化能力强,收敛速度快,收敛精度高等特点。

COA具体原理如下: 智能优化算法:浣熊优化算法-附代码_智能算法研学社(Jack旭)的博客-CSDN博客

参考文献:Dehghani Mohammad, Montazeri Zeinab, Trojovská Eva, Trojovský Pavel. Coati Optimization Algorithm: A new bio-inspired metaheuristic algorithm for solving optimization problems[J]. Knowledge-Based Systems,2023,259.

二、多目标浣熊优化算法MOCOA

多目标优化算法:多目标浣熊优化算法(Multi-objective Coati Optimization Algorithm,MOCOA) - 知乎 (zhihu.com)

多目标浣熊优化算法(multi-objective Coati Optimization Algorithm,MOCOA)由COA融合多目标策略而成,为了验证所提的MOCOA的有效性,将其在46个多目标测试函数(ZDT1、ZDT2、ZDT3、ZDT4、ZDT6、DTLZ1-DTLZ7、WFG1-WFG10、UF1-UF10、CF1-CF10、Kursawe、Poloni、Viennet2、Viennet3)以及1个工程应用(盘式制动器设计)上实验,并采IGD,GD,HV,SP四种评价指标进行评价。

部分代码:

close all;
clear ; 
clc;
%%
% TestProblem测试问题说明:
%一共46个多目标测试函数(1-46)+5个工程应用(47-50),详情如下:
%1-5:ZDT1、ZDT2、ZDT3、ZDT4、ZDT6
%6-12:DTLZ1-DTLZ7
%13-22:wfg1-wfg10
%23-32:uf1-uf10
%33-42:cf1-cf10
%43-46:Kursawe、Poloni、Viennet2、Viennet3
%47 盘式制动器设计 https://blog.csdn.net/weixin_46204734/article/details/124051747


%%
TestProblem=1;%1-47
MultiObj = GetFunInfo(TestProblem);
MultiObjFnc=MultiObj.name;%问题名
% Parameters
params.Np = 200;        % Population size 种群大小
params.Nr = 200;        % Repository size 外部存档中最大数目,可适当调整大小,越大,最终获得的解数目越多
params.maxgen =200;    % Maximum number of generations 最大迭代次数




REP = MOCOA(params,MultiObj);
%% 画结果图
figure
if(size(REP.pos_fit,2)==2)
    h_rep = plot(REP.pos_fit(:,1),REP.pos_fit(:,2),'ok'); hold on;
       if(isfield(MultiObj,'truePF'))
            h_pf = plot(MultiObj.truePF(:,1),MultiObj.truePF(:,2),'.r'); hold on;
            legend('MOCOA','TruePF');
       else
           legend('MOCOA');
       end


        grid on; xlabel('f1'); ylabel('f2');
end
if(size(REP.pos_fit,2)==3)
    h_rep = plot3(REP.pos_fit(:,1),REP.pos_fit(:,2),REP.pos_fit(:,3),'ok'); hold on;
      if(isfield(MultiObj,'truePF'))
            h_pf = plot3(MultiObj.truePF(:,1),MultiObj.truePF(:,2),MultiObj.truePF(:,3),'.r'); hold on;
            legend('MOCOA','TruePF');
      else
          legend('MOCOA');
      end
        grid on; xlabel('f1'); ylabel('f2'); zlabel('f3');
end
title(MultiObjFnc)


Obtained_Pareto=REP.pos_fit;
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
%%
% Display info
disp('Repository fitness values are stored in REP.pos_fit');
disp('Repository particles positions are store in REP.pos');



    

部分结果:

三、完整MATLAB代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/658583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法与数据结构】454、LeetCode 四数相加 II

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:这道题不仅要计算元素的和为0,还要计算元素和为零出现的次数,说明这道题map比较…

【Python 随练】输出国际象棋棋盘

题目: 输出国际象棋棋盘 简介: 在本篇博客中,我们将使用 Python 代码输出国际象棋棋盘。国际象棋棋盘是一个8x8的方格矩阵,交替使用黑色和白色方格。我们将给出问题的解析,并提供一个完整的代码示例来生成这个棋盘。…

C语言之指针详解(1)

目录 本章重点 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 9. 指针和数组面试题的解析 大家对比前面C语言之指针初阶来看,指针进阶明显看起来难度大了很多&#xff…

TLS协议详解,一文带你了解TLS协议

前言 TLS(Transport Layer Security)是一种安全协议,用于保护网络通信的安全性和隐私性。它是SSL(Secure Sockets Layer)的后继者,用于在互联网上建立安全的通信连接。本文将介绍TLS的概论、工作原理、发展…

计算机网络——物理层-数据通信的基础知识

物理层的基本概念 在计算机网络中,物理层是网络协议栈中的第一层,负责处理网络中传输数据的物理介质和信号传输的细节。它定义了传输数据的电气、光学和机械特性,以及物理连接的规范和接口标准。 物理层的主要任务是将比特流(0和…

C++之AVL树

目录 一.介绍二.简单实现AVL树1. 基本框架2. 插入结点(Insert)a. 更新平衡因子b. 左单旋c. 右单旋d. 左右双旋e. 右左双旋 3. 删除节点(Erase)a. 更新平衡因子b. 旋转c. 代码 4. 测试 一.介绍 作为对二叉搜索树的优化版本。AVL树是由俄罗斯的两位数学家G.M.Adelson-Velskii和E.…

Python 3 基本语法与基本数据类型 | 菜鸟教程(二)

目录 一、Python3 基础语法 (一)编码 (二)标识符 (三)python保留字 (四)注释 ​(五)行与缩进 (六)多行语句 (七&am…

操作系统复习笔记3

1、条件变量和互斥锁 条件变量一般和互斥锁一起使用,来弥补互斥锁的不足。总得来说,互斥锁用来规范线程对共享数据的竞争使用,条件变量用来协调各个线程合作完成任务。 2、enum枚举类型 enum typeName { valueName1, valueName2, valueName3…

Workerman在线客服系统源码 附搭建文档

Workerman在线客服系统源码 模块化开发 强大的一键生成功能极速简化你的开发流程,加快你的项目开发 响应式布局 自动适配,无需要担心兼容性问题 完善的权限管理 自由分配子级权限、一个管理员司同时属于多个组别 通用的会员和API模块 共用同一账…

【MySQL多表查询】:让你的数据检索更高效

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL中多表查询相关知识的讲解 目录 前言一、多表关系二、多表查询1、交叉连接2、内连接3、外连接 三、集合运算四、七种JOINS实现五、多表查询练习六、总结 一、多表关系 ✨项目开发中,在进行数据库表结…

6月人工智能论文推荐

Prompt Space Optimizing Few-shot Reasoning Success with Large Language Models https://arxiv.org/abs/2306.03799 Prompt engineering 是通过提供明确和具体的指令来增强大型语言模型(llm)能力的基本技术。它使LLM能够在各种任务中脱颖而出,例如算术推理、问…

列表、表格、表单

day02:列表、表格、表单 目标:掌握嵌套关系标签的写法,使用列表标签布局网页 01-列表 作用:布局内容排列整齐的区域。 列表分类:无序列表、有序列表、定义列表。 无序列表 作用:布局排列整齐的不需要规…

Bean 的生命周期

观前提示:本篇博客演示使用的 IDEA 版本为2021.3.3版本,使用的是Java8(又名jdk1.8) 电脑使用的操作系统版本为 Windows 10 目录 Spring 的执行流程 1. 启动容器 2. 根据配置完成 Bean 的初始化 3. 注册 Bean 对象到容器中 4. 装配 Bean 的属性 Bean 的生命周期 Bean 的…

掌握Python的X篇_2_Python的安装

掌握Python的X篇_2_Python的安装 1. 软件安装包下载1.1 Python版本的区别1.2 同一版本不同安装包的区别 2. 安装过程3. 验证是否安装成功 1. 软件安装包下载 下载地址:https://www.python.org/downloads/ 可以看到最新版本和历史版本 1.1 Python版本的区别 就像…

express的使用(五) 简单的使用mongodb

原文链接 express的使用(五) 简单的使用mongodb 不要脸的求关注,希望能让大家批评我的不足点,一键三连最好了 看前提示 本篇主要描述关于express中使用mongodb以及mongodb的简单介绍还有初步使用,不涉及任何常用的语法,不建议有…

算法刷题-双指针-反转链表

反转链表的写法很简单,一些同学甚至可以背下来但过一阵就忘了该咋写,主要是因为没有理解真正的反转过程。 206.反转链表 力扣题目链接 题意:反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2-…

AMD CPU微架构分析

一、SoC架构 1.1 整体架构 Zeppelin 参考链接:wikichip: Zeppelin 通过infinity fabric总线将单die分成多die的SoC架构,每个Die包含两个CPU核(CCX)、2各DDR通道、USB、低功耗IO以及多个IFOP和IFIS serdes接口。 如下所述中&…

干翻Mybatis源码系列之第十篇:Mybatis Plugins基本概念与拦截概述

给自己的每日一句 不从恶人的计谋,不站罪人的道路,不坐亵慢人的座位,惟喜爱耶和华的律法,昼夜思想,这人便为有福!他要像一棵树栽在溪水旁,按时候结果子,叶子也不枯干。凡他所做的尽…

vue jointjs 拓扑图 自定义shape 按需引入

只展示部分核心代码,完整代码见文章尾部连接 import jointjs/dist/joint.core.css;// 类库 包含: Paper Graph Cell CellView Element Link 等等 import { dia } from jointjs/src/core.mjs; // 样式库 包含多个分组(basic standard custom ...) import * as standa…

基于Hexo和Butterfly创建个人技术博客,(11) 使用插件增强博客站点能力

Butterfly官方网站,请 点击进入 本章目标: 掌握常用的plugin插件的用法,本文中是butterfly主题内置集成的第三方插件(部分插件需要再次安装); 一、建议开启的三方插件 KaTeX-数学公式 katex:enable: true# true 表示每一页都加载…