基于食肉植物优化算法的线性规划问题求解matlab程序
文章图片
1 算法介绍
食肉植物算法(CPA)从随机初始化一组解决方案开始。然后将溶液分类为食肉植物和猎物,然后根据生长和繁殖过程进行分组。它们的适应值将更新,所有解决方案都将合并。该过程将继续,直到满足终止条件。每个过程的细节解释如下:
文章图片
1.1 初始化
CPA是一种基于种群的优化算法,因此,它从初始化潜在问题的潜在解的种群开始。首先,在湿地中随机初始化由食肉植物和猎物组成的个体种群。食肉植物和猎物的数量分别表示为NCPLANT和NPREY。
1.2分类和分组
接下来,根据其适应度值按升序对等式(2)中的每个个体进行排序(考虑最小化问题)。排序种群的顶部植物解被认为是食肉植物CP,而剩余解(nPrey)是猎物猎物。图2展示了食肉植物和猎物的可视化。排序适应度和排序总体的矩阵可描述为不等式。分组过程需要模拟每个食肉植物及其猎物的环境。在分组过程中,具有最佳适应值的猎物被分配给排名第一的食肉植物。类似地,第二和第三类猎物分别被分配到第二和第三类食肉植物。重复该过程,直到NCplanth级猎物被分配到NCplanth级食肉植物。然后,将第1级猎物分配给第一级食肉植物,以此类推。CPA中的分组过程如下图所示。3.这一分组对于减少有助于肉食性植物生长的许多劣质猎物的可能性至关重要,这对于提高肉食性植物的生存能力非常重要。
1.3 生长
由于土壤营养贫乏,肉食性植物为了生长而吸引、捕获和消化猎物。猎物被其甜美的气味吸引到植物身上,但可能会间歇性地成功逃脱食肉植物的魔爪。这里,引入了吸引率。对于每组,随机选择一个猎物。如果吸引率高于随机生成的数字,则食肉植物会捕获并消化猎物以进行生长。
1.4 繁殖
食肉植物从猎物身上吸收养分,并利用这些养分进行生长和繁殖。就繁殖而言,只有排名第一的食肉植物,即。E种群中最好的解决方案是允许繁殖。这是为了确保CPA的开发只关注最佳解决方案。可以避免对其他解决方案进行不必要的利用,从而节省计算成本。
1.5 重组过程
新产生的食肉植物和猎物与以前的种群相结合,形成一个新的种群[n nCPlant(group_iter)nCPlant]×d维度。更具体地说,个体、nCPlant(groupiter)个体和nCPlant个体分别是来自原始种群、生长过程和繁殖过程的个体。随后,根据适应度值按升序对这组新个体进行排序。然后从该组中选择排名前N的个体作为新的候选解决方案。因此,这种精英主义选择策略确保选择更合适的解决方案在下一代中进行繁殖。
文章图片
2 线性规划算例
2.1算例
文章图片
2.2算例答案
【线性规划|基于食肉植物优化算法的线性规划问题求解matlab程序】
文章图片
3 杂草优化算法求解结果
1)迭代曲线
文章图片
2)求解答案
文章图片
4 matlab程序
1)主函数
下面展示一些 内联代码片
。
// %% 基于食肉植物优化算法的线性规划问题求解
%% 基于食肉植物优化算法的线性规划问题求解
clc
clear
close alldisp(['CPA is solving 100D Step test function.'])
disp(['Please wait...'])
disp(blanks(1)');
tic
%100D step test function variables
d=3;
Lb=0*ones(1,d);
Ub=15*ones(1,d);
opt=zeros(d,1);
tol=200;
%Carnivorous Plant Algorithm
[best,fmin]=CPA(Lb,Ub,d,opt,tol);
。。。。。。。略
4 matlab完整程序转链接:
https://mp.weixin.qq.com/s?__biz=Mzg4MTc1MjE2Mg==&mid=2247484421&idx=1&sn=084663078d6bb6bb0b40c49851265784&chksm=cf606508f817ec1e9298dd32eb8caa83468168f7b18fe9796c9e3cd11bdf9124c43c214e73fa&token=1293156571&lang=zh_CN#rd
文章图片
推荐阅读
- matlab实践|遗传算法(一) 遗传算法的基本原理
- 算法|C语言RGB转Lab色域
- Authing|如何使用 Authing 单点登录,集成 Discourse 论坛()
- java|JAVA毕业设计国漫论坛网站计算机源码+lw文档+系统+调试部署+数据库
- 数学建模|系统(层次)聚类
- java|Java学习日记14(SpringMVC的请求-配置文件的知识总结)
- Spring|SpringMVC获得请求数据-文件上传
- golang详解|【Golang详解】深入了解map
- Golang|深入理解Golang之context