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

news2024/12/24 21:30:04

基于樽海鞘群算法的线性规划求解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 agents

Function_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)]);




。。。。略 




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

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

相关文章

javascript三种事件模型 + Dom事件流 +事件委托

目录三种事件模型● DOM0 级模型:● IE 事件模型:● DOM2 级事件模型:DOM事件流事件委托target/currentTarget/relateTarget的区别三种事件模型 ● DOM0 级模型: 这种模型不会传播,所以没有事件流的概念,…

Golang远程调试Debug环境

目录背景软件版本环境搭建安装Golang环境安装dlv环境启动远程环境Goland 连接远程环境参考背景 最近在做 Operator 的二次开发,开发语言是Golang。Operator 开发时候需要用到k8s集群,遗憾的是k8s编排的容器网络与本地网络不通,无法直接进行d…

十部必看特种部队电影之《勇者行动》

这部特种部队题材电影是馆长收藏了很久的网盘资源,今天拿出来分享给大家。

远程直接连接 MySQL 数据库,阿里云腾讯云允许远程连接教程

不使用SSH登录远程主机直接连接远程数据库 文章目录修改MySQL登录权限1、登录MySQL2、修改mysql库的user表3、防火墙开放3306端口Navicat直接连接远程数据库报错【报错】Cant connect to MySQL server (10060)1、网络问题2、mysql账户设置3、防火墙端口未开放4、查看云服务器商…

JWT -- Json Web token

JWT 的背景知识可以看这篇文章: JSON Web Token 入门教程 JWT 由三个部分组成: Header(头部)Payload(负载)Signature(签名) 在分布式系统下,存在跨session的问题,则使用…

[附源码]Python计算机毕业设计Django毕业生就业管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

cdn加速华为云obs桶文件配置过程(详细)

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂。 前言 前面写了一篇文章,jeecg-boot中上传图片到华为云obs云存储中 主要介绍了下,如何使用jeect-boot微服务将文件上传至obs中。 但是上传是没有问题,…

目前看过最全的一线大厂面试题(题 + 详解),你所不知道的都在这

前言 在过 1 个月即将进入 2023,然而面对今年的大环境而言,跳槽成功的难度比往年高了很多,很明显的感受就是:对于今年的 java 开发朋友跳槽面试,无论一面还是二面,都开始考验一个 Java 程序员的技术功底和…

FL Studio2022水果编曲音乐制作软件自带完整插件

FL Studio 2022是一款非常好用的音乐制作软件,又称水果编曲软件,软件集合了录音、混音、编辑等多种功能于一体,能够完成各种各样的音乐编曲工作,强大的音乐制作功能受到了很多用户的喜爱,帮你完成各种类型音乐的编曲制…

《500强高管谈VE》-企业经营与VE活动

文章出处:日本VE协会杂志文章翻译:泰泽项目部 关注泰泽:实现高利润企业 《500强高管谈VE》-企业经营与VE活动 作者:兄弟工业常务董事渡边共祥 由墨西哥货币不稳定引发的此次日元升值,一度跌破80日元,呈现…

Servlet程序及部署方式(Tomcat+Smart Tomcat)

目录 1、Servlet是什么? 2、Servlet程序【例——hello world】 2.1、创建项目 2.2、引入Servlet依赖 2.3、创建目录结构 2.4、编写代码 2.5、打包程序 2.6、部署程序 2.7、验证程序 3、更方便的部署方式——Smart Tomcat 1、Servlet是什么? Se…

初识计算机网络

目录 网络的发展 重新看待计算机结构 大型存储平台 认识 "协议" 网络和OS之间的关系 初识网络协议 协议分层 OSI七层模型 TCP/IP五层(或四层)模型 网络传输基本流程 局域网通信的原理 如果进行跨网络传输 网络通信里面的基本轮廓 数据包封装和分用…

多线程同步

文章目录一、多线程同步竞争与协作互斥的概念同步的概念互斥与同步的实现和使⽤锁信号量⽣产者-消费者问题经典同步问题读者-写者问题一、多线程同步 竞争与协作 在单核 CPU 系统⾥,为了实现多个程序同时运⾏的假象,操作系统通常以时间⽚调度的⽅式&am…

为dev c++配置图形开发环境easyx之mingw32

easyx官方的文档在说明如何配置环境上面不太详细,所以就有了我的那篇博文为dev c配置图形开发环境easyx,默认的是在64位的编译器TDM-gcc下配置的,也就是我们配置的easyx最终都是放在mingw64文件夹下的,5.1版本后的dev c内置的编译…

什么是分层架构

👨‍💻个人主页:微微的猪食小窝 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 微微的猪食小窝 原创 1、什么是架构分层? 分层架构是将软件模块按照水平切分的方式分成多个层,一个系统由多层组成…

同时安装Vue2和Vue3

背景 当我们的工作中使用的还是脚手架还是基于Vue2.x的版本,那么我们想要学习和使用Vue3怎么办?直接升级脚手架的话,会影响到我们现在的项目,那就需要去处理下关于Vue3的东西了。 下载安装Vue3的脚手架 任意磁盘根目录新建一个文件…

【深入理解C++】new/delete和new[]/delete[]探秘

文章目录1.operator new()和operator delete()2.new记录分配的内存大小供delete使用3.new[]/delete[]申请和释放一个数组3.1 基本数据类型(内置类型)3.2 自定义类型(类类型)4.new/delete和new[]/delete[]要配对使用1.operator new…

开发 Chrome 扩展 之 Hello World 心血来潮

开发 Chrome 扩展 Hello, World 项目加载未打包的扩展icon刷新引入 JS 与错误处理 开发 Chrome 扩展 开发 Chrome 扩展除了需要基本的 HTML, CSS, JS 之外, 还可以使用 Chrome 额外提供的 API. 除了需要的 .html, .css 和 .js 文件之外呢, 扩展还包括不同类型的文件, 具体可…

杨辉三角形(Java版)

不为失败找理由,只为成功找方法。所有的不甘,因为还心存梦想,所以在你放弃之前,好好拼一把,只怕心老,不怕路长。 文章目录1. 什么是杨辉三角形2. 实现思路(方式)2.1 递归方式2.2 递归…

Nginx简单使用

安装龙蜥操作系统 镜像文件在这里下载就行 下载之后新建虚拟机 ISO选择刚才下载文件即可 具体配置可以照我来 也可自定义 基本工具安装 安装一下最基本的网络工具 yum install net-tools openssh-server wget tar make vim -y测试一下ssh连接 方便后期操作 修改主机名 …