循迹算法.doc

上传人:laozhun 文档编号:2396646 上传时间:2023-02-17 格式:DOC 页数:9 大小:123KB
返回 下载 相关 举报
循迹算法.doc_第1页
第1页 / 共9页
循迹算法.doc_第2页
第2页 / 共9页
循迹算法.doc_第3页
第3页 / 共9页
循迹算法.doc_第4页
第4页 / 共9页
循迹算法.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

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

1、1 路径识别算法11 抛物插值法拉格朗日插值多项式:当n=2时,此公式称为抛物插值。设,且,代入拉格朗日插值多项式可得抛物线方程,并对抛物线方程求导数,令导数等于零,可得:就是所要得到的车模偏离跑道中心的距离。12 最小二乘法为保持精度,令m=4,选择函数类型,上式可写成:令,已知是偏移量,把上述式子的解代入化简得:2 控制算法21数字PID控制211 PID控制规律:比例环节。跟随性好,能即时成比例地反映控制系统的偏差信号e(t),Kp增大,系统动作灵敏。在系统稳定的情况下,增大Kp,有利于减小稳态误差,提高系统控制精度,但随着Kp过大时,系统趋于不稳定。积分环节。由上式知,它是对误差e(t

2、)进行积分,用于消除静差,提高系统的无差度。Ti过小,积分作用强,系统将不稳定,振荡次数增多;Ti过大,积分作用小,影响控制精度。微分环节。反映偏差信号的变化速率,并能在偏差信号值变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度。对于滞后时间长的系统应增大微分的作用。212 流程图增量式PID算法流程图设置A、B、C、f(k)f(k)=Ae(k)-Be(k-1)+Ce(k-2)设置 e(k-1)=e(k-2)=0输出f(k)=f(k-1)+f(k)e(k-1)-e(k-2), e(k)-e(k-1)出口入口#include#includemain()float a,b,

3、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; 显然,PID的参数是非常难以确定的(当模型是不精确的时候)。积分分离PID算法YNNNYYYNYN入口采样v(k)v0=0?e(k)=v

4、(k)-v0(k)e(k)=1?v(k)=2?输出u(k)=A0 v(k)e(k)e(k-2), e(k)-e(k-1)设置A1、B1e(k-1)=0u(k)=A1e(k)+B1e(k-1)e(k)-e(k-1)u(k)=Umax?输出Umax输出u(k)关机213 PID参数的整定:(常用方法)1 扩充临界比例度法;2 扩充响应曲线法;3 归一参数整定法;利用人工智能方法将人工整定PID参数的调整经验作为知识和推理规则存入计算机系统中,从而自动实现对PID参数的最佳调整。PID控制参数的自动整定:1 初始确定PID控制参数;2在初定的PID控制参数上,根据系统的响应过程和控制目标期望值,自动

5、修正初定的PID参数,直至系统的控制指标符合要求。22 模糊控制221 模糊化模糊化的主要功能是根据输入变量的隶属度函数,求出精确的输入值相对于输入变量各语言值的隶属度。简单地说,模糊化过程就是在隶属度图形中,已知X轴值求Y轴值的过程。最后得到一个集合,将它作为推理机的输入。其中,重要的一点是如何去确定隶属度函数。通常有以下几种方法:(1) Delphii法;(2)模糊统计法;(3)增量法;(4)因素加权法。222 模糊规则推理模糊规则推理是模糊控制器的核心,它的输入输出都是模糊量。模糊化后得到的集合作为输入,输出量是输出变量各语言值的隶属度。完成这一步骤的必要条件是确定输出模糊变量的隶属度函

6、数及建立模糊规则库。通常把规则库做成表格的形式。模糊推理的方法有多种,常用的MAXMIN法:(1) 由于规则前件间用AND操作符连接,因此,每一条规则的强度等于前件中的最小值。这个值就是此规则的强度。(2) 没有相同后件的规则强度就是由(1)所得到的强度;当有相同后件时,模糊输出取其最大值。223 反模糊化模糊规则推理的输出是集合,必需经反模糊化,将模糊的控制量变为精确的控制量。常用方法:最大隶属度法,重心法(加权平均法)。其中重心法能较多地反映有效信息。224 模糊规则推理的数学理论当输入是在某一范围内时,可把它离散化(输入将被压缩或扩大),并将输入输出隶属度函数制成表格的形式(矩阵)。如果

7、推理规则的形式是If A and B then U , 推理过程:(1)。笛卡尔积求模糊矩阵D=AB;(2)。将D改写为D=d11,d12,.d1n,d21,d22,.dnm;(3)。求关系矩阵R=DC;若模糊化后得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

8、 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;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&x

9、2=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(xmi!=0) for(j=0;j=xmi) rij=xmi; else rij=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+) pr

10、intf(%-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+) printf(%-10f,Ti.u); printf(%-10f,Ti.t); printf(n);for(i=0;i4;i+) /*_DeFuzzy-interface_*/ a=a+Ti.u*Ti.t; b=b+Ti.u; G=a/b;printf(G=%-10fn,G);用函数的方式进行模糊化,能得到连续的量,因此,输出也是连续的。缺点是计算量较大。23 基于单神经

11、元的PID控制#include#includemain() 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,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);

12、 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); 运行此程序,发现这种算法收敛速度很慢(当K,Kp,Kd,Ki,w1,w2,w3 的取值不十分理想时,其中w1,w2,w3 常常是随机数),与传统PID相似,这些参数是很难确定的。由于学习时间过长,不适合在时变的干扰较大的实时系统中直接使用。24 BP神经网络

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号