【优化算法】杂草优化算法(IWO)【含Matlab源码 1076期】

举报
海神之光 发表于 2022/05/29 03:00:41 2022/05/29
【摘要】 一、获取代码方式 获取代码方式1: 完整代码已上传我的资源:【优化算法】杂草优化算法(IWO)【含Matlab源码 1076期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,...

一、获取代码方式

获取代码方式1:
完整代码已上传我的资源:【优化算法】杂草优化算法(IWO)【含Matlab源码 1076期】

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

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

二、杂草算法简介

1 IWO定义
IWO是2006年由A. R. Mehrabian等提出的一种从自然界杂草进化原理演化而来的随机搜索算法,模仿杂草入侵的种子空间扩散、生长、繁殖和竞争性消亡的基本过程,具有很强的鲁棒性和自适应性。

IWO算法是一种高效的随机智能优化算法,以群体中优秀个体来指导种群的进化,以正态分布动态改变标准差的方式将由优秀个体产生的子代个体叠加在父代个体周围,再经过个体之间的竞争,得到最优个体。算法兼顾了群体的多样性和选择力度。

2 IWO搜索与性能
IWO相比其他的进化算法拥有更大的搜索空间和更好的性能。
与GA相比,IWO算法简单,易于实现,不需要遗传操作算子,能简单有效地收敛问题的最优解,是一种强有力的智能优化工具。

3 IWO算法实现步骤
3.1 初始化种群
一定数据的杂草初始分布在搜索空间中,位置随机,个数根据实际情况调整;

3.2子代繁殖
分布在整个搜索空间的父代,根据父代的适应值产生下一代种子,种子的个数由适应度值决定,适应值高的产生的种子多,低的个体产生种子数少。

3.3 空间扩散
子代个体按照一定规律分布在父代个体周围,分布位置规律满足正态分布(父代为轴线(均值),标准差随着代数不断变化)。

3.4 竞争淘汰
当一次繁殖的个体数超过种群数量的上限时,将子代和父代一起排序,适应值低的个体将被清除。

三、部分源代码

clc;
clear;
close all;
tic;  %%% 记录程序运行时间 %%%
%%%%%%%%%%%%%% 1 初始化种群 %%%%%%%%%%%%%
M0=30;  %%% 初始种群个体数 %%%
Mmax=50;  %%%% 最大种群个体数 %%%%%
itmax=2000; %%%% 迭代次数 %%%% 
dim=30; %%%%%%  问题维数  %%%%% 
smax=5;  %%%%% 最大种子数 %%%%%
smin=2;    %%%%%% 最小种子数 %%%%
n=3;  %%% 调和指数 计算方差时要用的,是设好的固定值 %%%%%
delta_initial=10; %%% 方差最大值 %%%%
delta_final=0.001; %%% 方差最小值 %%%%
xmax=100;  
xmin=-100; %%%% 问题解的最大最小 范围 %%%%%%%%
X=xmin+(xmax-xmin)*rand(M0,dim);  %%%%% 随机产生初始种群 %%%%%
fit=fitness(X);  %%% 计算种群的适应度函数值  %%%%%%
best=0;  %%% 定义一个数,用来存储最优解 %%%
evrybest=[]; %%% 定义一个空阵,用来存储每代的最优解 %%%
%%%%%%%%%%%%%%%%%%%%%%%%%主程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
iter=1;
while iter<=itmax   %%%%%% 循环迭代 %%%%
 %%%%%%%%%%%% 2 生长繁殖 产生种子 %%%%%%%%%%%%%    
Nseed=round(-(smax-smin)/(max(fit)-min(fit))*(fit-min(fit))+smax);
 %%%%%%%%%%%% 3 空间扩散 以正态随机分布 %%%%%%%%%%%%%
delta_iter=(itmax-iter)^n/(itmax)^n*(delta_initial-delta_final)+delta_final;
%%%% 上面的式子求正态分布的方差 %%%%
l=size(X);
X1=[];
for i=1:l(1)  %%% 对于每个个体 %%%
    for j=1:Nseed(i)  %%% 对于每个个体产生的种子数 %%%%
        Xnew=normrnd(X(i,:),delta_iter^2); %%%% 产生正态分布随机数 %%%
        if Xnew(:)>xmax
          Xnew(:)=xmax;
        end
      if Xnew(:)<xmin
          Xnew(:)=xmin;
      end  %%%%% 限制解的范围 解决实际问题时,这步可有可无 %%%%%
        X1=[X1;Xnew];  %%% 将产生的所有子代存在X1中 %%%%
    end
end         %%%%%% 上面一段是 产生子代的过程 %%%%%%%%%


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

四、运行结果

在这里插入图片描述

五、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.
[3]周品.MATLAB 神经网络设计与应用[M].清华大学出版社,2013.
[4]陈明.MATLAB神经网络原理与实例精解[M].清华大学出版社,2013.
[5]方清城.MATLAB R2016a神经网络设计与应用28个案例分析[M].清华大学出版社,2018.

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/118421905

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。