入侵性杂草优化算法的改进与应用(Matlab代码实现)

           目录

💥1 概述

📚2 运行结果

🎉3 参考文献

👨‍💻4 Matlab代码


💥1 概述

入侵杂草算法(IWO算法)是模拟杂草繁衍过程的一种随机搜索方法,具有鲁棒性、自适应性强和编程简单等优点,但也有搜索效率低,容易陷入局部最优的不足.在种群初始化阶段,研究者采用多子群法、反向学习法和混沌序列等方法使种群在全局空间分布更均匀;在空间扩散阶段,研究者将防早熟的杂草算法、Alopex算法、Lévy飞行法和蝙蝠算法等应用于IWO算法,使得部分种子在空间扩散阶段获得更强的全局搜索能力;在竞争排斥阶段,采用差分进化算法,可改善种群的多样性,并且更容易选择出优秀个体,提高收敛速度. 

📚2 运行结果

 

 

 

 

 

 

 

 

🎉3 参考文献

[1]周立军.入侵杂草算法及其改进方法综述[J].白城师范学院学报,2021,35(05):35-42.

👨‍💻4 Matlab代码

主函数部分代码:

clc;
clear;
close all;
format shortG
%% Insert Data

data=InsertData();


nvar = data.nvar;           % Number of Decision Variables
SizeX = [1 nvar];     % Decision Variables Matrix Size

lb = -1*ones(1,nvar);       % Lower Bound of Decision Variables
ub = 1*ones(1,nvar);        % Upper Bound of Decision Variables

%% IWO Parameters

Maxiter =200;    % Maximum Number of iterations

npop0 = 40;     % Initerial Population Size
npop = npop0*4;     % Maximum Population Size

Smin = 0;       % Minimum Number of Seeds
Smax = 5;       % Maximum Number of Seeds

Exponent = 2;           % Variance Reduction Exponent
sigma_initerial = 1;      % Initerial Value of Standard Deviation
sigma_final = 0.001;    % Final Value of Standard Deviation

%% Initerialization
tic
% Empty Plant Structure
emp.x = [];
emp.fit = [];
emp.info = [];

pop = repmat(emp, npop0, 1);    % Initerial Population Array

for i = 1:numel(pop)
    
    % Initerialize x
    pop(i).x = unifrnd(lb, ub);
    
    % Evaluation
    pop(i)= fitness(pop(i),data);
    
end

% Initerialize Best fit History
BEST = zeros(Maxiter, 1);

%% IWO Main Loop

for iter = 1:Maxiter
    
    % Update Standard Deviation
    sigma = ((Maxiter - iter)/(Maxiter - 1))^Exponent * (sigma_initerial - sigma_final) + sigma_final;
    
    % Get Best and Worst fit Values
    fits = [pop.fit];
    Bestfit = min(fits);
    Worstfit = max(fits);
    
    % Initerialize Offsprings Population
    newpop = [];
    
    % Reproduction
    for i = 1:numel(pop)
        
        ratio = (pop(i).fit - Worstfit)/(Bestfit - Worstfit);
        S = floor(Smin + (Smax - Smin)*ratio);
        
        for j = 1:S
            
            % Initerialize Offspring
            newsol = emp;
            
            % Generate Random Location
            newsol.x = pop(i).x + sigma * randn(SizeX);
            
            % Apply Lower/Upper Bounds
            newsol.x = CB(newsol.x, lb,ub);
       
            
            % Evaluate Offsring
            newsol = fitness(newsol,data);
            
            % Add Offpsring to the Population
            newpop = [newpop
                      newsol];  %#ok
            
        end
        
    end
    
    % Merge Populations
    [pop] = [pop
           newpop];
    
    % Sort Population
    [~, ind]=sort([pop.fit]);
    pop = pop(ind);

    % Competiterive Exclusion (Delete Extra Members)
    if numel(pop)>npop
        pop = pop(1:npop);
    end
    
    % Store Best Solution Ever Found
    gpop = pop(1); % gpop: global Solution
    
    % Store Best fit History
    BEST(iter) = gpop.fit;
    
    % Display iteration Information
    disp(['iter ' num2str(iter) ' Best = ' num2str(BEST(iter))]);
    
end

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一部分是模式识别的一些预处理知识,包括: 图像压缩的例子:行程编码算法RCL 手写体数据变换成像素位图的算法, 另外在这一章中的细化算法是与Chapt6中的特征提取结合在了一起 第二部分涉及有监督学习的前馈网络 ALOPEX算法:即模式提取算法,它把神经网络的学习过程看作 最优化问题的随机并行算法。与反向传播算法相比, 在大范围的信噪比情况下,ALOPEX算法有更好的抗噪声能 另一个优点是计算简单,可以用高速大规模集成电路来实现 BackProp算法:经典的B-P算法(呵呵,很多人想要的么!)。我就不多说了 使用的时候注意,这个目录下还包括其它一些程序,比如Pnet.cpp 是一个前馈多层感知器算法,其它的我没仔细看。大家自己花点时间 慢慢琢磨吧。 第三部分是特征提取:重点是几何特征(环,交叉点,端点)和变换 例子就是这些几何特征的提取啦 第四部分主要是讨论自组织系统 K-Means:动态聚类算法(呵呵,又是一个N个人问我要的!) Kohonen模型结构:它是受视网膜皮层的生物功能的启发而提出的。 Kohonen的SOFM(自组织特征映射):这种算法部分收到生物特征影响,在网 络输出层内按几何中心或特征进行聚类。 LVQ(学习矢量量化)算法:它是Kohonen的有监督学习的扩展形式。融合了 自组织和有导师监督的技术,学习方法是竞争的,但产生方式是 有教师监督的,也就是说,竞争学习是在由训练输入指定的各类 中局部进行。 第五部分是神经联想记忆的讨论: Hopfield:很经典吧。在历史上也很有名的一个事件哦。不过这个例子 好像是离散的Hopfield LAM(线联想记忆)算法:单层的前馈网络,例子能够实现自联想功能。 第六部分自适应共振理论(ART) ART和VQ(矢量量化的例子)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值