欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    循迹算法.doc

    • 资源ID:2396646       资源大小:123KB        全文页数:9页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    循迹算法.doc

    1 路径识别算法11 抛物插值法拉格朗日插值多项式:当n=2时,此公式称为抛物插值。设,且,代入拉格朗日插值多项式可得抛物线方程,并对抛物线方程求导数,令导数等于零,可得:就是所要得到的车模偏离跑道中心的距离。12 最小二乘法为保持精度,令m=4,选择函数类型,上式可写成:令,已知是偏移量,把上述式子的解代入化简得:2 控制算法21数字PID控制211 PID控制规律:比例环节。跟随性好,能即时成比例地反映控制系统的偏差信号e(t),Kp增大,系统动作灵敏。在系统稳定的情况下,增大Kp,有利于减小稳态误差,提高系统控制精度,但随着Kp过大时,系统趋于不稳定。积分环节。由上式知,它是对误差e(t)进行积分,用于消除静差,提高系统的无差度。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<stdio.h>#include<math.h>main()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; 显然,PID的参数是非常难以确定的(当模型是不精确的时候)。积分分离PID算法YNNNYYYNYN入口采样v(k)v0=0?e(k)=v(k)-v0(k)e(k)<=1?v(k)<=2?输出u(k)=A0 v(k)e(k)<=e0?设置A、B、Ce(k-1)=e(k-2)=0u(k)=u0(k)u(k)=Ae(k)-Be(k-1)+Ce(k-2)u(k)=u(k-1)+u(k)u(k)=0e(k-1)->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控制参数上,根据系统的响应过程和控制目标期望值,自动修正初定的PID参数,直至系统的控制指标符合要求。22 模糊控制221 模糊化模糊化的主要功能是根据输入变量的隶属度函数,求出精确的输入值相对于输入变量各语言值的隶属度。简单地说,模糊化过程就是在隶属度图形中,已知X轴值求Y轴值的过程。最后得到一个集合,将它作为推理机的输入。其中,重要的一点是如何去确定隶属度函数。通常有以下几种方法:(1) Delphii法;(2)模糊统计法;(3)增量法;(4)因素加权法。222 模糊规则推理模糊规则推理是模糊控制器的核心,它的输入输出都是模糊量。模糊化后得到的集合作为输入,输出量是输出变量各语言值的隶属度。完成这一步骤的必要条件是确定输出模糊变量的隶属度函数及建立模糊规则库。通常把规则库做成表格的形式。模糊推理的方法有多种,常用的MAXMIN法:(1) 由于规则前件间用AND操作符连接,因此,每一条规则的强度等于前件中的最小值。这个值就是此规则的强度。(2) 没有相同后件的规则强度就是由(1)所得到的强度;当有相同后件时,模糊输出取其最大值。223 反模糊化模糊规则推理的输出是集合,必需经反模糊化,将模糊的控制量变为精确的控制量。常用方法:最大隶属度法,重心法(加权平均法)。其中重心法能较多地反映有效信息。224 模糊规则推理的数学理论当输入是在某一范围内时,可把它离散化(输入将被压缩或扩大),并将输入输出隶属度函数制成表格的形式(矩阵)。如果推理规则的形式是If A and B then U , 推理过程:(1)。笛卡尔积求模糊矩阵D=AB;(2)。将D改写为D=d11,d12,.d1n,d21,d22,.dnm;(3)。求关系矩阵R=DC;若模糊化后得E,则输出的模糊量是E0C;如果论域较大,按这种形式编程,计算量将非常巨大。当硬件不高档时,实用性不强。所以要预先计算出控制表,以此减少计算量。由于输入输出都经过了离散化,控制较生硬。#include<stdio.h>int 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;i<3;i+) for(j=0;j<5;j+) rij=0;for(i=0;i<5;i+) xti=0;for(i=0;i<3;i+) xm1=0;for(i=0;i<5;i+) Ti.u=0; Ti.t=0; printf("input temperature (0-120) : "); /*程序中所用的输入输出函数都只是用于调试*/scanf("%f",&x1);printf("input moisture (0-100) : ");scanf("%f",&x2);printf("n");if(x1>=0.0&&x1<=35.0) /*_ Fuzzy-Temperature_ */xt0=1.0;if(x1>=35.0&&x1<=47.0)xt0=-1.0/12*(x1-47);if(x1>=40.0&&x1<=55.0)xt1=1.0/15*(x1-40);if(x1>=55.0&&x1<=70.0)xt1=-1.0/15*(x1-70);if(x1>=60.0&&x1<=72.0)xt2=1.0/12*(x1-60);if(x1>=72.0&&x1<=84.0)xt2=-1.0/12*(x1-84);if(x1>=75.0&&x1<=87.0)xt3=1.0/12*(x1-75);if(x1>=87.0&&x1<=99.0)xt3=-1.0/12*(x1-99);if(x1>=90.0&&x1<=102.0)xt4=1.0/12*(x1-90);else if(x1>=102.0)xt4=1.0;for(i=0;i<5;i+)printf("%-10f",xti);printf("n");printf("n");if(x2>0.0&&x2<=9.0) /*_Fuzzy-Moisture_*/xm0=1.0;if(x2>=9.0&&x2<=18.0)xm0=-1.0/9*(x2-18);if(x2>=10.0&&x2<=16.0)xm1=1.0/7*(x2-10);if(x2>=18.0&&x2<=26.0)xm1=1.0;if(x2>=26.0&&x2<=30.0)xm1=-1.0/4*(x2-30);if(x2>=26.0&&x2<=40.0)xm2=1.0/14*(x2-26);else if(x2>=40.0)xm2=1.0;for(i=0;i<3;i+)printf("%-10f",xmi);printf("n");printf("n");for(i=0;i<=2;i+) /*_MAX-MIN_*/ if(xmi!=0) for(j=0;j<=4;j+) if(xtj>=xmi) rij=xmi; else rij=xtj; for(i=0;i<3;i+) for(j=0;j<5;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;i<4;i+) printf("%-10f",Ti.u); printf("%-10f",Ti.t); printf("n");for(i=0;i<4;i+) if(Ti.u!=0) for(j=0;j<4;j+) if(Tj.t=Ti.t&&Tj.u>Ti.u) Ti.u=0; for(i=0;i<4;i+) printf("%-10f",Ti.u); printf("%-10f",Ti.t); printf("n");for(i=0;i<4;i+) /*_DeFuzzy-interface_*/ a=a+Ti.u*Ti.t; b=b+Ti.u; G=a/b;printf("G=%-10fn",G);用函数的方式进行模糊化,能得到连续的量,因此,输出也是连续的。缺点是计算量较大。23 基于单神经元的PID控制#include<stdio.h>#include<math.h>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,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); 运行此程序,发现这种算法收敛速度很慢(当K,Kp,Kd,Ki,w1,w2,w3 的取值不十分理想时,其中w1,w2,w3 常常是随机数),与传统PID相似,这些参数是很难确定的。由于学习时间过长,不适合在时变的干扰较大的实时系统中直接使用。24 BP神经网络

    注意事项

    本文(循迹算法.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开