✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,
代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
1.1研究的目的及意义
中国是农业大国,搞好农业生产是关系到本国长治久安的重要事。在中国的农作物生产中,作为中国重要的粮食作物之一的水稻,占有举足轻重的地位,根据统计,在1995年,我国稻谷种植面积大约为2978万hm2,占全球稻谷种植面积的19.2%,其中全国稻谷种植面积的29.9%;稻谷作为全国粮食农作物中单个产量最高的作物,为6.31吨/hm2,可以看出,稻谷产量的高迪对全国农业的粮食的产量有重要影响,由此,研究怎样提高稻谷的产量具有深远意义。可是,因为种类、周围环境、栽培体制等变化情况各不相同,使害虫对稻谷的影响日益严重,导致了巨大的经济损失。所以开发出一套能实时预测农作物虫情的系统是非常重要的事情。对农作物病害防治的最好方法就是能及时地准确地预测害虫成长,只有准确的预测虫情的发生周期、覆盖量大小和危害程度,从而做到有目标及时的预防,把农作物害虫的影响控制在最低范围,既不会因害虫的危害而造成伤害,也不会因预防不当导致农药的浪费。
1.2国内水稻害虫预测的介绍
1.2.1水稻害虫预测的分类
(一)按预测内容分:
1、发生期预测:预测某种虫害的某生态活虫龄的危害期或出现。
2、发生量预测:需常年坚持搜集资料
3、迁飞害虫预测:根据发生地迁飞害虫的数目、种类、动态特性特点,加上环境变化、天气监测数据,从而做到对害虫迁飞时期、数量、发生区域的预测。
(二)按预测时间长短分:
1、短期预测:预测的期限在二十天左右。
2、中期预测:预测期限为一个季度。
3、长期预测:预测期限为一个季度以上,害虫繁殖生长的时间不同和物种种类决定预测时期的周期。如果繁殖时间速度快、生殖周期短,相应的预测期限就很短,反过来就很长,甚至超过一年。
1.2.2 水稻害虫预测的方法
(一)统计法:
主要思想是根据先验知识来模拟事件的发生规律,对与水稻虫情预测可以根据前几年的观测获得的虫情资料,分别记录每一时期虫情危害程度与气候因素、地质因素的关系,可以将每一时期的影响因素和危害程度设为一个样本,然后根据大量的样本通过神经网络等方法预测虫情的发生量。
(二)实验法:
主要依据各虫害的生物周期作为预测依据进行预测。虫害的生理周期可以通过当前天气预报所提供的气象信息来预测。同时还可以用实验法研究环境、营养、宿敌等因素对繁殖速率和虫害发生量的影响,可以为统计的方法提供样本特性。
(三)观测法:
直接通过观测水稻虫情变化,记录其变化的周期、发育高峰时期、危害程度等。
1.3本文的研究线路
随着人工智能技术的快速发展,给农作物虫情预测提供了很多新方法,神经网络具有自学习和自适应等特征,并且又具有很强的非线性逼近能力,所以它不用建立复杂的非线性系统的显含关系和数学模型就可以避免许多人为因素的影响,也可以克服传统定量预测方法的许多局限及面临的困难。
在实际应用中,利用BP神经网络模型占十之八九。BP网络是神经网络中活跃程度最大、效果最明显的误差反向传播算法。它可以渐进任意一个连续函数,因此对于那些复杂输入的,诸如有很大的未知性、非单一输入、非线性等问题,对于多层BP网络就可以进行分析。
本文主要由以下几部分组成:
(一)掌握水稻虫害的相关知识,搜集水稻虫害发生量与外界因素(日照时数、降
量、平均气温、最低气温)之间关系的资料。
(二)设计BP网络的结构:将BP网络设置为三层。其中输入层有4个节点,分别
代表四个外界自然因素。输出层也有4个节点,分别代表水稻虫情危害的四个程度。利用最速下降算法对水稻虫情进行预测。
(三)学习Matlab语言,利用合适的工具编写BP网络。输入部分样本进行训练。
(四)将余下的样本作为预测样本,检验该BP网络的正确率。
第一章 BP神经网络
BP网络是一种多层前向型神经网络,其神经元的传递是S型函数,输出量为0~1的连续量,它可以实现从输入到输出的任意非线性映射。由于权值的调整采用反向传播学习算法,因此也常称其为BP网络。
BP网络主要用于以下四方面:
1)函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近一个函数;
2)模式识别:用一个特定的输出矢量将它与输入矢量联系起来;
3)分类:把输入矢量以所定义的合适方式进行分类;
4)数据压缩:减少输出矢量维数以便于传输或存储。
2.1 BP神经网络模型
BP网络是基于BP误差传播算法的多层前馈网络,多层BP网络不仅有输入节点、输出节点,而且还有一层或多层隐含节点。三层BP网络的拓扑结构如图2-1。包括输入层、输出层和一个隐含层。一个神经元模型如图2-2.各神经元与下一层所有的神经元联结,同层各神经元之间无联结,用箭头表示信息的流动。
2.2 BP神经网络算法
在确定了BP网络的结构后,要通过输入输出样本集对网络进行训练,即对网络的阈值和权值进行学习和修正,使得网络实现给定的输入、输出映射关系。
BP网络的学习过程分为两个阶段:第一个阶段是输入已知学习样本,通过设置的网络结构和前一次迭代的权值和阈值,从网络第一层向后计算各神经元的输出。第二个阶段是对权值和阈值进行修改,从最后一层向前计算各权值和阈值对总误差的影响,据此对各权值和阈值进行修改。以上两个过程反复交替,直到达到收敛为止。
现以如图2-1所示的三层BP网络为例,进行算法推导。当网络输出与期望输出不相等时,存在输出误差E,定义如下:
📣 部分代码
<span style="color:#333333"><span style="background-color:#fafafa"><code>%% 清空环境变量</code><code>warning off % 关闭报警信息</code><code>close all % 关闭开启的图窗</code><code>clear % 清空变量</code><code>clc % 清空命令行</code><code></code><code>%% 导入数据</code><code>res = xlsread('数据集.xlsx');</code><code></code><code>%% 划分训练集和测试集</code><code>temp = randperm(357);</code><code></code><code>P_train = res(temp(1: 240), 1: 12)';</code><code>T_train = res(temp(1: 240), 13)';</code><code>M = size(P_train, 2);</code><code></code><code>P_test = res(temp(241: end), 1: 12)';</code><code>T_test = res(temp(241: end), 13)';</code><code>N = size(P_test, 2);</code><code></code><code>%% 数据归一化</code><code>[p_train, ps_input] = mapminmax(P_train, 0, 1);</code><code>p_test = mapminmax('apply', P_test, ps_input);</code><code>t_train = ind2vec(T_train);</code><code>t_test = ind2vec(T_test );</code></span></span>
⛳️ 运行结果
🔗 参考文献
本程序参考以下中文EI期刊,程序注释清晰,干货满满。
[1]朱凯,王正林.精通MATLAB神经网络[M].北京:电子工业出版社,2010:115.
[2]李永国.智能预测控制及其MATLAB实现[M].北京:电子工业出版社 2005:33.