【单目标优化求解】粒子群混沌混合蝴蝶优化算法求解最优目标问题(HPSOBOA)【含Matlab源码 1538期】

news2025/8/12 12:58:57

⛄一、遗传算法简介

1 算法的种群初始化
设D维搜索空间中,随机生成初始解的表达式为:
在这里插入图片描述
式中,Xi表示蝴蝶群体中第i只蝴蝶(i = 1, 2, 3, …, N)空间位置,N表示初始解的个数;Lb, Ub分别表示搜索空间的上界和下界;o表示(0, 1)之间的随机数矩阵。

2 算法的全局搜索
混合算法HPSBA的全局搜索阶段可表示为:
在这里插入图片描述

3 算法的局部搜索
混合算法HPSBA的局部搜索阶段可表示为:
在这里插入图片描述
式中,C1 = C2 = 2,r1、r2的取值为(0, 1)中的随机数。
4 控制参数c和ω
混沌理论在群智能优化算法中有着较多的应用研究,如:混沌种群初始化、控制参数混沌调节策略等。Logistic映射[15]的表达式为:
在这里插入图片描述
式中,k表示混沌映射的迭代次数;Logistic映射的混沌序列为(0, 1),当μ=4时,该映射会产生混沌现象。

李雅普诺夫(Lyapunov)指数[16]作为判别混沌特性的一个重要指标。若混沌映射的最大Lyapunov指数越大,其混沌特性越明显、混沌程度越高。其表达式为:
在这里插入图片描述
式中,λ表示李雅普诺夫指数;f′(z)表示混沌映射函数的一阶导数;n表示混沌映射的迭代次数。

取参数μ∈(3,4]绘制分岔图和Lyapunov指数曲线,如图2所示。
在这里插入图片描述
在这里插入图片描述
图2 Logistic映射
从图2(a)可知,Logistic映射在μ=3.55左右的位置进行分岔,随着参数取值的增加,映射的范围逐渐增至(0,1)。当μ=4时,Logistic映射的映射序列为(0,1),其对应的最大Lyapunov指数为0.6839。

HPSBA中控制参数c的表达式为:
在这里插入图片描述
惯性权重系数ω对PSO算法的粒子飞行速度有着直接的影响,能够调整算法的全局搜索和局部搜索能力。本文采用自适应的调整策略为:
在这里插入图片描述
针对控制参数c和ω,取Tmax=500,c(0)=0.35,迭代曲线如图3所示,其中c0表示式(9)的控制策略,c表示Logistic映射的控制策略。由图3可知,随着迭代次数的增加,控制参数c0的变化范围在(0, 0.3);改进的控制策略c则在迭代次数内的取值范围为(0,1);自适应的调整策略ω由0.9以线性递减至0.2。改进的控制策略能有效调节混合算法的局部搜索和全局搜索,进而寻优到最佳值。
在这里插入图片描述
图3 控制参数的变化曲线

⛄二、部分源代码

%___________________________________________________________________________________________ %
%  The HPSOBOA source codes v2.0                                                                 %
                                                          %                                                                                              %
%___________________________________________________________________________________________ %

clear
clc
close all
warning off all

SearchAgents_no = 30;  % Number of search agents
Max_iteration = 500;   % Maximum number of iterations

Function_name='F3';  %F1-F15,US(Unimodal Separable);F16-F26,MS(Multimodal Separable)
%%% Exp2: F1,F2,F4, F6, F15, F17 ,F18
%US: F1,F2,F4,F6,F11, MS: F15, F17, F18, F24, F25

%%%%%  BOA in 2018
[lb,ub,dim,fobj]=Hight_Get_Functions_details(Function_name);
[Best_scoreBOA,Best_pos,BOA_cg_curve]=BOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);

%%%% PSOBOA in 2020
[Best_score_PSOBOA,Best_pos_PSOBOA,PSOBOA_cg_curve]=PSOBOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);

%%%% HPSOBOA in 2020
[Best_score_HPSOBOA,Best_pos_HPSOBOA,HPSOBOA_cg_curve]=HPSOBOA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);

%%%% plots
figure('Position',[500 400 800 200])  %[left bottom width height]
subplot(1,2,1);
func_plot_con(Function_name);
title(Function_name)
% xlabel('x_1');
% ylabel('x_2');
% zlabel([Function_name,'( x_1 , x_2 )'])

%%%%%% Convergence curves 
subplot(1,2,2);
semilogy(BOA_cg_curve,'b-','LineWidth',1)
hold on
semilogy(PSOBOA_cg_curve,'g-','LineWidth',1)
hold on
semilogy(HPSOBOA_cg_curve,'r-','LineWidth',1)

% axis tight
% grid off
xlabel('Iterations');
ylabel('Fitness value');
legend('BOA','PSOBOA','HPSOBOA')
%___________________________________________________________________%
%  The benchmark functions of hight dimension                       %
%                                                                   %
%  Developed in MATLAB R2018a(7.30)                                 %
%                                                                   %
                             %
%___________________________________________________________________%

% lb is the lower bound: lb=[lb_1,lb_2,...,lb_d]
% up is the uppper bound: ub=[ub_1,ub_2,...,ub_d]
% dim is the number of variables (dimension of the problem)

function [lb,ub,dim,fobj] = Hight_Get_Functions_details(F)
d=100;   %%%dim=30,100

switch F
    case 'F1'
        fobj = @F1;
        lb=-100;
        ub=100;
        dim=d;
        
    case 'F2'
        fobj = @F2;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F3'
        fobj = @F3;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F4'
        fobj = @F4;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F5'
        fobj = @F5;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F6'
        fobj = @F6;
        lb=-1.28;
        ub=1.28;
        dim=d;
        
    case 'F7'
        fobj = @F7;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F8'
        fobj = @F8;
        lb=-1;
        ub=1;
        dim=d;
        
    case 'F9'
        fobj = @F9;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F10'
        fobj = @F10;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F11'
        fobj = @F11;
        lb=-5.12;
        ub=5.12;
        dim=d;
        
    case 'F12'
        fobj = @F12;
        lb=-5;
        ub=5;
        dim=d;
        
    case 'F13'
        fobj = @F13;
        lb=-100;
        ub=100;
        dim=d;
        
    case 'F14'
        fobj = @F14;
        lb=-100;
        ub=100;
        dim=d;
        
    case 'F15'
        fobj = @F15;
        lb=-10;
        ub=10;
        dim=d;
        
    case 'F16'
        fobj = @F16;
        lb=-5.12;
        ub=5.12;
        dim=d;
        
    case 'F17'
        fobj = @F17;
        lb=-5.12;
        ub=5.12;
        dim=d;
        
    case 'F18'
        fobj = @F18;
        lb=-20;
        ub=20;
        dim=d;
        
    case 'F19'
        fobj = @F19;
        lb=-600;
        ub=600;
        dim=d;
        
    case 'F20'
        fobj = @F20;
        lb=-10;
        ub=10;
        dim=d;     
        
    case 'F21'
        fobj = @F21;
        lb=-10;
        ub=10;
        dim=d;    
        
    case 'F22'
        fobj = @F22;
        lb=-5;
        ub=5;
        dim=d;    
        
    case 'F23'
        fobj = @F23;
        lb=-2;
        ub=2;
        dim=d;  
           
    case 'F24'
        fobj = @F24;
        lb=-1;
        ub=1;
        dim=d; 
            
    case 'F25'
        fobj = @F25;
        lb=-20;
        ub=20;
        dim=d; 
           
    case 'F26'
        fobj = @F26;
        lb=-5;
        ub=5;
        dim=d; 
end
end
 

## ⛄三、运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/e21370fdf6964c1fae614f82cfdbb582.jpg?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA57Sr5p6B56We5YWJ,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

## ⛄四、matlab版本及参考文献
**1 matlab版本**
2014a

**2 参考文献**
 [1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

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

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

相关文章

Linux vmware 编译模块失败。 Vmware player Unable to install all modules.

Vmware player Unable to install all modules. See log for details ubuntu下的vmware play经常会让更新模块。一起点击确认就可以正常编译更新。 而且一定要编译后才能打开虚拟机系统 但是奇怪的是,最近一次点击 更新,报错: 显示的英文…

STM32F103的FSMC模块驱动LCD屏幕

以下内容为对正点原子的STM32F103STM32F103STM32F103精英板的FSMCFSMCFSMC模块驱动LCDLCDLCD屏幕例程的学习。做一个记录来加强对模块的认知。 FSMCFSMCFSMC的全称是FlexiblestaticmemorycontrollerFlexible\quad static\quad memory\quad controllerFlexiblestaticmemory…

【Python+Appium】开展自动化测试(四)使用weditor进行元素定位

目录 前言 一,weditor的安装与使用 二,遇到的问题 结语 前言 上一篇我们讲到了如何通过编写一个简单的Python脚本完成了登录app的操作,如何断言,如何编写一条完整的用例。那么今天继续我们的自动化测试第四天,使用…

【Java进阶篇】第五章 集合(下)--Map集合

文章目录1、概述2、Map接口中的常用方法3、Map集合的遍历4、哈希表的数据结构5、Map集合的存取6、hashCode()和equals()的重写7、一些小零散的东西8、HashMap和Hashtable的区别9、Properties类10、TreeMap11、自定义类实现Comparable接口12、二叉树13、Comparator接…

Caffeine《一》

《Caffeine(Java顶级缓存组件)一》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《Caffeine(Java顶级缓存组件)》《Caffeine(Java顶级缓存组件)一》1. Caffeine缓存概念1.1 缓存的分…

【MyBatis】一、概述

框架 框架就是对通用代码的封装,提前写好了一堆接口和类,我们可以在做项目的时候直接引入这些接口和类,基于这些现有的接口和类进行开发,提高开发效率。 框架一般以jar包形式存在 三层架构 表现层(UI)&am…

数字化助力生产管理:计件工资管理系统

目前因市场经济的发展,企业为求发展同时为防止消极怠工的情况,常把员工工资与产量结合起来。为了增加工人的劳动积极性,秉持多劳多得的科学管理理念,许多生产类型企业均实现了计件工资制。所谓的计件工资制是指按照生产的合格品的…

python之opencv人脸识别快速体验

目录 1、灰度转换 2、引用opencv官方提供的人脸训练模型 3、绘制方框(用于框住人脸) 4、效果及完整代码: 5、检测多张人脸: 学习链接: 1、灰度转换 # 灰度转换gary cv.cvtColor(img,cv.COLOR_BGR2GRAY) 2、引…

图解:Elasticsearch 8.X 如何求解环比上升比例?

1、企业级Elasticsearch 8.X 实战问题 问题描述:有个聚合的需求,问下大家,一个索引中有时间字段 要求 计算本月和上月相比的环比上升比例?——来自GPVIP群 2、问题释义 2.1 啥叫环比? 环比是统计学术语&#xff0c…

LabVIEW使用Deskto pExecution Trace工具包

LabVIEW使用Deskto pExecution Trace工具包 可以使用桌面执行跟踪工具包来调试和优化大型LabVIEW应用程序,包括具有多个循环的应用程序、客户端-服务器架构、动态加载VI等。该工具包从本地或远程计算机桌面上运行的应用程序捕获执行事件,并在表窗格中显…

PCB layout有DRC为什么还要用CAM和DFM检查?

随着电子产品的高速发展,PCB生产中大量使用BGA、QFP、PGA和CSP等高集成度封装器件,PCB的复杂程度也大大增加,这对于PCB设计也提出了更高的要求。所以在PCB设计阶段,除了基础的电气性能之外,还需要考虑可制造性&#xf…

上游模式用于实验室用冷冻机压力和真空度的高精度控制

摘要:本文针对实验室用冷冻干燥机的真空度控制,提出了干燥过程中的真空度精密控制解决方案。解决方案主要是采用双真空计(电容真空计和皮拉尼真空计)测量干燥过程中的真空度变化,双通道PID真空度控制器一方面采集电容真…

MySQL数据库:2、MySQL的下载与安装、基本使用、系统服务制作

一、MySQL简介 ​ MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 二、安装与下载 1、下载流程 1、访问官方(www.mysql.com&#xf…

数据结构学习笔记(Ⅲ):栈和队列

目录 1 栈 1.1 栈的基本概念 1.定义 2.基本操作 ​1.2 栈道顺序存储实现 1.实现 2.基本操作 3.共享栈 1.3 栈的链式存储实现 2 队列 2.1 基本概念 1.定义 2.基本操作 2.2 队列的顺序实现 1.实现 2.基本操作 2.3 队列的链式实现 1.链式存储实现队列 2.基本操…

Selenium基础 —unittest单元测试框架

目录 (一)unittest基本简介 (二)unittest基本概念 1、unittest核心的四个概念 2、如何创建一个测试类 3、test fixture常用的四个方法 4、unittest编写测试方法(用例)规范 5、执行测试脚本 6、入门示例 7、结果说明 &am…

目标检测论文解读复现之十七:融合注意力机制的YOLOv5口罩检测算法

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

视频格式转换器下载哪个好?分享:3种TS到MP4的转换器

对于TS视频格式大家可能接触的比较少,我们先来认识下TS视频格式。 TS是日本高清摄像头拍摄下的视频格式,常用于记录实录片段,比如讲堂、演唱会、监控等等。TS和MP4不同的地方在于TS是一种抢先非高清版视频,其画质并不如MP4&#x…

华为十年架构师实战经验总结:大规模分布式系统架构与设计实战

前言 本篇是从程序员到首席架构师十多年职业生涯的实战经验总结,系统讲解构建大规模分布式系统的核心技术与实现方法,包含开源的Fourinone系统的设计与实现过程,手把手教你掌握分布式技术。 通过学习这个系统的实现方法与相关的理论&#x…

Investment Guide|Star Investors: X METAVERSE PRO‘s Copy Trading System

With the globalization of finance, people around the world are more keenly aware of the role of finance. When financial investment has become a social trend, “how to effectively use every penny and grasp every investment opportunity in a timely manner” h…

SpringCloud - 服务调用

文章目录1. LB负载均衡(Load Balance)2. Ribbon负载均衡服务调用2.1 Ribbon负载均衡演示2.1.1 架构2.1.2 POM2.1.3 RestTemplate操作2.2 Ribbon核心组件IRule2.3 负载均衡规则替换2.4 Ribbon负载均衡算法2.4.1 原理2.4.2 手动实现负载均衡3. OpenFeign服务调用3.1 OpenFeign使用…