文章目录

  • 一、理论基础
    • 1、算法简介
    • 2、杂草特性
  • 二、案例背景
    • 1、问题描述
    • 2、解题思路及步骤
      • (1) 初始化种群
      • (2) 繁殖
      • (3) 空间分布
      • (4) 竞争性排斥规则
    • 3、算法流程
  • 三、MATLAB程序实现
    • 1、清空环境变量
    • 2、问题设定
    • 3、参数设置
    • 4、初始化杂草种群
    • 5、迭代优化
    • 6、结果显示
  • 四、参考文献

一、理论基础

1、算法简介

入侵杂草算法(Invasive Weed Optimization,IWO)是C.Lucas和A.R.Mehrabian在2006年通过模拟自然界中杂草扩散入侵过程的随机搜索仿生优化算法。该算法是一种很强大的智能优化算法,具有易于理解、收敛性好、鲁棒性强、易于实现、结构简单等优点,目前,IWO 算法已成功应用在 DNA 序列计算、线性天线设计、电力线通信系统资源分配、图像识别、图像聚类、约束工程设计、压电激励器放置等实际工程问题。

2、杂草特性

杂草最突出的特点是,种子通过动物、水及风等多种传播途径随机散布在田野里,每个种子独立地使用田里的资源,找到适合的生长空间,发挥强大的适应能力,并且充分利用生长环境中的资源,能够获取充分的营养快速生长。在杂草进化和繁殖的过程中,生存能力强的种子繁殖得更快,产生较多的种子。反之,不太适应环境的种子,产生较少的种子。

二、案例背景

1、问题描述

本案例的寻优函数为sphere函数: f ( x ) = ∑ i = 1 n x i 2 , x i ∈ [ − 10 , 10 ] , i = 1 , 2 , ⋯ , n (1) f(\boldsymbol x)=\sum_{i=1}^n x_i^2,\quad x_i∈[-10,10],i=1,2,\cdots,n\tag{1} f(x)=i=1∑n​xi2​,xi​∈[−10,10],i=1,2,⋯,n(1)本案例取 n = 5 n=5 n=5。
sphere函数的三维立体图形如图1所示。

图1 sphere函数的三维立体图形

2、解题思路及步骤

(1) 初始化种群

设置相关参数,设定最大种群规模 N m a x N_{max} Nmax​,初始化种群数 N 0 N_0 N0​,所求问题维数 d d d,最大迭代次数 i t e r m a x iter_{max} itermax​,繁殖的种子数的上下限 S m a x S_{max} Smax​和 S m i n S_{min} Smin​,非线性调和因子(方差缩减指数) n n n。

(2) 繁殖

每个杂草产生的种子数的表达式: S = f l o o r ( S m i n + f − f m i n f m a x − f m i n ( S m a x − S m i n ) ) (2) S=floor(S_{min}+\frac{f-f_{min}}{f_{max}-f_{min}}(S_{max}-S_{min}))\tag{2} S=floor(Smin​+fmax​−fmin​f−fmin​​(Smax​−Smin​))(2)其中, f l o o r floor floor是MATLAB的一个函数,表示“向下取整”,即取不大于该值的最大整数; f f f代表当前杂草的适应度值,当前种群中杂草适应度值范围为 [ f m i n , f m a x ] [f_{min},f_{max}] [fmin​,fmax​],一颗杂草所能繁殖种子的数量范围为 [ S m i n , S m a x ] [S_{min},S_{max}] [Smin​,Smax​]。

(3) 空间分布

杂草产生的种子在父代个体的周围形成正态分布,其均值为零,标准差为 σ c u r \sigma_{cur} σcur​。第 i i i个杂草产生的第 s s s个种子的位置为: P o s i t i o n i , s = P o s i t i o n i + N ( 0 , σ 2 ) , S m i n ≤ s ≤ S m a x (3) Position_{i,s}=Position_i+N(0,\sigma^2),S_{min}≤s≤S_{max}\tag{3} Positioni,s​=Positioni​+N(0,σ2),Smin​≤s≤Smax​(3)其中, σ \sigma σ为标准差。随着进化次数的增加,标准差可按下式计算: σ c u r = ( i t e r m a x − i t e r i t e r m a x ) n ( σ i n i t − σ f i n a l ) + σ f i n a l (4) \sigma_{cur}=\left(\frac{iter_{max}-iter}{iter_{max}}\right)^n(\sigma_{init}-\sigma_{final})+\sigma_{final}\tag{4} σcur​=(itermax​itermax​−iter​)n(σinit​−σfinal​)+σfinal​(4)其中, σ c u r \sigma_{cur} σcur​是当前标准差, i t e r m a x iter_{max} itermax​为最大进化迭代次数, i t e r iter iter为当前进化迭代次数。 σ i n i t \sigma_{init} σinit​和 σ f i n a l \sigma_{final} σfinal​分别为标准差初始值和最终值。每轮进化对应的标准差并不一样,随着进化的进行,标准差从 σ i n i t \sigma_{init} σinit​一直变化到 σ f i n a l \sigma_{final} σfinal​;一般情况下设置为 n = 3 n=3 n=3。

(4) 竞争性排斥规则

竞争性排斥规则是经过多次进化之后,当种群规模达到 N m a x N_{max} Nmax​,按照适应度值大小对所有的个体进行排序,排除适应度较差的个体,保留其余个体。即此算法是先通过杂草迅速繁殖,占领生存空间,而后保留了竞争力更强的杂草继续进行空间搜索。

3、算法流程

IWO算法主要步骤如图2所示。

图2 IWO算法流程图

三、MATLAB程序实现

利用MATLAB提供的函数,可以方便地在MATLAB环境下实现上述步骤。

1、清空环境变量

程序运行之前,清除工作空间Workspace中的变量及Command Window中的命令。具体程序如下:

%% Clear environment variables
clc;
clear;
close all;

2、问题设定

在进行优化之前,需要明确优化的目标函数。具体程序如下:

%% Problem Definition
CostFunction = @(x) Sphere(x);     % 目标函数
nVar = 5;              % 决策变量数
VarSize = [1 nVar];    % 决策变量矩阵大小
VarMin = -10;       % 决策变量下限
VarMax = 10;        % 决策变量上限

Sphere函数代码如下:

function z = Sphere(x)
%% 目标函数z = sum(x.^2);
end

3、参数设置

代码如下:

%% IWO Parameters
MaxIt = 500;    % 最大迭代次数nPop0 = 10;     % 初始种群规模
nPop = 25;      % 最大种群规模Smin = 0;       % 繁殖种子数下限
Smax = 5;       % 繁殖种子数上限Exponent = 3;             % 方差缩减指数(非线性调和因子)
sigma_initial = 0.5;      % 标准差初值
sigma_final = 0.001;     % 标准差终值

4、初始化杂草种群

在计算之前,需要对杂草种群进行初始化。同时,为了加快程序的执行速度,对于程序中涉及的一些过程变量,需要预分配其存储容量。具体程序如下:

%% Initialization
% 置空植物矩阵(包含位置和适应度值)
empty_plant.Position = [];
empty_plant.Cost = [];
pop = repmat(empty_plant, nPop0, 1);    % 初始种群矩阵
for i = 1:numel(pop)% 初始化位置pop(i).Position = unifrnd(VarMin, VarMax, VarSize);% 初始化适应度值pop(i).Cost = CostFunction(pop(i).Position);
end
% 初始化最优函数值历史记录
BestCosts = zeros(MaxIt, 1);

5、迭代优化

迭代寻优为整个算法的核心。首先根据公式(4)计算标准差,获得最优和最差的目标函数值,并初始化子代种群;然后进行繁殖操作,根据公式(2)计算每个杂草个体产生的种子数;之后,遍历每个杂草产生的种子,根据杂草产生的种子在父代个体的周围服从 N ( 0 , σ 2 ) N(0,\sigma^2) N(0,σ2)和公式(3)产生相应的个体,添加进子代种群;最后,合并父代和子代,并根据竞争性生存法则剔除额外成员(如果多余的话),保存每代的最优解。

%% 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 = [newpopnewsol];  % #okendend% 合并种群pop = [popnewpop];% 种群排序[~, SortOrder] = sort([pop.Cost]);pop = pop(SortOrder);% 竞争排除(删除额外成员)if numel(pop)>nPoppop = pop(1:nPop);end% 保存最佳种群BestSol = pop(1);% 保存最优函数值历史记录BestCosts(it) = BestSol.Cost;% 显示迭代信息disp(['Iteration ' num2str(it) ': Best Cost = ' num2str(BestCosts(it))]);
end

6、结果显示

为了更为直观地对结果进行观察和分析,以图形的形式将结果显示出来,具体程序如下:

%% Results
figure;
% plot(BestCosts, 'LineWidth', 2);
semilogy(BestCosts, 'r', 'LineWidth', 2);
xlabel('Iteration');
ylabel('Best Cost');
grid on;

IWO算法进化过程如图3所示。

图3 IWO算法迭代进化过程

四、参考文献

[1] A.R. Mehrabian, C. Lucas. A novel numerical optimization algorithm inspired from weed colonization[J]. Ecological Informatics, 2006, 1(4): 355-366.
[2] V. Kawadia, P. R. Kumar. Principles and protocols for power control in wireless ad hoc networks[J]. IEEE Journal on Selected Areas in Communications, 2005, 23(1): 76-88.
[3] 孟凡治, 王换招, 何晖. 基于联合感知模型的无线传感器网络连通性覆盖协议[J]. 电子学报, 2011, 39(4): 772-779.

基于入侵杂草算法的函数寻优算法相关推荐

  1. 《MATLAB智能算法30个案例》:第2章 基于遗传算法和非线性规划的函数寻优算法

    <MATLAB智能算法30个案例>:第2章 基于遗传算法和非线性规划的函数寻优算法 1. 前言 2. MATLAB 仿真示例一 3. MATLAB 仿真示例二 4. MATLAB 仿真示例 ...

  2. 基于蚁群算法的函数寻优算法

    文章目录 一.理论基础 二.案例背景 1.问题描述 2.解题思路及步骤 三.MATLAB程序实现 1.清空环境变量 2.初始化参数 3.构建解空间和目标函数 4.迭代寻优 5.结果显示 6.绘图 四. ...

  3. 基于沙猫群优化算法的函数寻优算法

    文章目录 一.理论基础 1.沙猫群优化算法 (1)初始化种群 (2)搜索猎物(探索) (3)攻击猎物(开发) (4)探索和开发 2.SCSO算法伪代码 二.仿真实验与结果分析 三.参考文献 一.理论基 ...

  4. 基于改进正弦余弦算法的函数寻优算法

    文章目录 一.理论基础 1.基本正弦余弦算法 2.改进正弦余弦算法 (1)基于双曲正弦调节因子和动态余弦波权重的位置更新 (2)基于拉普拉斯分布和高斯分布的动态混合变异 二.算法流程图 三.仿真实验与 ...

  5. 基于蜉蝣优化算法的函数寻优算法

    文章目录 一.理论基础 1.蜉蝣优化算法 (1)雄性蜉蝣的更新 (2)雌性蜉蝣的更新 (3)蜉蝣的交配过程 2.MA算法伪代码 二.仿真实验与结果分析 1.函数测试与数值分析 2.WSN三维覆盖优化 ...

  6. 基于金豺优化算法的函数寻优算法

    文章目录 一.理论基础 1.金豺优化算法 (1)搜索空间公式 (2)探索阶段或搜索猎物 (3)开发阶段或围捕和突袭猎物 (4)从探索转向开发 2.GJO伪代码 二.仿真实验与结果分析 三.参考文献 一 ...

  7. 基于果蝇优化算法的函数寻优算法

    文章目录 一.理论基础 二.算法步骤 1.启发 2.方向和距离 3.气味浓度判断值 4.适应度评估 5.寻找最优个体 6.飞行 7.迭代优化 三.案例背景 问题描述 四.MATLAB程序实现 1.清空 ...

  8. 基于蜂鸟优化算法的函数寻优算法

    文章目录 一.理论基础 1.自搜索阶段 2.引导搜索阶段 3.HOA伪代码 二.仿真实验与分析 三.参考文献 一.理论基础 蜂鸟优化算法(Hummingbirds optimization algor ...

  9. 基于藤壶交配优化算法的函数寻优算法

    文章目录 一.理论基础 1.藤壶交配优化算法 1.1 哈迪-温伯格(Hardy-Weinberg)法则 1.2 BMO 1.2.1 初始化 1.2.2 选择过程 1.2.3 繁殖 2.BMO算法伪代码 ...

最新文章

  1. 【ACM】杭电OJ 1789(Doing Homework again)
  2. secureCRT自动断开的解决方法
  3. Android性能优化典范第六季
  4. 关于python文件_关于python文件操作
  5. 动态加载TreeView
  6. python word自动化_python操作word,自动化办公
  7. 查看有哪些表被锁住 如何杀死oracle死锁进程
  8. 千年新论:马谡的错误在于盲目创新,正确做法是死板教条
  9. 什么软件测试情侣头像,在线识别情侣头像软件
  10. STM32H750 开启 SAI 模块
  11. 1.HTTP协议|web框架
  12. 梦之所寄,行之所为——地狱之门就此洞开(读梦断代码有感)
  13. 126邮箱stmp服务器,网易邮箱开启13周年庆 与3.2亿用户共享快乐
  14. 使用谷歌(Google)TTS服务 – Java版开源gTTS及Python gTTS
  15. SpringBoot常用标签的理解
  16. UI设计中标签设计总结
  17. 苹果x为什么总黑屏_苹果X手机为什么突然黑屏了
  18. 【微信小程序】初探·即用即走的小程序到底有多急?
  19. Spring项目,项目启动执行方法且执行一次。
  20. c语言数星星结构体,1469: 数星星(结构体专题)

热门文章

  1. java 中成员变量的名字和类的方法的名字可以一样.
  2. 【vue-baidu-map】自定义地图
  3. 华为fusionaccess云桌面AD域虚拟机故障替换
  4. 2021年高压电工考试报名及高压电工复审考试
  5. rtmp 点播系统之播放器篇
  6. 拼多多跨境电商好不好做众心正和
  7. git stash 临时存代码,清空工作区
  8. javaweb(二)前端基础入门篇
  9. 将思科7912G SIP电话转成SCCP模式(Converting an In-Use Phone from SIP to SCCP for IP Phone 7912G)
  10. 跨境电商亚马逊 速卖通 阿里国际 shopee 运营策略与实践