【智能优化算法】基于鲸鱼算法结合蚁群算法求解函数极值问题含Matlab代码

简介: 【智能优化算法】基于鲸鱼算法结合蚁群算法求解函数极值问题含Matlab代码

 ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机

1 内容介绍

蚁群算法是继模拟退火、遗传算法、禁忌搜索等之后的又一启发式智能优化算法,它是由意大利学者M.Dorigo等人首次提出,并广泛应用于求解一系列组合优化问题,如:旅行商问题,二次分配问题,车辆路径问题和图着色问题等,这些应用充分显示了它在解决复杂离散优化问题方面的优越性。连续空间函数优化问题也是蚁群算法的研究课题之一,多峰函数优化又是函数优化的一个重要方面,但目前蚁群算法对该问题的研究主要是集中在求解函数的最大(小)值,对求解函数所有极值方面的研究却很少。

2 部分代码

clear

close all

clc

% Set ABC Control Parameters

ABCOpts = struct( 'ColonySize',  100, ...   % Number of Employed Bees+ Number of Onlooker Bees 种群规模

   'MaxCycles', 500,...   % Maximum cycle number in order to terminate the algorithm 循环次数,即全部蚂蚁走几遍

   'ErrGoal',   1e-20, ...  % Error goal in order to terminate the algorithm (not used in the code in current version)

   'Dim',       20 , ... % Number of parameters of the objective function 维数

   'Limit',   100, ... % Control paramter in order to abandone the food source 放弃食物源的阈值

   'lb',  -5.12, ... % Lower bound of the parameters to be optimized 函数值下限

   'ub',  5.12, ... %Upper bound of the parameters to be optimized 函数值上限

   'ObjFun' , 'rastrigin', ... %Write the name of the objective function you want to minimize 选择函数

   'RunTime',3); % Number of the runs 迭代次数

GlobalMins=zeros(ABCOpts.RunTime,ABCOpts.MaxCycles);

GlobalMins_WABC=zeros(ABCOpts.RunTime,ABCOpts.MaxCycles);

for r=1:ABCOpts.RunTime

   

   % Initialise population

   Range = repmat((ABCOpts.ub-ABCOpts.lb),[ABCOpts.ColonySize ABCOpts.Dim]);

   Lower = repmat(ABCOpts.lb, [ABCOpts.ColonySize ABCOpts.Dim]);

   Colony = rand(ABCOpts.ColonySize,ABCOpts.Dim) .* Range + Lower;

   

   Employed=Colony(1:(ABCOpts.ColonySize/2),:);

   GlobalMins(r,:) = ABCbee(ABCOpts,Employed);  % ABC算法

  GlobalMins_WABC(r,:) = WABCbee(ABCOpts,Employed);  % WABC-ABC算法

end; %end of runs

%----------------------------- 画图、记录最优均值和方差 --------------------------

dd=ABCOpts.MaxCycles;

if ABCOpts.RunTime==1

   semilogy((1:10:dd),GlobalMins(1:10:end));

   hold on

   semilogy((1:10:dd),GlobalMins_WABC(1:10:end),'-*g');

else

   semilogy((1:10:dd),mean(GlobalMins(:,1:10:end)));%若多次执行,求均值

   hold on

   semilogy((1:10:dd),mean(GlobalMins_WABC(:,1:10:end)),'-*g');%若多次执行,求均值

end

grid on

title('Mean of Best function values');

xlabel('cycles');

ylabel('fitness');

legend('ABC','WABC');

fprintf('Mean =%g Std=%g\n',mean(GlobalMins(:,end)),std(GlobalMins(:,end)));

fprintf('Mean =%g Std=%g\n',mean(GlobalMins_WABC(:,end)),std(GlobalMins_WABC(:,end)));

3 运行结果

image.gif编辑

4 参考文献

[1]刘卉. 应用蚁群算法求解函数所有极值[D]. 四川师范大学, 2011.

博主简介:擅长智能优化算法神经网络预测信号处理元胞自动机图像处理路径规划无人机雷达通信无线传感器等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

相关文章
|
21天前
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
4天前
|
机器学习/深度学习 人工智能 算法
基于DCT和扩频的音频水印嵌入提取算法matlab仿真
本文介绍了结合DCT和扩频技术的音频水印算法,用于在不降低音质的情况下嵌入版权信息。在matlab2022a中实现,算法利用DCT进行频域处理,通过扩频增强水印的隐蔽性和抗攻击性。核心程序展示了水印的嵌入与提取过程,包括DCT变换、水印扩频及反变换步骤。该方法有效且专业,未来研究将侧重于提高实用性和安全性。
|
5天前
|
算法
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
代码随想录算法训练营第六十天 | LeetCode 84. 柱状图中最大的矩形
18 3
|
5天前
|
算法
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
11 3
|
5天前
|
算法
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
代码随想录算法训练营第五十六天 | LeetCode 647. 回文子串、516. 最长回文子序列、动态规划总结
27 1
|
8天前
|
文字识别 算法 计算机视觉
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
图像倾斜校正算法的MATLAB实现:图像倾斜角检测及校正
15 0
|
11天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
282 9
|
15天前
|
算法 安全 Java
java代码 实现AES_CMAC 算法测试
该代码实现了一个AES-CMAC算法的简单测试,使用Bouncy Castle作为安全提供者。静态变量K定义了固定密钥。`Aes_Cmac`函数接受密钥和消息,返回AES-CMAC生成的MAC值。在`main`方法中,程序对给定的消息进行AES-CMAC加密,然后模拟接收ECU的加密结果并进行比较。如果两者匹配,输出"验证成功",否则输出"验证失败"。辅助方法包括将字节转为16进制字符串和将16进制字符串转为字节。
|
16天前
|
存储 人工智能 机器人
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
【Matlab】Matlab电话拨号音合成与识别(代码+论文)【独一无二】
|
3月前
|
Perl
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于全格式动态线性化的无模型自适应控制(Matlab代码)