【单目标优化算法】杂草优化算法(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了【单目标优化算法】杂草优化算法(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥


🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。


座右铭:行百里者,半于九十。

📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现

💥1 概述

【单目标优化算法】杂草优化算法(Matlab代码实现)

杂草算法代码简单,易于实现,具有较强的自适应性和鲁棒性。

算法步骤:(以搜索最小值为例)

1、初始化种群

随机生成一定数量的初始解(杂草),这些初始解(杂草)随机地均匀地分布在搜索空间(草原)内。

2、种群繁殖

现实世界中,不同杂草在草原上的适应度不同,适应度高的个体生长旺盛,将会产生更多的子代种子。

对应到最优解搜索问题中,接近最优解的解具有更强的适应度,会产生更多的子代个体(下一代的解)。远离最优解的解具有较低适应度,会产生较少的下一代个体。

基于上述分析,当前解产生子代种子个数公式如下:

【单目标优化算法】杂草优化算法(Matlab代码实现)

其中,Fx代表当前解的适应度,Fmin代表当前种群中所有解的最小适应度,Fmax代表代表当前种群中所有解的最大适应度。seed_max和seed_min分别代表每次迭代过程中单个解能够随机生成的最大/最小种子个数。

注意,当搜索目标函数最大解时,

【单目标优化算法】杂草优化算法(Matlab代码实现)

当搜索目标函数最小解时,

【单目标优化算法】杂草优化算法(Matlab代码实现)

其中Smax代表当前种群目标函数最大值,Smin代表当前种群目标函数最小值。(当搜索最小值的时候,函数值最小的解适应度最大)

3、空间搜索

现实世界中,杂草的种子随着动物的运动、风能等传播到父代个体周围。种子传播的距离服从正态分布。

对应到最优解搜索过程中,当前解的子代服从正态分布,该正态分布的均值为当前解的位置,标准差定义为sigma,sigma随着时间的推移与当前迭代次数g成负相关,在sigma最大值sigma_max、sigma最小值sigma_min、最大迭代次数g_max以及非线性调节因子w给定的情况下:

【单目标优化算法】杂草优化算法(Matlab代码实现)

📚2 运行结果

【单目标优化算法】杂草优化算法(Matlab代码实现)

部分代码:

%% IWO Main Loop

for it = 1:MaxIt

% 更新标准偏差

sigma = ((MaxIt - it)/(MaxIt - 1))^Exponent * (sigma_initial - sigma_final) + sigma_final;

% 获得最佳和最差的目标值

Costs = [pop.Cost];

BestCost = min(Costs);

WorstCost = max(Costs);

% 初始化子代种群

newpop = [];

% 繁殖

for i = 1:numel(pop)

% 比例系数

ratio = (pop(i).Cost - WorstCost)/(BestCost - WorstCost);

% 每个杂草产生的种子数

S = floor(Smin + (Smax - Smin)*ratio);

for j = 1:S

% 初始化子代

newsol = empty_plant;

% 生成随机位置

% randn是一种产生标准正态分布的随机数或矩阵的函数

newsol.Position = pop(i).Position + sigma * randn(VarSize);

% 边界(下限/上限)处理

newsol.Position = max(newsol.Position, VarMin);

newsol.Position = min(newsol.Position, VarMax);

% 子代的目标函数值

newsol.Cost = CostFunction(newsol.Position);

% 添加子代

newpop = [newpop;

newsol]; % #ok

end

end

% 合并种群

pop = [pop;

newpop];

% 种群排序

[~, SortOrder] = sort([pop.Cost]);

pop = pop(SortOrder);

% 竞争排除(删除额外成员)

if numel(pop)>nPop

pop = pop(1:nPop);

end

% 保存最佳种群

BestSol = pop(1);

% 保存最优函数值历史记录

BestCosts(it) = BestSol.Cost;

% 显示迭代信息

% disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCosts(it))]);

end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]张帅,贾如春.基于杂草优化算法优化极限学习机的DoS攻击检测研究[J].微型电脑应用,2019,35(04):85-89.

[2]李袁. 入侵杂草优化算法研究与应用[D].江苏科技大学,2018.文章来源地址https://www.toymoban.com/news/detail-509780.html

🌈4 Matlab代码实现

到了这里,关于【单目标优化算法】杂草优化算法(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包