循迹算法算法.docx

上传人:牧羊曲112 文档编号:5285791 上传时间:2023-06-22 格式:DOCX 页数:8 大小:124.03KB
返回 下载 相关 举报
循迹算法算法.docx_第1页
第1页 / 共8页
循迹算法算法.docx_第2页
第2页 / 共8页
循迹算法算法.docx_第3页
第3页 / 共8页
循迹算法算法.docx_第4页
第4页 / 共8页
循迹算法算法.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《循迹算法算法.docx》由会员分享,可在线阅读,更多相关《循迹算法算法.docx(8页珍藏版)》请在三一办公上搜索。

1、1路径识别算法1. 1抛物插值法拉格朗日插值多项式:yk当 n=2 时,0,j物插x , x0代入拉格朗日插值多项式可得抛物线方程, 对抛物线方程求导数,令导数等于零,xix0 h, xg可得:h y02。就是所要得到的车模偏离跑道中心的距离。1. 2最小二乘法Xix.ixi 2为保持精度已知xi n%”令m=4,选择函数类型x.inx.in ix.12 nxc,上上式可写成:a0aian4x.ixx.ixi2xxi 2xi3x234x0xixix0是偏移量,2控制算法2. 1数字PID控制2. 1. 1 PID控制规律:= Kph, x2x02 h, x;把上述式子的解代入化简得:ii Y。

2、I0 y3 yiyiy4y4知)+ 普比例环节。跟随性好,能即时成比例地反映控制系统的偏差信号e(t), Kp增大,系统动作 灵敏。在系统稳定的情况下,增大Kp,有利于减小稳态误差,提高系统控制精度,但随着 Kp过大时,系统趋于不稳定。积分环节。由上式知,它是对误差e(t)进行积分,用于消除静差,提高系统的无差度。Ti过 小,积分作用强,系统将不稳定,振荡次数增多;Ti过大,积分作用小,影响控制精度。微分环节。反映偏差信号的变化速率,并能在偏差信号值变得太大之前,在系统中引入一个 有效的早期修正信号,从而加快系统的动作速度。对于滞后时间长的系统应增大微分的作用。2. 1. 2流程图增量式PID

3、算法流程图#include#includemain()float a,b,c,u=1,u1;int i;float e0,e1,e2,v;printf(input v:);/*程序中所用的输入输出函数都只是用于调试*/scanf(%f”,&v);a=1.01;b=0;c=0.01;e1=e2=0;e0=v;for(i=0;i=20;i+)u1=a*e0+b*e1+c*e2;u=u+u1;e2=e1;e1=e0;printf(u=%-10f”,u);printf(i=%-10dn”,i);u=3*u+7;e0=v-u;A显然,PID的参数是非常难以确定的(当模型是不精确的时候)。积分分离PID算

4、法2. 1. 3 PID参数的整定:(常用方法)1.扩充临界比例度法;2. 扩充响应曲线法;3. 归一参数整定法;利用人工智能方法将人工整定PID参数的调整经验作为知识和推理规则存入计算机系统中, 从而自动实现对PID参数的最佳调整。PID控制参数的自动整定:1. 初始确定PID控制参数;2. 在初定的PID控制参数上,根据系统的响应过程和控制目标期望值,自动修正初定的PID 参数,直至系统的控制指标符合要求。2. 2模糊控制2. 2. 1模糊化模糊化的主要功能是根据输入变量的隶属度函数,求出精确的输入值相对于输入变量各语言 值的隶属度。简单地说,模糊化过程就是在隶属度图形中,已知X轴值求Y轴

5、值的过程。 最后得到一个集合,将它作为推理机的输入。其中,重要的一点是如何去确定隶属度函数。 通常有以下几种方法:(1) Delphii法;(2)模糊统计法;(3)增量法;(4)因素加权法。2.2.2 模糊规则推理模糊规则推理是模糊控制器的核心,它的输入输出都是模糊量。模糊化后得到的集合作为输 入,输出量是输出变量各语言值的隶属度。完成这一步骤的必要条件是确定输出模糊变量的 隶属度函数及建立模糊规则库。通常把规则库做成表格的形式。模糊推理的方法有多种,常用的MAXMIN法:(1)由于规则前件间用AND操作符连接,因此,每一条规则的强度等于前件中的最小 值。这个值就是此规则的强度。(2)没有相同

6、后件的规则强度就是由(1)所得到的强度;当有相同后件时,模糊输出取 其最大值。2. 2. 3反模糊化模糊规则推理的输出是集合,必需经反模糊化,将模糊的控制量变为精确的控制量。常用方 法:最大隶属度法,重心法(加权平均法)。其中重心法能较多地反映有效信息。2. 2. 4模糊规则推理的数学理论当输入是在某一范围内时,可把它离散化(输入将被压缩或扩大),并将输入输出隶属度函数制成表格的形式(矩阵)。如果推理规则的形式是If A and B then U ,推理过程:(1)。笛卡尔积求模糊矩阵D=AxB;(2) 。将 D 改写为 D=d11,d12,d1n,d21,d22,.dnm;(3)。求关系矩阵

7、R=DxC;若模糊化后得E,则输出的模糊量是E0C;如果论域较大,按这种形式编程,计算量将非常巨大。当硬件不高档时,实用性不强。所以 要预先计算出控制表,以此减少计算量。由于输入输出都经过了离散化,控制较生硬。#includeint R35=60,60,60,60,20,40,40,40,20,20,20,20;struct ttfloat t;float u;main()int i,j,p=0;float a=0.0,b=0.0;float r35;float xt5;float xm3;struct tt T4;float G=0.0,x1,x2;for(i=0;i3;i+)for(j=0

8、;j5;j+)rij=0;for(i=0;i5;i+)xti=0;for(i=0;i3;i+)xm1=0;for(i=0;i=0.0&x1=35.0&x1=40.0&x1=55.0&x1=60.0&x1=72.0&x1=75.0&x1=87.0&x1=90.0&x1=102.0) xt4=1.0;for(i=0;i0.0&x2=9.0&x2=10.0&x2=18.0&x2=26.0&x2=26.0&x2=40.0) xm2 =1.0;for(i=0;i3;i+)printf(%-10f,xmi);printf(n);printf(n);for(i=0;i=2;i+)/*MAX-MIN*/if(

9、xmi!=0)for(j=0;j=xmi)rij=xmi;elserij=xtj;for(i=0;i3;i+)for(j=0;j5;j+) printf(%-10f,rij); printf(n);printf(n);for(i=0;i=2;i+)for(j=0;j=4;j+) if(rij!=0) Tp.u=rij;Tp.t=Rij; p+;for(i=0;i4;i+)printf(%-10f,Ti.u);printf(%-10f,Ti.t); printf(n);for(i=0;i4;i+)if(Ti.u!=0)for(j=0;jTi.u)Ti,u=0;for(i=0;i4;i+)prin

10、tf(%-10f,Ti.u);printf(%-10f,Ti.t);for(i=0;i4;i+)/*DeFuzzy-interface*/ a=a+Ti.u*Ti.t; b=b+Ti.u; G=a/b; printf(G=%-10fn”,G); A 用函数的方式进行模糊化,能得到连续的量,因此,输出也是连续的。缺点是计算量较大。2. 3基于单神经元的PID控制 #include #include main() int i=0;float k=0.8,ki=0.001,kd=0.00002,kp=3;float u=0,u0=0,e1=0,e0=0,e2;float p;float x1,x2,

11、x3,A;float w1=0.01,w2=0.02,w3=0.01;printf(input P :);/*程序中所用的输入输出函数都只是用于调试*/scanf(%f”,&p);e2=p-u;while(fabs(e2)=0.01) x1=e2; x2=e2-e1;x3=e2-2*e1+e0;A=fabs(w1+w2+w3);u=u0+k/A*(w1*x1+w2*x2+w3*x3);w1=w1+ki*x1*u*x1; w2=w2+kp*x1*u*x2; w3=w3+kd*x1*u*x3; u0=u; e0=e1; e1=e2;e2=p-u; i+;if(i=20) printf(u=%-18f”,u);printf(e2=%-18f”,e2);printf(i=%dn”,i);A运行此程序,发现这种算法收敛速度很慢(当K,Kp,Kd,Ki,w1,w2,w3的取值不十分理想时, 其中w1,w2,w3常常是随机数),与传统PID相似,这些参数是很难确定的。由于学习时间 过长,不适合在时变的干扰较大的实时系统中直接使用。2. 4 BP神经网络

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号