SHU智能系统控制课程笔记
前言
“物有本末,事有终始,知所先后,则近道矣”
——《大学·大学之道章》
院长上课,不敢作妖
什么是控制?
开环控制,无反馈
闭环控制,有反馈
线性系统总可以用线性微分方程描述
定常系统,时变系统
瞬态响应,稳态响应
基本要求:稳准好
传统控制方法包括经典控制和现代控制,是基于被控对象精确模型的控制方式。
经典控制
以传递函数为数学基础,主要研究单输入——单输出、线性定常系统的分析和设计问题。
传递函数
现代控制
以状态空间法为基础,主要用于研究具有较高性能控制要求的多变量变参数系统的最有控制问题。
第一章概论
知识点
1.如何理解智能控制的定义;
2.了解智能控制与传统自动控制间的关系;
3.深入掌握智能控制的学科结构理论,特别是智能控制四元交集结构理论的内涵。
智能控制的定义,肯定要考
1.1 智能控制的产生和发展
传统控制方法包括经典控制和现代控制,是基于被控对象精确模型的控制方式,缺乏灵活性和应变能力,适于解决线性、时不变性等相对简单的控制问题,难以解决对复杂系统的控制。
智能控制的概念
智能控制是一门交叉学科,著名美籍华人傅京逊教授1971年首先提出智能控制是人工智能与自动控制的交叉,即二元论。美国学者G.N.Saridis1977年在此基础上引入运筹学,提出了三元论的智能控制概念,即IC=AC∩AI∩OR
人脑的五大记忆模块:记忆工作模块,知觉关联模块,知觉记忆(感知?)模块,常识记忆模块,短时记忆模块
智能控制的发展
1966年,J.M.Mendal首先提出将人工智能技术应用于飞船控制系统的设计。
1971年,傅京逊首次提出智能控制这一概念,并归纳了三种类型的智能控制系统:人作为控制器,人-机结合作为控制器的控制系统,无人参与的自主控制系统。
1.2 智能控制的定义、特点和应用
如何判断是否有智能,选择
智能控制特点
学习功能
适应功能
自组织功能
优化功能
IC学派理论
符号主义,连接主义,行为主义。
智能控制分支
模糊逻辑控制。传统控制方法均是建立在被控对象精确数学模型基础上的,然而,随着系统复杂程度的提高,将难以建立系统的精确数学模型。
在工程实践中,人们发现,一个复杂的控制系统可由一个操作人员凭着丰富的实践经验得到满意的控制效果。这说明,如果通过模拟人脑的思维方法设计控制器,可实现复杂系统的控制,由此产生了模糊控制。
神经网络控制,面对复杂、非线性对象的控制,尤其是难以用模型或规则描述的对象。
智能算法,基于人工智能技术的搜索算法,有代表性的有遗传算法、粒子群算法、差分进化算法和蚁群算法等。
1.3 智能控制的结构理论(补充)
引入信息论IT。信息论参与智能控制的全过程,并对执行级起到核心作用。
第二章专家控制
传统控制理论的不足,在于它必须依赖于被控对象严格的数学模型,试图对精确模型来求取最优的控制效果。而实际的被控对象存在着许多难以建模的因素。
2.1 专家系统
传统控制理论的不足,在于它必须依赖于被控对象严格的数学模型,试图对精确模型来求取最优的控制效果。而实际的被控对象存在着许多难以建模的因素。
专家系统能处理定性的、启发式或不确定的知识信息,经过各种推理来达到系统的任务目标。
2.1.1 专家系统概述
专家系统是包含知识和推理的智能计算机程序。基本功能取决于所含知识,所以叫基于知识的系统。
发展历史
(1) 初创期(1965-1971年)
第一代专家系统DENLDRA和MACSMA的出现,标志着专家系统的诞生。其中DENLDRA为推断化学分子结构的专家系统,由专家系统的奠基人,Stanford大学计算机系的Feigenbaum教授及其研究小组研制。MACSMA为用于数学运算的数学专家系统,由麻省理工学院完成。
(2)成熟期(1972-1977年):
在此期间斯坦福大学研究开发了最著名的专家系统-血液感染病诊断专家系统MYCIN,标志专家系统从理论走向应用。另一个著名的专家系统-语音识别专家系统HEARSAY的出现,标志着专家系统的理论走向成熟。
(3)发展期(1978-现在)
在此期间,专家系统走向应用领域,专家系统的数量增加,仅1987年研制成功的专家系统就有1000种。
专家系统可以解决的问题一般包括解释、预测、设计、规划、监视、修理、指导和控制等。目前,专家系统已经广泛地应用于医疗诊断、语音识别、图象处理、金融决策、地质勘探、石油化工、教学、军事、计算机设计等领域。
2.1.2 专家系统的构成
考填空题
知识库
知识分为三类:事实性知识,过程性知识,控制性知识(元知识,知识的知识)。
推理机
用于对知识库中的知识进行推理来得到结论的“思维”机构。(用于记忆所采用的规则和控制策略的程序,使整个专家系统能够以逻辑方式协调地工作。)
推理方式有三种:正向推理,反向推理,双向推理。
人机接口
2.1.3 专家系统的建立
知识库设计
知识的表示方法:产生式规则
推理机设计
人机接口设计
2.2 专家控制系统
2.2.1 专家控制概述
瑞典学者K.J.Astrom在1983年首先把人工智能中的专家系统引入智能控制领域,于1986年提出“专家控制”的概念,构成一种智能控制方法。
2.2.2 专家控制的基本原理
专家控制试图在传统控制的基础上“加入”一个富有经验的控制工程师,实现控制的功能,它由知识库和推理机构构成主体框架,通过对控制领域知识(先验经验、动态信息、目标等)的获取与组织,按某种策略及时地选用恰当的规则进行推理输出,实现对实际对象的控制。
该控制器的任务和功能相对比较简单,但是需要在线、实时控制。
间接型专家控制器用于和常规控制器相结合,组成对生产过程或被控对象进行间接控制的智能控制系统。具有模拟(或延伸,扩展)控制工程师智能的功能。该控制器能够实现优化适应、协调、组织等高层决策的智能控制。按照高层决策功能的性质,间接型专家控制器可分为以下几种类型:
- 优化型专家控制器
- 适应型专家控制器
- 协调型专家控制器
- 组织型专家控制器
间接型专家控制器可以在线或离线运行。通常,优化型、适应型需要在线、实时、联机运行。协调型、组织型可以离线、非实时运行。
专家控制的功能
专家控制与专家系统的区别
知识表示
1、受控过程的知识:先验知识,动态知识。
2、控制、辨识、诊断知识
按照专家系统知识库的结构,有关知识可以分类组织,形成数据库和规则库,从而构成专家控制系统的知识源。
数据库的四部分:
事实,证据,假设,目标。
2.2.3 专家控制的关键技术及特点
(1)灵活性:根据系统的工作状态及误差情况,可灵活地选取相应的控制律;
(2)适应性:能根据专家知识和经验,调整控制器的参数,适应对象特性及环境的变化;
(3)鲁棒性:通过利用专家规则,系统可以在非线性、大偏差下可靠地工作。
2.3 专家PID控制
PID专家控制的实质是,基于受控对象和控制规律的各种知识,无需知道被控对象的精确模型,利用专家经验来设计PID参数。专家PID控制是一种直接型专家控制器。
r(t)是要稳定的值
n(t)/y(t)是当前输出值
e(t) = r(t) - y(t)
输入r(t)与输出y(t)进行比较,其差值e(t) = r(t) - y(t),经过PID控制器调整后输出电压控制信号u(t), u(t)经过被控对象后输出y(t).
P系数,放大器。
I稳态特性。
D动态特性。
$u(t)=K_pe(t)+K_I \int{e(t)dt} +K_D \frac{d e(t)}{dt}$
PID算法解析和公式推导 - 老司机带我飞的文章 - 知乎 https://zhuanlan.zhihu.com/p/129254220
专家PID控制器的本质在于通过偏差和偏差的增量来判断应采用的PID控制类型。
专家规则分为五种情况设计:
第三章模糊控制
3.1 概述
鲁棒性,就是比较皮实。。。确实很皮。。。
3.2 模糊集合及其运算
集合和隶属度函数
Zadeh 在1965年对模糊集合的定义为:给定论域U,U到[0,1]闭区间的任一映射$\mu_A$
$$\mu_A : U \to [0,1]$$
都能确定U的一个模糊集合A,$\mu_A$称为模糊集合A的隶属函数,它反映了模糊集合中的元素属于该集合的程度。
模糊集合是以隶属函数来描述的,隶属度的概念是模糊集合理论的基石。
当论域U为有限连续域时,Zadeh表示法为
$$A=\int$$
模糊集合的有关术语
台集合,论域U中所有使$\mu_A(x)>0$的x的全体。
$\alpha$截集,强$\alpha$截集和弱$\alpha$截集
正则模糊集合,$max\quad \mu_A(x)=1$
凸模糊集合
分界点
单点模糊集合
模糊集合的运算
模糊运算的基本性质
和集合运算的基本性质相同
3.3 隶属函数
3.4 模糊关系及其运算
第四章神经网络控制
第五章智能算法
资料
上机实验
实验一:开环系统与闭环系统的抗扰动性能对比
实验目的
设输入电压为0时,扰动信号为Td=1/s,分别比较在无转速计开环控制状态下和有转速计闭环控制状态下电机输出转速稳定误差。
实验原理
传统控制方法包括经典控制和现代控制,是基于被控对象精确模型的控制方式。经典控制以传递函数为数学基础,主要研究单输入——单输出、线性定常系统的分析和设计问题。系统的传递函数是指线性定常系统在零初始条件下微分方程中的输出量的拉氏变换与输入量的拉氏变换之比。线性定常系统可以使用叠加原理处理。
经分析,开环控制无反馈,闭环控制有反馈,所以转速计闭环控制状态下电机的抗扰动性能更佳,输出转速稳定误差更小,下面使用matlab进行实验。
实验过程和结果
opentach.m是开环控制系统的模拟实验代码
%opentach.m
%
Ra=1;Km=10;J=2;b=0.5;Kb=0.1;
num1=[1];den1=[J,b];sys1=tf(num1,den1);
num2=[Km*Kb/Ra];den2=[1];sys2=tf(num2,den2);
sys_o=feedback(sys1,sys2);
%
sys_o=-sys_o
%
[yo,T]=step(sys_o);
plot(T,yo)
title('Open-loop Disturbance Step Response')
xlabel('Time(sec)'),ylabel('\omega_o(rad/s)'),grid
%
yo(length(T))
实验结果如下图:
closetach.m是闭环系统的模拟实验代码
%closetach.m
%
Ra=1;Km=10;J=2;b=0.5;Kb=0.1;Ka=54;Kt=1;
num1=[1];den1=[J,b];sys1=tf(num1,den1);
num2=[Ka*Kt];den2=[1];sys2=tf(num2,den2);
num3=[Kb];den3=[1];sys3=tf(num3,den3);
num4=[Km/Ra];den4=[1];sys4=tf(num4,den4);
sysa=parallel(sys2,sys3);
sysb=series(sysa,sys4);
sys_c=feedback(sys1,sysb);
%
sys_c=-sys_c
%
[yc,T]=step(sys_c);
plot(T,yc)
title('Closed-loop Disturbance Step Response')
xlabel('Time(sec)'),ylabel('\omega_c(rad/s)'),grid
%
yc(length(T))
实验结果如下图:
开环系统和闭环系统实验中输入均为单位阶跃信号,由于输入电压为0,我们假定初始转速为0,
由实验结果可得出在无转速计开环控制状态下,当时间t=7s时电机转速下降至$ \omega_o=-0.66rad/s$并保持相对平稳。
在有转速计闭环控制状态下电机下,当时间t=0.02s时电机转速下降至$\omega_c = -0.002rad/s$并保持相对平稳。
因此我们可以推断得:
$$
\omega_o(\infty) \approx \omega_o(7)=-0.66rad/s
$$
$$
\omega_c(\infty) \approx \omega_c(0.02)=-0.002rad/s
$$
$$
\frac{\omega_c(\infty)}{\omega_o(\infty)}=0.003
$$
实验结论
显然,有转速计闭环控制状态下的电机输出稳定误差远远小于在无转速计开环控制状态。通过比较实验结果,同样也验证了实验的假设,即闭环有反馈的系统比开环无反馈的系统抗扰动性能更强。
实验体会
通过一个简单的开环闭环模拟实验很好地了解了控制系统的基本概念,也更直观地了解了开环控制与闭环控制的区别。
通过动手实验模拟实验理解底层数学原理在实际工作中发挥的重要作用,对基本的数学学习有了更深的体会,意识到自己数学基本功的不足,从而去学习之前落下的数学知识。了解了傅里叶变换、拉普拉斯变换、Z 变换之间的联系,以及为什么要进行这些变换。
506机房电脑还是一如既往的卡,打开matlab就要十几二十分钟,第一次使用线上版的matlab,结果机房网速也不行,还是只能用自己电脑装的matlab。
参考资料
傅里叶变换、拉普拉斯变换、Z 变换的联系是什么?为什么要进行这些变换?
大二信号处理上课只学到了傅里叶变换,果然欠了的总要还回来,数学只能慢慢补。
- 徐北熊的回答 - 知乎 https://www.zhihu.com/question/22085329/answer/103926934
- 逸珺的回答 - 知乎 https://www.zhihu.com/question/22085329/answer/1664661894
傅里叶变换是将函数分解到频率不同、幅值恒为1的单位圆上;拉普拉斯变换是将函数分解到频率幅值都在变化的圆上。因为拉普拉斯变换的基有两个变量,因此更灵活,适用范围更广。
实验二: PID控制和专家PID控制对比
实验目的
对比分析PID和专家PID控制器的控制效果。
实验原理
PID专家控制的实质是,基于受控对象和控制规律的各种知识,无需知道被控对象的精确模型,利用专家经验来设计PID参数。专家PID控制是一种直接型专家控制器。
专家PID控制器的本质在于通过偏差和偏差的增量来判断应采用的PID控制类型。
根据误差及其变化,可设计专家PID控制器,该控制器可分为以下五种情况进行设计:
(1)当$|e(k)|>M_1$(M1是上界)时,说明误差的绝对值已经很大。不论误差变化趋势如何,都应考虑控制器的输出应按最大(或最小)输出,以达到迅速调整误差,使误差绝对值以最大速度减小。此时,它相当于实施开环控制。
(2)当$e(k)\triangle e(k) > 0$或$e(k)=0$时,说明误差在朝误差绝对值增大方向变化,或误差为某一常值,未发生变化。
此时,如果$|e(k)|>M_2$(M2为误差下界),说明误差也较大,可考虑由控制器实施较强的控制作用,以达到扭转误差绝对值朝减小方向变化,并迅速减小误差的绝对值,控制器输出为
(3)当$e(k)\triangle e(k) < 0$、$ \triangle e(k)\triangle e(k-1)>0$或$e(k)=0$时,说明误差的绝对值朝减小的方向变化,或者已经达到平衡状态。此时,可考虑采取保持控制器输出不变。
(4)当$e(k)\triangle e(k) < 0$、$ \triangle e(k)\triangle e(k-1)<0$时,说明误差处于极值状态。如果此时误差的绝对值较大,即$|e(k)|\ge M_2$,可考虑实施较强的控制作用。
$$u(k)=u(k-1)+k_1 k_p e_m(k)$$
如果此时误差的绝对值较小,即$|e(k)|< M_2$,可考虑实施较弱的控制作用。
$$u(k)=u(k-1)+k_2 k_p e_m(k)$$
(5)设定控制精度ε,当$|e(k)|\le$ε时,说明误差的绝对值很小,使用PI控制,减少稳态误差。
实验代码和结果
clear all;
close all;
ts = 0.001;
sys = tf(5.235e005,[1,87.35,1.047e004,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;u_4=0;
y_1=0;y_2=0;y_3=0;
ei=0;
kp=0.96;ki=0.03;kd=0.01;
error_1=0;
for k = 1:1:500
time(k)=k*ts;
yd(k)=1.0;
y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u_1+num(2)*u_2+num(3)*u_3+num(4)*u_4;
error(k)=yd(k)-y(k);
derror(k)=error(k)-error_1;
ei=ei+error(k)*ts;
u(k)=kp*error(k)+kd*derror(k)/ts+ki*ei;
u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=y(k);
error_1=error(k);
end
figure(1);
plot(time,yd,'b',time,y,'r','linewidth',2);
xlabel('time(s)');ylabel('r,y');
saveas(gcf, 'save1.jpg');
figure(2);
plot(time,yd-y,'r','linewidth',2);
xlabel('time(s)');ylabel('error');
saveas(gcf, 'save2.jpg');
%Expert PID Controller
clear all;
clc;
close all;
ts=0.001;
sys = tf(5.235e005,[1,87.35,1.047e004,0]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
u_1=0;u_2=0;u_3=0;
y_1=0;y_2=0;y_3=0;
x=[0,0,0]';
x2_1=0;
kp=0.6;
ki=0.03;
kd=0.01;
error_1=0;
for k = 1:1:500
time(k)=k*ts;
r(k)=1.0;
u(k)=kp*x(1)+kd*x(2)+ki*x(3);
%Expert Control Rules
if (abs(x(1))>0.8)%Rule1:误差特别大时开环控制
u(k)=0.45;
elseif (abs(x(1))>0.40)
u(k)=0.40;
elseif (abs(x(1))>0.20)
u(k)=0.12;
elseif (abs(x(1))>0.01)
u(k)=0.10;
end
if x(1)*x(2)>0|(x(2)==0)
if abs(x(1))>=0.05
u(k)=u_1+2*kp*x(1);
else
u(k)=u_1+0.4*kp*x(1);
end
end
if (x(1)*x(2)<0&(x(2)*x2_1>0))|(x(1)==0)
u(k)=u(k);
end
if (x(1)*x(2)<0&(x(2)*x2_1<0))
if abs(x(1))>=0.05
u(k)=u_1+2*kp*error_1;
else
u(k)=u_1+0.6*kp*error_1;
end
end
if abs(x(1))<=0.001
u(k)=0.5*x(1)+0.010*x(3);
end
if u(k)>=10
u(k)=10;
end
if u(k)<=-10
u(k)=-10;
end
y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;
error(k)=r(k)-y(k);
u_3=u_2;u_2=u_1;u_1=u(k);
y_3=y_2;y_2=y_1;y_1=y(k);
x(1)=error(k);
x2_1=x(2);
x(2)=(error(k)-error_1)/ts;
x(3)=x(3)+error(k)*ts;
error_1=error(k);
end
figure(1);
plot(time,r,'b',time,y,'r','linewidth',2);
xlabel('time(s)');ylabel('r,y');
saveas(gcf, 'save3.jpg');
figure(2);
plot(time,r-y,'r','linewidth',2);
xlabel('time(s)');ylabel('error');
saveas(gcf, 'save4.jpg');
实验结论
由实验结果可以看出专家PID控制比PID控制效果要好,专家PID控制在时间t=0.1s时已经使系统平稳并且误差下降至0,而PID控制器系统的误差随时间变化的曲线波动较大,在时间t=0.3s后误差才下降至0。
实验体会
实验课之前还没讲完专家PID控制的内容,课后自己对照课本和ppt先看也能看懂,就是一开始敲代码还没明白实验的目的和内容,写完实验代码再看书理解的实验还是第一次做,感觉很新奇。
实验三
难得一次没带课本,结果就临时花了十分钟找课本PDF,九分钟百度,一分钟谷歌。下次找资料还是直接谷歌省事。
实验目的
短短两句话,就能让我戴上痛苦面具
%chap3_1.m“年轻”的隶属函数仿真程序参考代码
%Membership function for Young People “年轻”的隶属函数曲线
clear all;
close all;
for k=1:1:1001
x(k)=(k-1)*0.10;% x取值范围0~100
if x(k)>=0&x(k)<=25
y(k)=1.0;
else
y(k)=1/(1+((x(k)-25)/5)^2);
end
end
plot(x,y,'k');
xlabel('X Years');ylabel('Degree of membership');
实验过程和结果
(1)六种隶属度函数的仿真
%chap3_2.m
%Membership function
clear all;
close all;
M=1;
if M==1 %Guassian membership function 高斯型隶属函数
x=0:0.1:10;
y=gaussmf(x,[5 2]); %高斯函数依赖两个参数,gaussmf(x,[sig,c])
plot(x,y,'k');
xlabel('x');ylabel('y');
elseif M==2 %General Bell membership function 广义钟型隶属函数
x=0:0.1:10;
y=gbellmf(x,[2 4 6]);
plot(x,y,'k');
xlabel('x');ylabel('y');
elseif M==3 %S membership function S型隶属函数
x=0:0.1:10;
y=sigmf(x,[2 4]);
plot(x,y,'k');
xlabel('x');ylabel('y');
elseif M==4 %Trapezoid membership function 梯形隶属函数
x=0:0.1:10;
y=trapmf(x,[1 5 7 8]);
plot(x,y,'k');
xlabel('x');ylabel('y');
elseif M==5 %Triangle membership function 三角型隶属函数
x=0:0.1:10;
y=trimf(x,[3 6 8]);
plot(x,y,'k');
xlabel('x');ylabel('y');
elseif M==6 %Z membership function Z型隶属函数
x=0:0.1:10;
y=zmf(x,[3 7]);
plot(x,y,'k');
xlabel('x');ylabel('y');
end
高斯型隶属函数
广义钟型隶属函数
S型隶属函数
梯形隶属函数
三角型隶属函数
Z型隶属函数
(2)习题3-1隶属度函数设计和仿真输出
“很年轻W”设计:
$$
\mu_W(a)=\begin{equation}
\left\{
\begin{array}{lr}
1.0, & 0\leq a\leq 20 \
\displaystyle{\frac{50-a}{30}}, & 20 \leq a\leq 50\
0, & a\geq 50\
\end{array}
\right.
\end{equation}
$$
老爸上周刚过49岁大生日,在学校一天只能晚上打了个电话回去,老爸可能已经不年轻了,但在我心里还是可以“很年轻”的,所以设成50岁。同理,50岁是最”不老也不年轻“的。
“不老也不年轻V”设计:
$$
\mu_V==\begin{equation}
\left\{
\begin{array}{lr}
0, & 0\leq a\leq 20 \
\displaystyle{\frac{a-20}{30}}, & 20 \leq a\leq 50\
\dfrac{70-a}{20}, & 50 \leq a\leq 70\
0, & a\geq 70\
\end{array}
\right.
\end{equation}
$$
%Membership function for W People “很年轻W”的隶属函数曲线
clear all;
close all;
for k=1:1:1001
x(k)=(k-1)*0.10;% x取值范围0~100
if x(k)>=0&x(k)<=20
y(k)=1.0;
elseif x(k)>=20&x(k)<=50
y(k)=(50-x(k))/30;
else
y(k)=0;
end
end
plot(x,y,'k');
xlabel('X Years');ylabel('Degree of W');
%Membership function for V People “不老也不年轻V”的隶属函数曲线
clear all;
close all;
for k=1:1:1001
x(k)=(k-1)*0.10;% x取值范围0~100
if x(k)>=0&x(k)<=20
y(k)=0;
elseif x(k)>=20&x(k)<=50
y(k)=(x(k)-20)/30;
elseif x(k)>=50&x(k)<=70
y(k)=(70-x(k))/20;
else
y(k)=0;
end
end
plot(x,y,'k');
xlabel('X Years');ylabel('Degree of V');
长大总是要比变老慢,所以前面上升的直线斜率小
实验体会
这次matlab online好用很多,就是下载图片不方便,索性直接截图,图片大小反而合适。难得一次没带课本,结果就临时花了十分钟找课本PDF,九分钟百度,一分钟谷歌。下次找资料还是直接谷歌省事。这么简单的实验做了我一个半小时,太慢了。
资料
latex大括号 多行公式_Typora数学公式汇总(Markdown)