基于樽海鞘群算法的线性规划求解matlab程序

1 樽海鞘群优化算法

1.1 生物启示

通过研究海底生物樽海鞘在觅食过程中群体呈链状向食物方向移动的行为活动,学者Mirjalili在2017年提出的一种新型启发式仿生算法—樽海鞘群智能优化算法(Salp Swarm Algorithm, SSA)。樽海鞘在生物分类中隶属樽海鞘科,身体形态为桶型,颜色略透明。它们的组织和水母非常相似,且运动方式也很像水母,樽海鞘的食物是浮游植物(海草等),它们是通过用身体吸—排海水从而进行运动。一般情况下樽海鞘身体长度为1-10厘米,在水中有时为单一个体有时为群体运动。樽海鞘的生物学研究仍处于初期阶段,主要是因为人类探索它们的生活环境难度很大,很难在实验室环境中对它们进行研究。樽海鞘最有趣的行为之一是它们的成群行为。在深海中,樽海鞘经常呈现链状进行群体活动。这种行为主要机理并不明确,但一些生物学者认为,这是为了通过群体协作使樽海鞘群运动更快,从而进行高效地觅食行为。

1.2 SSA算法

樽海鞘群算法(SSA)是学者Mirjalili于2017年提出的一种新型群智能算法,该算法寻优过程模仿海底生物樽海鞘呈链状运动的觅食行为[64]。使用数学模型将樽海鞘群活动的行为表达出来,樽海鞘链由以下两部分构成:领导者以及跟随者。领头的樽海鞘个体是领导者,处于樽海鞘链的最前面,而其余的樽海鞘个体则被称为跟随者。正如两组个体的名称一样,领导者的作用是对搜索方向进行决策,跟随者相互追随(直接或间接跟随领导者),使整个樽海鞘链像食物源的方向移动。与其他基于群体行为的智能优化算法类似,N维的搜索空间中,每一个樽海鞘的位置被定义为X,N即为优化问题中决策变量的个数,D为樽海鞘种群数量。则樽海鞘种群的位置由X N维矩阵组成,如下所示:

(1)在樽海鞘群觅食过程中,领导者需要根据自身与食物源的距离进行位置变化,可通过式(2.2)进行计算:

其中第j维度上1jx为第一个个体(领导者)的位置;jF为食物源在第j维的位置;,j jub lb分别为第j维空间的上限与下限;2 3c,c为随机数,2 3c,c[0,1];c有着平衡樽海鞘群算法在全局探索或局部开发两种状态的作用,因而1c为最重要的参数,由式(2.3)进行计算:

其中,e为自然对数的底,t代表本次迭代次数,maxT为算法设置的最大迭代次数。

(2)使用牛顿运动公式更新追随者位置如式2.4所示:

1.3 SSA算法流程

第一步 设置参数,种群初始化。根据所设定范围的搜索空间,生成一个规模为N×D的随机种群。
第二步 计算适应度值。按照目标函数计算公式,计算初始种群中N个樽海鞘个体的适应度值。
第三步 确定食物源位置。在实际寻优问题中,最优解是未知的。将樽海鞘群按照适应度值进行排序,适应度最优的樽海鞘的位置设为本次迭代的食物位置(当前最优位置)。
第四步 领导者与跟随者的确定。去除掉排在首位的樽海鞘个体,群体中剩余N−1个樽海鞘,按照初始种群适应度值的排序,将排在前一半的樽海鞘个体定义为领导者,其余樽海鞘个体视为追随者。
第五步 位置更新。首先根据式(2.2)更新领导者的位置,再根据式(2.5)更新追随者的位置。
第六步 计算更新后的群体的适应度。将更新后的每个樽海鞘个体的适应度值与当前食物的适应度值进行比较,若更新后樽海鞘的适应度值优于食物适应度值,则以适应度值更优的樽海鞘位置作为新的食物的位置。
第七步 重复步骤四-步骤六,当计算运行到最大迭代次数,输出当前的食物位置作为全局最优位置。

2 线性规划算例
2.1算例

2.2算例答案

3 樽海鞘群算法求解结果
1)迭代曲线

2)求解答案

4 matlab程序
1)主函数

%% 基于樽海鞘群算法的线性规划求解
clear
clc
close all
SearchAgents_no=30; % Number of search agentsFunction_name='F1'; % Name of the test function that can be from F1 to F23 ( Max_iteration=200; % Maximum numbef of iterations% Load details of the selected benchmark function
[lb,ub,dim,fobj]=Get_Functions_details(Function_name);[Best_score,Best_pos,SSA_cg_curve]=SSA(SearchAgents_no,Max_iteration,lb,ub,dim,fobj);%% 结果画图figure
plot(SSA_cg_curve,'Color','r')
title('迭代曲线')
xlabel('Iteration');
ylabel('Best score obtained so far');% axis tight
grid on
box on
legend('SSA')
%% 结果输出
display(['最优变量为 ', num2str(Best_pos)]);
display(['最优解为 ', num2str(Best_score)]);。。。。略 

5 matlab完整程序链接:
https://mp.weixin.qq.com/s?__biz=Mzg4MTc1MjE2Mg==&mid=2247484503&idx=1&sn=0aaeb66ec4dc6516d7ffac7ef051c3cc&chksm=cf60655af817ec4c0b7b1893e33d6632c05be85a442e855fbfcc1a17048ff0795546f351c312&token=2022090735&lang=zh_CN#rd

基于樽海鞘群算法的线性规划求解matlab程序相关推荐

  1. 基于人工蜂群算法的线性规划求解matlab程序

    基于人工蜂群算法的线性规划求解matlab程序 1 人工蜂群算法概述 2005年D. Karaboga教授仿照蜜蜂集群采蜜生物行为,提出了人工蜂群仿生算法,可以有效解决有关函数优化等相关难题.ABC算 ...

  2. 基于沙猫群优化算法的线性规划求解matlab程序

    基于沙猫群优化算法的线性规划求解matlab程序 1 沙猫群优化算法 沙猫的中文学名叫沙丘猫,俗名沙漠猫,与荒漠猫名字相似,但却是两种不同的猫科动物.沙猫生活在茫茫沙漠里,主要分布在分布于非洲北部,阿 ...

  3. 基于杂草优化算法的线性规划问题求解matlab程序

    基于杂草优化算法的线性规划问题求解matlab程序 1 杂草算法简介 1.1 IWO定义 IWO是2006年由A. R. Mehrabian等提出的一种从自然界杂草进化原理演化而来的随机搜索算法,模仿 ...

  4. 【WSN】基于樽海鞘群算法实现无线传感器网络WSN节点的部署优化matlab源码

    1 算法介绍 一种基于樽海鞘群算法的无线传感器网络节点定位方法,包括初始化樽海鞘群个体节点,判断节点位置,将节点位置作为食物源对周围环境进行链式搜索,找到其余节点进行确认,并转为食物源变量进行迭代搜索 ...

  5. 基于变色龙算法的线性规划问题求解matlab程序

    基于变色龙算法的线性规划问题求解matlab程序 1 变色龙算法 变色龙是爬行动物,是非常奇特的动物,它有适于树栖生活的种种特征和行为.避役的体长约15-25厘米,身体侧扁,背部有脊椎,头上的枕部有钝 ...

  6. 基于鲸鱼算法的线性规划问题求解matlab程序

    基于鲸鱼算法的线性规划问题求解matlab程序 1 鲸鱼算法 座头鲸有特殊的捕猎方法,这种觅食行为被称为泡泡网觅食法:标准 WOA 模拟了座头鲸特有的搜索方法和围捕机制,主要包括:围捕猎物.气泡网捕食 ...

  7. 【图像边缘检测】基于蚁群算法实现图像边缘检测matlab代码

    1 简介 目的提出基于蚂蚁算法的图像分割技术,解决传统的图像分割算法分割图像的效果不理想.不能满足图像分割要求等问题.方法将图像的灰度.梯度和邻域特征组合成蚂蚁,通过MATLAB实现蚁群图像分割算法对 ...

  8. tsp 选边 matlab,【转载】蚁群算法TSP(旅行商问题)通用matlab程序

    %按概率原则选取下一个城市Pcum=cumsum(P);Select=find(Pcum>=rand);to_visit=J(Select(1));Tabu(i,j)=to_visit;ende ...

  9. 混合储能系统容量优化MATLAB程序基于粒子群算法

    混合储能系统容量优化MATLAB程序基于粒子群算法 (1)该程序为基于粒子群算法的混合储能系统容量优化程序,中文核心期刊论文源程序,配有该论文,再给一篇类似的参考论文. (2)该程序中混合储能系统为蓄 ...

  10. 电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网

    电力系统无功优化MATLAB程序基于粒子群算法IEEE30配电网 (1)该程序为基于粒子群算法的配电网无功优化程序,可达到有效降低网损的目的. (2)程序以IEEE-30节点为算例.以网损最小为目标函 ...

最新文章

  1. 电脑安装pandas报错_python3.8下如何解决pandas报错No module named '_bz2'问题
  2. 推荐7个最新发现的神仙网站,让人心动!
  3. 【数据架构解读】基于阿里云数加StreamCompute和MaxCompute构建的访问日志统计分析...
  4. 函数的重载与 泛型(generic)有什么不同?
  5. (视频+图文)机器学习入门系列-第7章 KNN算法
  6. 三十、开始前端Vue.js的学习之路
  7. 2012.9华为软件开发面试题
  8. CAN总线技术 | 数据链路层02 - 帧结构
  9. gephi 使用mysql数据,gephi练习数据
  10. 卢伟冰:这几天黑稿明显增多了 法务又要忙了
  11. 电子计算机专业211大学,这所高校不是211,但“计算机”实力远超985,被称“IT人才摇篮”...
  12. java程序内存泄漏场景及预防
  13. Head First 设计模式 —— 装饰器模式与门面模式
  14. C++基础知识总结----类的进阶知识点
  15. 【训练平台】mmdetection训练自己的标注数据, 以faster RCNN ,yolo为例子
  16. SPSS统计分析学习记录
  17. Xshell6下载安装
  18. 谁“杀死”了杀毒软件
  19. PostgreSQL 修改数据库用户的密码
  20. Java web 使用页面压缩

热门文章

  1. VC dimension(Vapnik-Chervonenkis dimension)
  2. SVM-支持向量机算法概述
  3. 我在谷歌大脑工作的 18 个月中,是怎样研究强化学习的?
  4. AlphaGo Zero算法简介
  5. apple script to 1s screen capture snapshot w/ windowsill
  6. VC网络编程实战视频教程
  7. ClearCase的一些基本概念
  8. 微型计算机与接口技术总结,微机原理与接口技术课程总结
  9. 天涯明月刀手游为什么服务器维护,天涯明月刀手游12.7日更新公告 更新内容详情一览...
  10. 《编程珠玑》读解 一