1 / 155

第六章 控制系统参数优化及仿真

第六章 控制系统参数优化及仿真. 仿真 是将已知系统在计算机上进行复现,它是分析,设计系统的一种重要实验手段。怎样才能使设计出来的系统在满足一定的约束条件下,使某个指标函数达到极值,这就需要 优化 的仿真实验。所以 仿真技术与优化技术两者关系十分密切。. 第六章 控制系统参数优化及仿真. 优化技术包括内容很多,本章主要介绍与系统最优化技术有关的参数优化技术方法。 第一节首先对控制系统常用的优化技术做一概括性的叙述。 第二节介绍 单变量技术的分割法和插值法 。 第三节为 多变量寻优技术 ,介绍工程中常用的 最速下降法 , 共轭梯法 和 单纯形法 。

alaire
Download Presentation

第六章 控制系统参数优化及仿真

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第六章 控制系统参数优化及仿真 仿真是将已知系统在计算机上进行复现,它是分析,设计系统的一种重要实验手段。怎样才能使设计出来的系统在满足一定的约束条件下,使某个指标函数达到极值,这就需要优化的仿真实验。所以仿真技术与优化技术两者关系十分密切。

  2. 第六章 控制系统参数优化及仿真 优化技术包括内容很多,本章主要介绍与系统最优化技术有关的参数优化技术方法。 第一节首先对控制系统常用的优化技术做一概括性的叙述。 第二节介绍单变量技术的分割法和插值法。 第三节为多变量寻优技术,介绍工程中常用的最速下降法,共轭梯法和单纯形法。 第四节为随机寻优法。 第五节简单介绍具有约束条件的寻优方法。 第六节介绍含函数寻优的基本方法。 最后向读者介绍了Matlab优化工具箱的使用方法。

  3. 6.1 参数优化与函数优化 优化技术是系统设计中带有普遍意义的一项技术,本节首先讨论优化技术中的一些基本定义和问题. 一、优化问题数学模型的建立 用优化方法解决实际问题一般分三步进行: (1) 提出优化问题,建立问题的数学模型。 (2)分析模型,选择合适的求解方法。 (3)用计算机求解,并对算法,误差,结果进行 评价。 显然,提出问题,确定目标函数的数学表达式是优化问题的第一步,在某种意义上讲也是最困难的一步。以下分别说明变量,约束和目标函数的确定。

  4. 6.1 参数优化与函数优化 (1) 变量的确定 变量一般指优化问题或系统中待确定的某些量。例如,在电机的优化设计中,变量可能为电流密度J,磁通密度 B,轴的长度,直径以及其他几何尺寸等。电路的优化设计中要确定的变量主要是电路元件(R,L,C)的数值。对产品设计问题来说,一般变量数较少(例如,几个到几十个)。变量数的多少以及约束的多少表示一个优化问题的规模大小。因此,工程上最优设计问题属于中小规模的优化问题,而生产计划,调度问题中变量数可达几百个几千个,属于大规模优化问题。变量用X表示 ,磁通密度 表示, 。

  5. 6.1 参数优化与函数优化 • (2) 约束条件 • 求目标函数极值时的某些限制称为约束。例如,要求变量为非负或为整数值,这是一种限制;可用的资源常常是有限的(资源泛指人力,设备,原料,经费,时间等等);问题的求解应满足一定技术要求,这也是一种限制(如产品设计中规定产品性能必须达到的某些指标)。此外,还应满足物理系统基本方程和性能方程(如电路设计必须服从电路基本定律KCL和KVL)。控制系统优化设计则用状态方程和高阶微分和差分方程来描述其物理性质。

  6. 6.1 参数优化与函数优化 • 如果列写出来的约束式,越接近实际系统,则所求得的优化问题的解,也越接近于实际的最优解。 • 等式约束 : • 不等式约束: 或

  7. 6.1 参数优化与函数优化 (3) 目标函数 • 优化有一定的标准和评价方法,目标函数 是这 • 种标准的数学描述。目标函数可以是效果函数或费 • 用函数, 。用效果作为目标函 • 数时,优化问题是要求极大值,而费用函数不得超 • 过某个上界成为这个优化问题的约束;反之,最优 • 函数是费用函数时,问题变成了求极小值,而效果 • 函数不得小于某个下界就成为这个极小值问题的约 • 束了,这是对偶关系。

  8. 6.1 参数优化与函数优化 • 费用和效果都是广义的,如费用可以是经费,也可以是时间、人力、功率、能量、材料、占地面积或其他资源。而效果可以是性能指标、利润、效益、精确度、灵敏度等等。也可以将效果与费用函数统一起来,以单位费用的效果函数或单位效果的费用函数为目标函数,前者是求极大值,后者是求极小值。 • 求极大值和极小值问题实际上没有什么原则的区别。因为求 的极小值相当于求- 的极大值,即 。 • 两者的最优值均当 时得到。

  9. 6.1 参数优化与函数优化 • 综上所述,优化问题的数学模型可以表示成如下形式: (6.1.1) 约束条件

  10. 6.1 参数优化与函数优化 • 二、优化问题的分类 • 优化问题可以按下述情况分类: • (1)有没有约束?有约束的话是等式约束还是不等式约束? • (2)所提问题是确定性的还是随机性的? • (3)目标函数和约束式是线性的还是非线性的? • (4)是参数最优还是函数最优,即变量是不是时间的函数? • (5)问题的模型是用数学解析公式表示还是用网络图表示?在网络上的寻优称为网络优化。 • 限于本书的内容要求,在此只介绍参数优化和函数优化。

  11. 6.1 参数优化与函数优化 • (1) 参数优化 • 在控制对象已知,控制器的结构、形式已确定的情况下,通过调整控制器的某些参数,使得某个目标函数最优,这就是参数优化问题。 • 例如,图6.1.1所示的控制系统,在某个给定函数 的作用下,测量给定 与输出量 之间的偏差 ,用 作为指标函数,要求调整控制器的参数,使得该指标函数达到最小。 图6.1.1 控制器参数的调整

  12. 6.1 参数优化与函数优化 • 假定控制器有 个可调整参数 显然上述指标是这些参数的函数,即 • (6.1.2) • 现在的问题就是要寻求使 达到极小值的 ,其中 是一个向量。 • 从数学上讲,参数优化问题是属于普通极值问题。寻找的最优参数不随时间变化,故也属于静态寻优问题。其一般问题形式是: • 有一个物理系统,它的数学模型为 ,其中 为 维状态向量; 为 维被寻优参数的向量; 为 维系统运动方程结构向量。要求在满足下列条件下:

  13. 6.1 参数优化与函数优化 • 不等式限制 q维 • 等式限制 p维 • 等式终端限制 维(是终端时间) • 找到一组参数 , • 使指标函数 • (2) 函数优化 • 函数优化是控制对象已知,要找最优控制作用 ,以使某个函数指标达到最小,也包括要寻找最优控制器的结构、形式和参数。

  14. 6.1 参数优化与函数优化 • 由于最优控制作用 为时间函数,所以这类问题称为函数优化问题,在数学上称为泛函极值问题,这类问题的一般形式是: • 有一个物理系统,它的数学模型为 ,其中 为 维状态向量; 为 维被寻优参数的向量; 为 维系统运动方程结构向量。要求在满足条件下: • 不等式限制 q维 • 等式限制 p维 • 等式终端限制 维 找到m维函数 使指标函数

  15. 6.1 参数优化与函数优化 • 函数优化问题从理论上讲可以用变分或极大值原理或动态规划求解。但是在仿真研究中,由于采用的是数值求解,所以通常将其转化为参数优化问题加以解决。出于以上原因,本章的重点主要讨论参数优化问题。 • 三、参数优化方法 • 系统的参数优化问题求解方法,按其求解方式可分为两类:间接寻优和直接寻优。 • (1) 间接寻优 • 间接寻优就是把一个优化问题用数学方程描述出来,然后按照优化的充分必要条件用数学分析的方法求出解析解,故又称其为解析法。

  16. 6.1 参数优化与函数优化 • 数学中的变分法,拉格朗日乘子法和最大值原理,动态规划等都是解析法,所以也都是间接寻优法。由于在大部分控制系统中目标函数J一般很难写出解析式,而只能在计算动态相应过程中计算出来,所以仿真中一般较少采用间接寻优方法。 (2) 直接寻优法 • 直接寻优法就是直接在变量空间搜索一组最佳控制变量(又称决策变量,设计变量)。这是一种数值方法,具体办法是,利用目标函数在一局部区域初始状态的性质和已知数值,来确定下一步计算的点,这样一步步搜索逼近,最后接近最优点。

  17. 6.2 单变量寻优技术 • 单变量寻优技术是多变量寻优技术的基础,多变量参数寻优的算法中常常要用到它,因此单变量的寻优方法是解决多变量优化问题的基本方法。本节主要介绍常用的两种单变量寻优方法:分割法和插值法。

  18. 6.2 单变量寻优技术 • 6.2.1 黄金分割法( 法) • 分割法是单变量函数无约束极值较为有效的一种直接搜索法。这种方法实质上是在搜索过程中不断缩小最优点存在的区域,即通过搜索区间的逐步随小来确定最优点。对多变量函数来说,分割法不十分有效,因为这时消去的不是线段,而是平面、立体或多维空间的一部分。黄金分割法是分割法中的一种有效方法。 • 假定目标函数 ,已知它在区间 有一极小值存在,如图6.2.1(a)所示。为了找到这个极小点 ,可以在距 各 处找两点 ,然后比较它们的目标函数值,如果 ,则令 ,形成新区间 ,然后对这个新区间在距 各 处找两点。由于每次分割区间缩小为原来的 倍( ),若原来区间 为 ,而经过n次分割后区间为 。

  19. 6.2 单变量寻优技术 • 那么 。 图6.2.1 黄金分割图 选多大适合呢?如果要求 应该是 的对称点,即 ,如图6.2.1(b)所示,则也可以写成下面关系式:

  20. 6.2 单变量寻优技术 • 且希望经过分割后其保留点仍处于留下区间的相应位置上,即 在 中的位置与 在 中相仿,且比值相等(6.2.2) • 故: , • , • 因此可以得到: = (6.2.3) • 取正值 =0.6180339 • 这样,若计算分割后的函数值,则由计算两个点的函数值变为计算一个点的函数值,在一定分割次数内,减少了计算函数的次数。这种分割方法称为黄金分割法。

  21. 6.2 单变量寻优技术 图6.2.2表示了黄金分割法程序框图。

  22. 6.2 单变量寻优技术 • 例6.2.1 求目标函数 的最小值,区间缩短的精度 。 • 使用符号:A:初始区间的起点, ; • B:初始区间的终点, ; • E:允许的精度, • 用C语言编写的计算程序清单如下: • #include “math.h” • #include “stdio.h” • main( )

  23. 6.2 单变量寻优技术 • {float x0, x1, x2, x3, x4, e1, e2, q1, q2, q3, q4, q5, m, h0, h, c1, c2; • int n; • printf(“intput x0, H0,E1, E2, M”); • scanf(“%f, %f, %f, %f, %f ”,&x0, &h0, &e1, &e2, &m ); • x1=x0, q1=x1 *x1-10x1+36; • p2: n=0; h=h0; • x2=x1+h;q2=x2*x2-10x2+36; • if(q1>q2) • {h=h+h; n=n+1;} • else • {h= -h;x3=x1;q3=q1;

  24. 6.2 单变量寻优技术 • p1: x1=x2; q1=q2; x2=x3; q2=q3;} • x3=x2+h; q3=x3*x3 -10x3+36; • if(q2>q3) • {h=h+h; n=n+1; go to p1;} • else • {if(n>0) • {x4=0.5*(x2+x3); q4=x4*x4 –10*x4+36; • if(q4>q2) {x3=x4; q3=q4;} • else{x1=x2; q1=q2; x2=x4; q2=q4;} • } • c1=(q3-q1)/(x3-x1) • c2=((q2-q1)/(x2-x1)-c1)/(x2-x3);

  25. 6.2 单变量寻优技术 • if(fabs(c2)<e1) • {x1=x2; q1=q2; • h0=m*h0; go to p2;} • else{x4=0.5*(x1+x3-c1/c2); • q4=x4*x4 –10*x4+36; • if(q2<e2) q5=e2; • else q5=q2; • if(fabs((q4 –q2)/q5)>e1) • {if(q4>q2) {x1=x2; q1=q2;} • else{x1=x4; q1=q4;} • h0=m*h0; go to p2;}

  26. 6.2 单变量寻优技术 • printf(“OPTIM X=%f\n”,x4); • printf(“OBJ.FUNC=%f”,q4); • } • } • } • 计算结果: • Q=11, x1=5.000 67, A=5.007 5, B=5.000 63。

  27. 6.2 单变量寻优技术 • 6.2.2 二次插值法 • 二次插值法是多项式近似法的一种,即用二次的插值多项式拟合目标函数,并用这个多项式的极小点作为目标函数极值的近似。 • 1.二次插值法的计算公式 • 假设目标函数 在三个点 的函数值分别为 。可以利用这三个点及相应的函数值作为二次插值公式,令 • (6.2.4) • 为所求的插值多项式,它应满足条件 (6.2.5)

  28. 6.2 单变量寻优技术 • 对多项式(6.2.4)式求导数,并令其为零,得 • (6.2.6) • (6.2.7) • (6.2.7)式就是计算近似极小点的公式。为了确定这个极小点只需算出a1和a2,其算法如下。 • 从(6.2.5)可求出 • (6.2.8)

  29. 6.2 单变量寻优技术 • 如果设三个点等距离,即 • 则式(6.2.8)又可写为 • (6.2.9) • 设 为坐标原点,则 • (6.2.10)

  30. 6.2 单变量寻优技术 • 2. 用外推法求寻优区间 • 外推法是一种寻优极点范围的方法。用二次插值法巡优,有时其最优点存在的范围事先没有给出,因此作为寻优的第一步,首先就是确定寻优区间。其方法如下: • 设从某点 开始,原始步长为 ,则 , • 求目标函数 和 并进行比较。 • 若 ,则将步长加倍,求在, • ,…, ,等点处目标函数 的值,直至函数值增加为止,如图6.2.3(a)所示。

  31. 6.2 单变量寻优技术 • 若 ,则求在 , ,… • ,等点处的的值,直至函数值增加为止,如图6.2.3(b) • 对凸函数来说,最小点必落在 之间,即 , 而且有 (6.2.11) 图6.2.3 外推法图示

  32. 6.2 单变量寻优技术 • 此时,若在 与 之间的中点进行第k+1点的计算,即取 • (6.2.12) • 这样共得四个等间距的点 ,它们之间的间距为 当 时 ,;当 时 , 。比较这四个点的函数值,取函数值最小的 ,则 ,这样就可以得三点 ,以便于构成二次插值函数,并且可以判定 一定在 和 之间。

  33. 6.2 单变量寻优技术 • 3.外推二次插值法的程序框图 • 为便于分析将图6.2.4所示的框图分为三部分。其中,图6.2.4(a)为外推法最优点存在的区间;图6.2.4(b)为二次插值法求近似的最有点;图6.2.4(c)是比较 与 ,其比较小者为新的起点,同时缩短步长 ,再重复图6.2.4(a)及(b)两部分。 • 例6.2.2 求目标函数 的最小值。 • 用C语言编写的程序清单如下: • #include “math.h” • #include “stdio.h”

  34. 6.2 单变量寻优技术 • main( ) • {float x0, x1, x2, x3, x4, e1, e2, q1, q2, q3, q4, q5, m, h0, h, c1, c2; • int n; • printf(“input x0, H0, E1, E2, M”); • scanf(“%f, %f, %f, %f, %f”,&x0, &h0, &e1, &e2, &m); • x1=x0; q1=x1*x1-10*x1+36; • p2: n=0; h=h0; • x2=x1+h; q2=x2*x2-10*x2+36; • if(q1>q2) • {h=h+h; n=n+1;} • else • {h= -h;x3=x1;q3=q1;

  35. 6.2 单变量寻优技术 • p1: x1=x2; q1+q2; x2=x3; q2=q3;} • x3=x2+h; q3=x3*x3-10*x3+36; • if(q2>q3) • {h=h+h; n=n+1; go to p1;} • else • {if(n>0) • {x4=0.5*(x2+x3); q4=x4*x4-10*x4+36; • if(q4>q2) {x3=x4; q3=q4;} • else{x1=x2; q1=q2; x2=x4;q2=q4;} • } • c1=(q3-q1)/(x3-x1); • c2=((q2-q1)/(x2-x1)-c1)/(x2-x3

  36. 6.2 单变量寻优技术 • if(fabs(c2)<e1) • {x1=x2; q1=q2; • h0=m*h0; go to p2;} • else{x4=0.5*(x1+x3-c1/c2); • q4=x4*x4-10*x4+36; • if(q2<e2) q5=e2’ • else q5=q2;

  37. 6.2 单变量寻优技术 • if(fabs((q4-q2)/q5>=e1) • {if(q4>q2) {x1=x2; q1=q2}; • else{x1=x4;q1=q4;} • h0=m*h0; go to p2;} • printf(“OPTIM X=%f\n”, x4); • printf(“OBJ.FUNC=%f ”,q4); • } • } • }

  38. 图6.2.4 外推二次插值法的程序框图 当 x0=0.5, h0=1, 0, e1=0.001, e2=1, m=0.1 时, 计算结果: optim x=5.0, obj.fucn=11.0

  39. 6.3 多变量寻优技术 • 单变量寻优技术,由于只有一个变量,因此只要在一条线上搜索最优参数就可以了。在变量超过一个以后,就要在多维空间搜索一组最优参数,因此确定寻优方向及寻优步长的问题就比较突出了。根据寻优方向及寻优步长的不同,就有不同的寻优方法。本节将介绍三种方法:最速下降法,共轭梯度法和单纯形法。

  40. 6.3 多变量寻优技术 • .3.1 最速下降法 • 一、最速下降法的基本思想 • 为了弄清这种寻优方法的基本思想,可以举一个盲人下山的例子。当盲人下山时,眼睛看不见山谷的方位,如何能沿最短路线迅速下降呢?一般盲人只好靠手前后探索试探着前进的方向,哪儿最陡?一定下降的最快,这种寻求最速下降的方向作为搜索的方向,一步步逼近最低点就是最速下降的基本思想。 • 要求多变量函数 的极小点 ,其中 为 维方向,首先从给定的起始点 出发,沿某个有利的方向 进行一维搜索,求得 在方向 上的极小点 ,然后再从 出发,沿某个新的有利方向 进行搜索,求得 在 方向上的近似极小点 。如此继续,直至满足给定的精度为止。

  41. 6.3 多变量寻优技术 • 二、最速下降法的计算方法 • 设目标函数 ,求使目标函数 为最小值的变量 。设 为 维向量,对 存在二阶偏导数。 • 现假设已经迭代到第 步,得到此时刻的 ,考虑 有一个微小的变化,即 • (6.3.1) • 为 附近的点,其两点的距离为: • (6.3.2)

  42. 6.3 多变量寻优技术 • 因为 的微小变化,必然引起目标函数 也有一个变化: • (6.3.3) • 所谓 下降最快,及最大变化的问题,经过上述变换,就转化为以下具有约束的极值问题。 • 在下列约束条件下: • (6.3.4) • 通过适当选择 ,使下式极大化 • (6.3.5)

  43. 6.3 多变量寻优技术 • 具有约束的极值问题可以采样拉格朗日乘子,化为无约束极值问题。设 为拉格朗日乘子,则 • (6.3.6) • 式(6.3.5)对 求偏微分,并令其等于零,有 • 解出 为 • (6.3.7) • 将方程(6.3.7)代入(6.3.2),计算出 因子为

  44. 6.3 多变量寻优技术 • 令: (6.3.9) • 则 • (6.3.10) • 将(6.3.10)代入(6.3.7)得到 • (6.3.11) • 即,我们可以得到第 步时的 为 • (6.3.12)

  45. 6.3 多变量寻优技术 • 下面,确定(6.3.12)的正负号。将(6.3.8)式代入(6.3.7)式,得到 • (6.3.13) • 再将上式代入(6.3.5)式得到 • 即: (6.3.14) • 因为 是距离,故为正,因此取“+”号时,目标函数增加,而取“-”号时,对应的目标函数减小。换句话说,沿着目标函数的负梯度方向走,目标函数是减小的。

  46. 6.3 多变量寻优技术 • 又因为,式(6.3.6)对 的二阶偏微分等于 ,为了保证式(6.3.5)中的 沿着负数方向有最大值,即式(6.3.5)有极小值,因此只有 等于正数。我们可在式(6.3.10)中取负号,来保证(6.3.6)对 的二阶偏微分大于零,也就保证式(6.3.5)有极小值。 • 其中 为迭代步长, 不能选择太小,否则目标函数 下降太慢,但如果 很大,目标函数 可能会出现“上下起伏”现象,因此选择最优步长 应使 在方向的目标函数数值最小,即

  47. 6.3 多变量寻优技术 • (6.3.15) • 显然,这是一个单变量寻优问题,即寻找最佳步长 。可以利用上一节所介绍的方法。 • 最速下降法的一般计算关系式为:若出发点为,则 • (6.3.16)

  48. 6.3 多变量寻优技术 • 式中 ―梯度向量; • -梯度向量模; • -梯度方向上的单位向量。 • 控制迭代的收敛要求可以为 • <= • 或 (6.3.17) • 式中 ——梯度误差,它是很小的正数; • ——目标函数误差,它也是很小的正数。

  49. 6.3 多变量寻优技术 • 最速下降法的程序框图如图6.3.1所示。 图6.3.1 最速下降法的程序框图

  50. 6.3 多变量寻优技术 • 用C语言编写的最速下降法的程序清单如下。其中R是梯度模 ;P是梯度方向的单位向量 ;h是步长 ;f是目标函数 。 • #include “math.h” • #include “stdio.h” • float x[10], y[10], p[10], f, h; • int n; • vod fun( ) • {int i; • for(i=1, i<n; i++) x[i]=y[i]-h*p[i];

More Related