2006年,Mehrabian等提 出 了一种新 颖 的 智 能 优 化 算 法—入 侵 杂 草 优 化 算 法(Invasive Weed Optimization,IWO).该算法模拟杂草种子在自然界的扩散、生长、繁殖和竞争性消亡的基本过程,具有很强的鲁棒性和自适应性,能够有效地收敛于问题的最优解 。
1 算法原理
2 算法流程图
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 %%%%%% 上面一段是 产生子代的过程 %%%%%%%%%
版本:2014a