毕业设计论文基于matlab的bp神经网络的仿真与实现内容摘要:
训练时间设置为 50 训 练精度设置为 001 其余参数使用缺省值训练后得到的误差变化过程如图 10 所示 图 33 将未训练网络进行训练的训练过程 hs 50 网络训练时间设置为 50 001 网络训练精度设置为 001 train pt 开始训练网络 TRAINLMcalcjx Epoch 050 MSE 927774001 Gradient 1331221e010 TRAINLMcalcjxEpoch350MSE000127047001Gradient003375551e010 TRAINLM Performance goal met 从以上结果可以看出网络训练速度很快经过一次循环跌送过程就达到了要求的精度 001 步骤 4 网络测试 对于训练好的网络进行仿真 y2 sim p figure plot ptpy1py2 title 训练后网络的输出结果 xlabel 时间 ylabel 仿真输出 绘制网络输出曲线并与原始非线性函数曲线以及未训练网络的输出结果曲线相比较比较出来的结果如图 11 所示 图 34 训练后网络的输出结果 其中 代表要逼近的非线性函数曲线 168。 168。 168。 代表未经训练的函数曲线 ――― 代表经过训练的函数曲线 从图中可以看出得到的曲线和原始的非线性函数曲线很接近这说明经过训练后 BP 网络对非线性函数的逼近效果比较好 不同频率下的逼近效果 改变非线性函数的频率和 BP 函数隐层神经元的数目对于函数逼近的效果有一定的影响网络非线性程度越高对于 BP 网络的要求越高则相同的网络逼近效果要差一些隐层神经元的数目对于网络逼近效果也有一定影响一般来说隐层神经元数目越多则 BP 网络逼近非线性函数的能力越强 下面通过改变频率参数和非线性函数的隐层神经元数目来加以比较证明 1 频 率参数设为 k 2 当隐层神经元数目分别取 n 3n 6 时得到了训练后的网络输出结果如图 1213 所示 图 35 当 n 3 时训练后网络的输出结果 图 36 当 n 6 时训练后网络的输出结果 其中 代表要逼近的非线性函数曲线 168。 168。 168。 代表未经训练的函数曲线 ――― 代表经过训练的函数曲线 2 频率参数设为 k 4 当隐层神经元数目分别取 n 6n 8 时得到了训练后的网络输出结果如图 1415 所示 图 37 当 n 6 时训练后网络的输出结果 图 38 当 n 8 时训练后网络的输出结果 其中 代表要逼近的非线性函数曲线 168。 168。 168。 代表未经训练的函数曲线 ――― 代表经过训练的函数曲线 3 频率参数设为 k 8 当隐层神经元数目分别取 n 10n 15 时得到了训练后的网络输出结果如图 1617 所示 图 39 当 n 10 时训练后网络的输出结果 图 310 当 n 15 时训练后网络的输出结果 其中 代表要逼近的非线性函数曲线 168。 168。 168。 代表未 经训练的函数曲线 ――― 代表经过训练的函数曲线 讨论 通过上述仿真结果可知当 k 1n 3 时 k 2n 6 时 k 4n 8 时 k 8n 15 时 BP 神经网络分别对函数取得了较好的逼近效果由此可见 n 取不同的值对函数逼近的效果有很大的影响改变 BP网络隐层神经元的数目可以改变 BP神经网络对于函数的逼近效果隐层神经元数目越多则 BP 网络逼近非线性函数的能力越强 33 仿真实验 BP 神经网络 MATLAB 设计 由于在隐含层的神经元个数可以随意调整的前提下单隐含 层的 BP 神经网络可以逼近任意的非线性映射输入层和输出层神经元个数为 1 只有一个隐含层其个数根据上述的设计经验公式和本例的实际情况选取 916 之间下面的隐含层神经元个数可变的 BP 神经网络通过误差和训练步数对比确定隐含层个数并检验隐含层神经元个数对网络性能的影响下面是相关 MATLAB 程序段 选取输入变量 x 取值范围 x 40014 输入目标函数 y1 sin 12 pix sin pix 隐含层的神经元数目范围 s 916 欧氏距离 res 18 选取不同的隐含层神经元个数进行网络测试 for i 18 建立前向型 BP 神经网络输入层和隐含层激励函数为 tansig 输出层为purelin 训练函数为 trainlm 也是默认函数 newff min x [1s i 1] tansigtansigpurelin trainlm 训练步数最大为 2020 hs 2020 设定目标误差为 000001 000001 进行函数训练 train xy1 对训练后的神经网络进行仿真 y2 sim x 求欧式距离判定隐含层神经元个数及网络性能 err y2y1 res i norm err end 用该同一程序在三个不同时刻运行结果及分析如下 表 31 隐含层不同神经元个数网络训练误差及学习步长 某时刻一 神经元个数 9 10 11 12 13 14 15 16 网络误差 01432 31806 48624 00880 00867 00884 00859 00841 学习步长 2020 2020 2020 275 640 241 66 25 某时刻二 神经元个数 9 10 11 12 13 14 15 16 网络误差 00895 01068 00895 01016 00894 00889 00881 48423 学习步长 1156 2020 1146 2020 287 102 79 2020 某时刻三 神经元个数 9 10 11 12 13 14 15 16 网络误差 00895 00867 00878 10734 00895 00890 00895 00886 学习步长 449 66 60 2020 1512 567 42 53 由此可见选择隐含层神经元数目为 15 是最佳选择不仅误差小学习步长短而且性能稳定也可以看出并非隐含层 神经元的数目越多网络的性能就越好 各种 BP 学习算法 MATLAB 仿真 根据上面一节对 BP 神经网络的 MATLAB 设计可以得出下面的通用的 MATLAB程序段由于各种 BP 学习算法采用了不同的学习函数所以只需要更改学习函数即可 MATLAB 程序段如下 x 40014 y1 sin 12 pix sin pix trainlm 函数可以选择替换 newff min x [1151] tansigtansigpurelin trainlm hs 2020 000001 train xy1 y2 sim x err y2y1 res norm err 暂停按任意键继续 Pause 绘图原图蓝色光滑线和仿真效果图红色号点线 plot xy1 hold on plot xy2r 注意由于各种不确定因素可能对网络训练有不同程度的影响产生不同的效果 标准 BP 算法 traingd 图 311 标准 BP 算法的训练过程以及结果原图蓝色线仿真图红色号线 增加动量法 traingdm 图 312 增加动量法的训练过程以及结果原图蓝色线仿真图红色号线 弹性 BP 算法 trainrp 图 313 弹性 BP 算法的训练过程以及结果原图蓝色线仿真图红色号线 动量及自适应学习速率法 traingdx 图 314 动量及自适应学习速率法的训练过程以及结果原图蓝色线仿真图红色号线 共轭梯度法 traincgf traingd 2020 0134968 增加动量法traingdm 2020 0108883 弹性 BP 算法 trainrp 2020 00135652 动量及自适应学习速率法 trangdx 2020 00761264 共轭梯度法 traincgf 769 000499915 LevenbergMarquardt 法 trainlm 61 00000098727 结论与分析 从仿真结果可以看出标准 BP算法增加动量发弹性 BP算法动量及自适应学习速率法的收敛速度都不如共轭梯度法和 LevenbergMarquardt法 LM算法收敛速度明显的快从仿真结果和均方误差综合来看只有 LM 算法达到了目标误差可见对高要求的误差来说 LM 算法的优势要明显的多其余均未达到目标误差从均方误差的效果来看所仿真的 BP 算法的优劣从优到劣顺序依次为 LM 算法共轭梯度法弹性 BP 算法动量及自适应学习速率法增加动量 法标准 BP 算法 从仿真效果图可以看出 LM 算法的效果最好其次是共轭梯度法其余均有不同范围内的失真从误差曲线来看 LM 算法达到了目标误差较高的误差标准 BP 算法的误差曲线较粗是因为较小范围振荡产生锯齿在图形中由于间距加大图形不断重叠而成收敛速度很慢增加动量法弹性 BP 算法动量及自适应学习速率法的误差曲线较为平滑在刚开始收敛较快在训练步数增加的时候曲线趋于水平收敛速度比较慢共轭梯度法和 LM 算法的误差曲线变化较大且产生局部锯齿状说明不是最优仍需要进行优化其中 LM 算法达到了目标误差共轭梯度法在相邻迭代的正交方向搜索 综合误差曲线可知当接近极值时会产生锯齿形振荡 再根据前面对各种 BP改进算法的描述可知弹性 BP算法不需要进行搜索需要内存比较小因此在一些大型网络中比较适用但是需要很长的训练时间对收敛速度要求不高时也可使用动量及自适应学习速率法在小型网络中共轭梯度法仅次于 LM算法但是 LM算法需要更大的内存做临时存储对于较大复杂的网络和内存受限的设备来说不是很好的选择但是对于小型网络来说却是首要选择对训练时间允许的条件下共轭梯度法和弹性 BP 算法是对复杂大型网络较好的选择 其中共轭梯度法在训练的时候训练次数为 769次均方误差为 000499915均未达到所设定的要求产生了 Minimum step size reached performance goal was not met 的结果可能意味着子区间的长度与计算机舍入误差相当无法继续计算了原因可能是有奇点无限小且不实际存在另外也存在是初值问题理论上得知共轭梯度法最大局限是依赖于初值在有限的迭代次数内可能既不能搜索到全局极值也不能搜索到局部极值因此该算法适用于精度要求比较低的高维网络之中 调整初始权值和阈值的仿真 初始权值设置影响因素对 BP神经网络的影响下面首先通过 MATLAB程序段一通过随机设置权值初始化网络方式获取训练好的阈值和权值作为 MATLAB 程序段二的初始化值由此进行仿真分析 ① MATLAB 程序段一 x 40014 y1 sin 12 pix sin pix newff min x [1151] tansigtansigpurelin trainlm hs 2020 000001 初始化网络用 newff 创建网络其权值和阈值初始化函数的默认值是 initnw initnw 据 NguyenWidrow 规则初始化算法对网络层的权值和阈值进 行初始 化该算法的初始化值可以使网络层中每个神经元的作用范围近似地在 网络层的输入空间均匀分布 与纯随机初始化权值和阈值的方法比较。毕业设计论文基于matlab的bp神经网络的仿真与实现
相关推荐
adc_t 0。 nTemp sum1/ /n。 //标定系数 if nTemp int nTemp nTemp+ 1。 //四舍五入 if clr_flag 0 //开机清零 clr_flag 1。 offset nTemp。 force nTemp offset。 if force 0 force 0。 nTemp0 int force/1000。 //将结果除以 1000 nTemp1
分 PLC采用开关式稳压电源供电。 ⑤ 通信端口 PLC 的 CPU 模块上至少有一个通信端口。 通过这个通信端口, PLC 可以直接和编程器或上位机相连。 ⑥ 编程器 编程器用来生成用户程序,并用它进行编辑、检查、修改和监控用户程序的执行情况。 手持式编程器不能直接输入和编辑梯形图,只能输入和编辑指令表程序。 一般用于小型机或用于现场调试和维护。 使用编程软件可以在计算机
塞。 但是却不像定时控制,能用 数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及 时停车或启动。 本次课程设计采用定时加中断控制的方式进行 ,对两个方向车辆的通行时间 分别计时 ,可随意进行更改双向的通行时间。 第六章 交通灯设计心得与体会 11 此次实习可以说是获益匪浅。 通过查阅了很多资料,了解 了许多汇编程序的 思想,扩展了自己的视野
够自动识别洗衣物人重量、质地、污脏性质和程度,采用模糊控制技术来选择合适的水位、洗涤时间、水流程序等,其性能已经达到国外同类产品的水平。 ⑸ 模糊电动剃刀 日本三洋、松下公司推出了模糊控制电动剃刀,通过利用传感器分析胡须的 生长情况和面部轮廓,自动调整刀片,并选择最佳的剃削速度。 在 工业炉方面 、 石化方面 、 煤矿行业 、 食品加工行业 领域,模糊控制应用也很广泛。 本文的研究目的和内容
走刀〉 rmmf 刀具为 039。 ,4515 rr kkYT t=3600s=60min 理论切削速度 : vx Yvm v fat Cvsmm i 177 确定机床主轴转速 : )m i n215( rsrd vn ww 选择机床转速 srrn s in200 实际切削速度 )m i ( msmdnv c
他跟 ODBC 兼容的产品。 这种方法允许开发者把一个成熟的应用的数据移动到一台更大功率的服务器而没有已经在适当的位置牺牲发展。 很多 Microsoft Access 的开发者使用 Leszynski 命名约定,虽然这不普遍;它是一次编程大会,并非一个 DBMS 实施的规章。 3 系统分析 系统分析就是运用系统的观点和方法,对现行系统进行目标分析、环境分析和数据分析