一、获取代码方式

获取代码方式1:
通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。

获取代码方式2:
完整代码已上传我的资源:[【单目标优化求解】基于matlab被囊群算法(TSA)求解最优目标问题【含Matlab源码 1567期】

备注:
订阅紫极神光博客付费专栏,可免费获得1份代码(有效期为订阅日起,三天内有效);

二、被囊群算法简介

被囊群算法是一种元启发式算法,模拟被囊动物的喷气推进行为和群体行为.喷气推进行为主要利用自身的重力、深海中的水流平流、个体之间的相互作用力,实现个体之间搜索冲突避免,同时,也具有向最优个体移动的能力.喷气推进行为主要由3部分组成:搜索个体冲突避免,保持接近最佳搜索个体,向最佳个体的位置移动.群体行为主要为更新搜索个体最优解的位置,通过被囊动物周围的神经感知水流的变化和同伴的发光确定同伴位置,共同向目标食物源位置聚集,达到群体觅食的目的.TSA采用喷气推进行为和群体行为这两种策略,更真实地模拟海洋中被囊动物群体觅食行为,达到算法实现简单、跳出局部最优能力强、寻优精度高的目的.TSA具体流程如图1所示.

图1 TSA流程图
1 喷气推进行为
皮囊动物在进行喷气推进前,需要避免搜索个体之间的冲突.为了避免个体冲突,计算新的位置向量:
A=GM.
其中:G表示重力,计算方式由文献[15]给出;M表示搜索个体之间的社会力量,
M=⎣Pmin+c1(Pmax-Pmin)」,
Pmin、Pmax为社交活动的最小值和最大值,c1为[0,1]内的随机数.
在避免邻居之间的冲突后,搜索个体朝着最佳邻居的方向发展,此时需要计算搜索个体与食物源之间的距离.第t次迭代时第i个个体与食物来源之间的距离为
PDti=|positionstbest−rand⋅xti|,
其中,rand为满足[0,1]均匀分布的随机数,positionstbest为第t次迭代时种群食物来源位置,即当前种群最优个体位置,xti为第t次迭代时种群第i个皮囊个体位置.
搜索个体向最佳食物源位置移动,即

其中,positionstbest为第t次迭代时种群食物来源位置,A为个体避免冲突计算的位置向量,PDti为当前第i个个体与食物来源之间的距离.

2 群体行为
在避免冲突、计算个体与食物源位置距离后,皮囊个体采用群体行为向食物源聚集.为了从数学上模拟被囊动物的群体行为,定义被囊动物的群体行为:

三、部分源代码


%%%  Tunicate Swarm Algorithm (TSA)clear all
clc
SearchAgents=30;
Fun_name='F1';
Max_iterations=1000;
[lowerbound,upperbound,dimension,fitness]=fun_info(Fun_name);
[Best_score,Best_pos,TSA_curve]=tsa(SearchAgents,Max_iterations,lowerbound,upperbound,dimension,fitness);figure('Position',[300 300 660 290])subplot(1,2,1);
func_plot(Fun_name);
title('Objective space')
xlabel('x_1');
ylabel('x_2');
zlabel([Fun_name,'( x_1 , x_2 )'])subplot(1,2,2);
plots=semilogx(TSA_curve,'Color','g');
set(plots,'linewidth',2)
hold on
title('Objective space')
xlabel('Iterations');
ylabel('Best score');axis tight
grid on
box on
legend('TSA')display(['The best solution obtained by TSA is : ', num2str(Best_pos)]);
display(['The best optimal value of the objective funciton found by TSA is : ', num2str(Best_score)]);%%% Designed and Developed by Dr. Gaurav Dhiman (http://dhimangaurav.com/) %%%function func_plot(fun_name)[lowerbound,upperbound,dimension,fitness]=fun_info(fun_name);switch fun_name case 'F1' x=-100:2:100; y=x; %[-100,100]case 'F2' x=-100:2:100; y=x; %[-10,10]case 'F3' x=-100:2:100; y=x; %[-100,100]case 'F4' x=-100:2:100; y=x; %[-100,100]case 'F5' x=-200:2:200; y=x; %[-5,5]case 'F6' x=-100:2:100; y=x; %[-100,100]case 'F7' x=-1:0.03:1;  y=x  %[-1,1]case 'F8' x=-500:10:500;y=x; %[-500,500]case 'F9' x=-5:0.1:5;   y=x; %[-5,5]    case 'F10' x=-20:0.5:20; y=x;%[-500,500]case 'F11' x=-500:10:500; y=x;%[-0.5,0.5]case 'F12' x=-10:0.1:10; y=x;%[-pi,pi]case 'F13' x=-5:0.08:5; y=x;%[-3,1]case 'F14' x=-100:2:100; y=x;%[-100,100]case 'F15' x=-5:0.1:5; y=x;%[-5,5]case 'F16' x=-1:0.01:1; y=x;%[-5,5]case 'F17' x=-5:0.1:5; y=x;%[-5,5]case 'F18' x=-5:0.06:5; y=x;%[-5,5]case 'F19' x=-5:0.1:5; y=x;%[-5,5]case 'F20' x=-5:0.1:5; y=x;%[-5,5]        case 'F21' x=-5:0.1:5; y=x;%[-5,5]case 'F22' x=-5:0.1:5; y=x;%[-5,5]     case 'F23' x=-5:0.1:5; y=x;%[-5,5]
end    L=length(x);
f=[];for i=1:Lfor j=1:Lif strcmp(fun_name,'F15')==0 && strcmp(fun_name,'F19')==0 && strcmp(fun_name,'F20')==0 && strcmp(fun_name,'F21')==0 && strcmp(fun_name,'F22')==0 && strcmp(fun_name,'F23')==0f(i,j)=fitness([x(i),y(j)]);endif strcmp(fun_name,'F15')==1f(i,j)=fitness([x(i),y(j),0,0]);endif strcmp(fun_name,'F19')==1f(i,j)=fitness([x(i),y(j),0]);endif strcmp(fun_name,'F20')==1f(i,j)=fitness([x(i),y(j),0,0,0,0]);end       if strcmp(fun_name,'F21')==1 || strcmp(fun_name,'F22')==1 ||strcmp(fun_name,'F23')==1f(i,j)=fitness([x(i),y(j),0,0]);end          end
endsurfc(x,y,f,'LineStyle','none');end

四、运行结果

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]屈迟文,彭小宁1.信息共享的记忆被囊群算法[J].模式识别与人工智能. 2021,34(07)

【单目标优化求解】基于matlab被囊群算法(TSA)求解最优目标问题【含Matlab源码 1567期】相关推荐

  1. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  2. 【Matlab指纹识别】指纹识别门禁系统【含GUI源码 1692期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别门禁系统[含GUI源码 1692期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余继 ...

  3. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

  4. 【Matlab树叶分类】BP神经网络植物叶片分类【含GUI源码 916期】

    一.代码运行视频(哔哩哔哩) [Matlab树叶分类]BP神经网络植物叶片分类[含GUI源码 916期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  5. 【Matlab水果蔬菜识别】形态学水果蔬菜识别【含GUI源码 919期】

    一.代码运行视频(哔哩哔哩) [Matlab水果蔬菜识别]形态学水果蔬菜识别[含GUI源码 919期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅. ...

  6. 【Matlab青草识别】形态学马唐草+牛筋草识别【含GUI源码 908期】

    一.代码运行视频(哔哩哔哩) [Matlab青草识别]形态学马唐草+牛筋草识别[含GUI源码 908期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  7. 【Matlab限速标志识别】形态学限速标志识别【含GUI源码 1142期】

    一.代码运行视频(哔哩哔哩) [Matlab限速标志识别]形态学限速标志识别[含GUI源码 1142期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅 ...

  8. 【Matlab电力负荷预测】粒子群优化支持向量机短期电力负荷预测【含GUI源码 751期】

    一.代码运行视频(哔哩哔哩) [Matlab电力负荷预测]粒子群优化支持向量机短期电力负荷预测[含GUI源码 751期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 ...

  9. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  10. 【Matlab指纹识别】指纹识别匹配门禁系统【含GUI源码 587期】

    一.代码运行视频(哔哩哔哩) [Matlab指纹识别]指纹识别匹配门禁系统[含GUI源码 587期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

最新文章

  1. 一文读懂微服务架构的重构策略
  2. 词法,语法,句法,语义
  3. TensorFlow中的对象检测教程:实时对象检测
  4. 机器学习获量子加速!物理学家与计算科学家「自然联姻」
  5. 文档生产工具 Doxygen
  6. strcpy和memcpy的区别?
  7. 系统架构师 项目经理 哪个更有前景_中央空调加地暖与五恒系统,哪个更省钱?...
  8. MAMP 无法启动Mysql,错误信息Can't start server : Bind on unix socket: Address already in use...
  9. Android学习总结(2)——App客户端与服务器交互中的token
  10. airtest测试用例_Airtest 常用方法
  11. 浅谈各种连接池中连接数量的设置
  12. vfp和python比较_vfp-和vfp相关的内容-阿里云开发者社区
  13. 十四步实现拥有强大AI的五子棋游戏
  14. vue项目实现富文本编辑器(实践用过)
  15. c 语言中析构函数,详解C++编程中的析构函数
  16. 练习绕口令快速提高语言表达能力(收藏)
  17. 宣传单印刷价格明细报价的影响因素有哪些?
  18. android 蓝牙设备 ota dfu升级实录
  19. 如何管理一盘散沙的团队?
  20. linux fedora centos,linux – 我为什么要使用CentOS而不是Fedora

热门文章

  1. 在ASP.NET 2.0中配置 AspNetSqlMembershipProvider(AspNetSqlProvider )
  2. Java-集合第六篇操作集合的工具类Collections
  3. [Postman]响应(7)
  4. for in和for of的区别(转)
  5. 继续聊WPF——Expander控件(1)
  6. 自动摘要学习计划(英语)
  7. AJAX不能访问MVC后台程序的问题
  8. PureLayout,使用纯代码写AutoLayout
  9. 190709每日一句 以这样的方式去过每一天,你的生活将永远改变!
  10. excel 绘制箱图