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

2021/7/2 20:21:37

本文主要是介绍【优化算法】杂草优化算法(IWO)【含Matlab源码 1076期】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、简介

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



这篇关于【优化算法】杂草优化算法(IWO)【含Matlab源码 1076期】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程