《控制系统参数优化及仿真.ppt》由会员分享,可在线阅读,更多相关《控制系统参数优化及仿真.ppt(155页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章第六章 控制系统参数优化及仿真控制系统参数优化及仿真 仿真仿真是将已知系统在计算机上进行复现,它是分析,设计系统的一种重要实验手段。怎样才能使设计出来的系统在满足一定的约束条件下,使某个指标函数达到极值,这就需要优化优化的仿真实验。所以仿真技术与优化技术两者关系十分密切。第六章第六章 控制系统参数优化及仿真控制系统参数优化及仿真 优化技术包括内容很多,本章主要介绍与系统最优化技术有关的参数优化技术方法。第一节首先对控制系统常用的优化技术做一概括性的叙述。第二节介绍单变量技术的分割法和插值法。第三节为多变量寻优技术,介绍工程中常用的最速下降法,共轭梯法和单纯形法。第四节为随机寻优法。第五节
2、简单介绍具有约束条件的寻优方法。第六节介绍含函数寻优的基本方法。最后向读者介绍了Matlab优化工具箱的使用方法。6.1 6.1 参数优化与函数优化参数优化与函数优化 优化技术是系统设计中带有普遍意义的一项技术,本节首先讨论优化技术中的一些基本定义和问题.一、优化问题数学模型的建立一、优化问题数学模型的建立 用优化方法解决实际问题一般分三步进行:(1)提出优化问题,建立问题的数学模型。(2)分析模型,选择合适的求解方法。(3)用计算机求解,并对算法,误差,结果进行 评价。显然,提出问题,确定目标函数的数学表达式是优化问题的第一步,在某种意义上讲也是最困难的一步。以下分别说明变量,约束和目标函数
3、的确定。6.1 参数优化与函数优化参数优化与函数优化n n(1)(1)变变量的确定量的确定变量一般指优化问题或系统中待确定的某些量。例如,在电机的优化设计中,变量可能为电流密度J,磁通密度 B,轴的长度,直径以及其他几何尺寸等。电路的优化设计中要确定的变量主要是电路元件(R,L,C)的数值。对产品设计问题来说,一般变量数较少(例如,几个到几十个)。变量数的多少以及约束的多少表示一个优化问题的规模大小。因此,工程上最优设计问题属于中小规模的优化问题,而生产计划,调度问题中变量数可达几百个几千个,属于大规模优化问题。变量用X表示,磁通密度表示,。6.1 参数优化与函数优化参数优化与函数优化n n(
4、2)(2)(2)(2)约束条件约束条件约束条件约束条件n n求目标函数极值时的某些限制称为约束。例如,要求目标函数极值时的某些限制称为约束。例如,要求变量为非负或为整数值,这是一种限制;可用的求变量为非负或为整数值,这是一种限制;可用的资源常常是有限的资源常常是有限的(资源泛指人力,设备,原料,经资源泛指人力,设备,原料,经费,时间等等费,时间等等);问题的求解应满足一定技术要求,;问题的求解应满足一定技术要求,这也是一种限制这也是一种限制(如产品设计中规定产品性能必须达如产品设计中规定产品性能必须达到的某些指标到的某些指标)。此外,还应满足物理系统基本方程。此外,还应满足物理系统基本方程和性
5、能方程和性能方程(如电路设计必须服从电路基本定律如电路设计必须服从电路基本定律KCLKCL和和KVL)KVL)。控制系统优化设计则用状态方程和高阶微。控制系统优化设计则用状态方程和高阶微分和差分方程来描述其物理性质。分和差分方程来描述其物理性质。6.1 参数优化与函数优化参数优化与函数优化n n如果列写出来的约束式,越接近实际系统,则所求如果列写出来的约束式,越接近实际系统,则所求得的优化问题的解,也越接近于实际的最优解。得的优化问题的解,也越接近于实际的最优解。n n等式约束:n n不等式约束:或或 6.1 参数优化与函数优化参数优化与函数优化(3)(3)目标函数目标函数n n优化有一定的标
6、准和评价方法,目标函数优化有一定的标准和评价方法,目标函数 是这是这n n种标准的数学描述。目标函数可以是效果函数或费种标准的数学描述。目标函数可以是效果函数或费n n用函数,用函数,。用效果作为目标函。用效果作为目标函n n数时,优化问题是要求极大值,而费用函数不得超数时,优化问题是要求极大值,而费用函数不得超n n过某个上界成为这个优化问题的约束;反之,最优过某个上界成为这个优化问题的约束;反之,最优n n函数是费用函数时,问题变成了求极小值,而效果函数是费用函数时,问题变成了求极小值,而效果n n函数不得小于某个下界就成为这个极小值问题的约函数不得小于某个下界就成为这个极小值问题的约n
7、n束了,这是对偶关系。束了,这是对偶关系。6.1 参数优化与函数优化参数优化与函数优化n n 费用和效果都是广义的,如费用可以是经费,也费用和效果都是广义的,如费用可以是经费,也可以是时间、人力、功率、能量、材料、占地面积或可以是时间、人力、功率、能量、材料、占地面积或其他资源。而效果可以是性能指标、利润、效益、精其他资源。而效果可以是性能指标、利润、效益、精确度、灵敏度等等。也可以将效果与费用函数统一起确度、灵敏度等等。也可以将效果与费用函数统一起来,以单位费用的效果函数或单位效果的费用函数为来,以单位费用的效果函数或单位效果的费用函数为目标函数,前者是求极大值,后者是求极小值。目标函数,前
8、者是求极大值,后者是求极小值。n n 求极大值和极小值问题实际上没有什么原则的区求极大值和极小值问题实际上没有什么原则的区别。因为求别。因为求 的极小值相当于求的极小值相当于求-的极的极大值,即大值,即 。n n两者的最优值均当两者的最优值均当 时得到。时得到。6.1 参数优化与函数优化参数优化与函数优化n n综上所述,优化问题的数学模型可以表示成如下综上所述,优化问题的数学模型可以表示成如下形式:形式:(6.1.1)约束条件 6.1 参数优化与函数优化参数优化与函数优化n n二、优化问题的分类二、优化问题的分类n n优化问题可以按下述情况分类:优化问题可以按下述情况分类:n n(1)(1)有
9、没有约束?有约束的话是等式约束还是不等有没有约束?有约束的话是等式约束还是不等式约束?式约束?n n(2)(2)所提问题是确定性的还是随机性的?所提问题是确定性的还是随机性的?n n(3)(3)目标函数和约束式是线性的还是非线性的?目标函数和约束式是线性的还是非线性的?n n(4)(4)是参数最优还是函数最优,即变量是不是时间是参数最优还是函数最优,即变量是不是时间的函数?的函数?n n(5)(5)问题的模型是用数学解析公式表示还是用网络问题的模型是用数学解析公式表示还是用网络图表示?在网络上的寻优称为网络优化。图表示?在网络上的寻优称为网络优化。n n限于本书的内容要求,在此只介绍参数优化和
10、函数限于本书的内容要求,在此只介绍参数优化和函数优化。优化。6.1 参数优化与函数优化参数优化与函数优化n n(1)(1)参数优化参数优化参数优化参数优化n n在控制对象已知,控制器的结构、形式已确定的情况在控制对象已知,控制器的结构、形式已确定的情况下,通过调整控制器的某些参数,使得某个目标函数下,通过调整控制器的某些参数,使得某个目标函数最优,这就是参数优化问题。最优,这就是参数优化问题。n n例如,图所示的控制系统,在某个给定函数例如,图所示的控制系统,在某个给定函数 的作用下,的作用下,测量给定测量给定 与输出量与输出量 之间的偏差之间的偏差 ,用,用 作为指标作为指标函数,要求调整控
11、制器的参数,使得该指标函数达到函数,要求调整控制器的参数,使得该指标函数达到最小。最小。图图6.1.1 控制器参数的调整控制器参数的调整 6.1 参数优化与函数优化参数优化与函数优化n n假定控制器有假定控制器有 个可调整参数个可调整参数 显然上述显然上述指标是这些参数的函数,即指标是这些参数的函数,即n n (6.1.2)(6.1.2)n n现在的问题就是要寻求使现在的问题就是要寻求使 达到极小值的达到极小值的 ,其,其中中 是一个向量。是一个向量。n n 从数学上讲,参数优化问题是属于普通极值问题。从数学上讲,参数优化问题是属于普通极值问题。寻找的最优参数不随时间变化,故也属于静态寻优寻找
12、的最优参数不随时间变化,故也属于静态寻优问题。其一般问题形式是:问题。其一般问题形式是:n n 有一个物理系统,它的数学模型为有一个物理系统,它的数学模型为 ,其中其中 为为 维状态向量;维状态向量;为为 维被寻优参数的向维被寻优参数的向量;量;为为 维系统运动方程结构向量。要求在满足维系统运动方程结构向量。要求在满足下列条件下:下列条件下:6.1 参数优化与函数优化参数优化与函数优化n n 不等式限制不等式限制 q q维维n n 等式限制等式限制 p p维维n n 等式终端限制等式终端限制 维维(是终端时间是终端时间)n n找到一组参数找到一组参数 ,n n使指标函数使指标函数 n n(2)
13、(2)函数优化函数优化函数优化函数优化n n 函数优化是控制对象已知,要找最优控制作用函数优化是控制对象已知,要找最优控制作用 ,以使某个函数指标达到最小,也包括要寻找最优,以使某个函数指标达到最小,也包括要寻找最优控制器的结构、形式和参数。控制器的结构、形式和参数。6.1 参数优化与函数优化参数优化与函数优化n n由于最优控制作用由于最优控制作用 为时间函数,所以这类问题为时间函数,所以这类问题称为函数优化问题,在数学上称为泛函极值问题,称为函数优化问题,在数学上称为泛函极值问题,这类问题的一般形式是:这类问题的一般形式是:n n 有一个物理系统,它的数学模型为有一个物理系统,它的数学模型为
14、 ,其中其中 为为 维状态向量;维状态向量;为为 维被寻优参数的向维被寻优参数的向量;量;为为 维系统运动方程结构向量。要求在满足维系统运动方程结构向量。要求在满足条件下:条件下:n n不等式限制不等式限制 q q维维n n 等式限制等式限制 p p维维n n 等式终端限制等式终端限制 维维找到找到mm维函数维函数 使指标函数使指标函数6.1 参数优化与函数优化参数优化与函数优化n n函数优化问题从理论上讲可以用变分或极大值原理函数优化问题从理论上讲可以用变分或极大值原理或动态规划求解。但是在仿真研究中,由于采用的或动态规划求解。但是在仿真研究中,由于采用的是数值求解,所以通常将其转化为参数优
15、化问题加是数值求解,所以通常将其转化为参数优化问题加以解决。出于以上原因,本章的重点主要讨论参数以解决。出于以上原因,本章的重点主要讨论参数优化问题。优化问题。n n三、参数优化方法三、参数优化方法n n 系统的参数优化问题求解方法,按其求解方式可系统的参数优化问题求解方法,按其求解方式可分为两类:间接寻优和直接寻优。分为两类:间接寻优和直接寻优。n n (1)(1)间接寻优间接寻优间接寻优间接寻优n n 间接寻优就是把一个优化问题用数学方程描述出间接寻优就是把一个优化问题用数学方程描述出来,然后按照优化的充分必要条件用数学分析的方来,然后按照优化的充分必要条件用数学分析的方法求出解析解,故又
16、称其为解析法。法求出解析解,故又称其为解析法。6.1 参数优化与函数优化参数优化与函数优化n n数学中的变分法,拉格朗日乘子法和最大值原理,数学中的变分法,拉格朗日乘子法和最大值原理,动态规划等都是解析法,所以也都是间接寻优法。动态规划等都是解析法,所以也都是间接寻优法。由于在大部分控制系统中目标函数由于在大部分控制系统中目标函数J J一般很难写出一般很难写出解析式,而只能在计算动态相应过程中计算出来,解析式,而只能在计算动态相应过程中计算出来,所以仿真中一般较少采用间接寻优方法。所以仿真中一般较少采用间接寻优方法。(2)(2)(2)(2)直接寻优法直接寻优法直接寻优法直接寻优法n n 直接寻
17、优法就是直接在变量空间搜索一组最佳直接寻优法就是直接在变量空间搜索一组最佳控制变量控制变量(又称决策变量,设计变量又称决策变量,设计变量)。这是一种数。这是一种数值方法,具体办法是,利用目标函数在一局部区域值方法,具体办法是,利用目标函数在一局部区域初始状态的性质和已知数值,来确定下一步计算的初始状态的性质和已知数值,来确定下一步计算的点,这样一步步搜索逼近,最后接近最优点。点,这样一步步搜索逼近,最后接近最优点。6.2 单变量寻优技术单变量寻优技术n n单变量寻优技术单变量寻优技术是多变量寻优技术的基础,多变量参数寻优的算法中常常要用到它,因此单变量的寻优方法是解决多变量优化问题的基本方法。
18、本节主要介绍常用的两种单变量寻优方法:分割法分割法和插值法插值法。6.2 单变量寻优技术单变量寻优技术n n 6.2.1 黄金分割法黄金分割法(法法)n n分割法是单变量函数无约束极值较为有效的一种直接分割法是单变量函数无约束极值较为有效的一种直接搜索法。这种方法实质上是在搜索过程中不断缩小最搜索法。这种方法实质上是在搜索过程中不断缩小最优点存在的区域,即通过搜索区间的逐步随小来确定优点存在的区域,即通过搜索区间的逐步随小来确定最优点。对多变量函数来说,分割法不十分有效,因最优点。对多变量函数来说,分割法不十分有效,因为这时消去的不是线段,而是平面、立体或多维空间为这时消去的不是线段,而是平面
19、、立体或多维空间的一部分。黄金分割法是分割法中的一种有效方法。的一部分。黄金分割法是分割法中的一种有效方法。n n假定目标函数假定目标函数 ,已知它在区间,已知它在区间 有一极小值有一极小值存在,如图存在,如图6.2.1(6.2.1(a a)所示。为了找到这个极小点所示。为了找到这个极小点 ,可以在距可以在距 各各 处找两点处找两点 ,然后比较,然后比较它们的目标函数值,如果它们的目标函数值,如果 ,则令,则令 ,形成新区间,形成新区间 ,然后对这个新区间在距,然后对这个新区间在距 各各 处找两点。由于每次分割区间缩小为原来的处找两点。由于每次分割区间缩小为原来的 倍倍()(),若原来区间,若
20、原来区间 为为 ,而经过,而经过n n次次分割后区间为分割后区间为 。6.2 单变量寻优技术单变量寻优技术n n那么那么 。选多大适合呢?如果要求 应该是 的对称点,即 ,如图6.2.1(b)所示,则也可以写成下面关系式:图图6.2.1 黄金分割黄金分割图图6.2 单变量寻优技术单变量寻优技术 n n且希望经过分割后其保留点仍处于留下区间的相应位置且希望经过分割后其保留点仍处于留下区间的相应位置上,即上,即 在在 中的位置与中的位置与 在在 中相仿中相仿,且比值相且比值相等等 (6.2.2)(6.2.2)n n故故:,:,n n ,n n因此可以得到:因此可以得到:=(6.2.3)=(6.2.
21、3)n n取正值取正值 =0.6180339 =0.6180339n n这样,若计算分割后的函数值,则由计算两个点的函数这样,若计算分割后的函数值,则由计算两个点的函数值变为计算一个点的函数值,在一定分割次数内,减少值变为计算一个点的函数值,在一定分割次数内,减少了计算函数的次数。这种分割方法称为黄金分割法。了计算函数的次数。这种分割方法称为黄金分割法。6.2 单变量寻优技术单变量寻优技术n n 图表示了图表示了黄金分割黄金分割法程序框法程序框图。图。6.2 单变量寻优技术单变量寻优技术n n例例6.2.1 6.2.1 求目标函数求目标函数 的最小值,的最小值,区间缩短的精度区间缩短的精度 。
22、n n使用符号:使用符号:A A:初始区间的起点,:初始区间的起点,;n n B B:初始区间的终点,:初始区间的终点,;n n E E:允许的精度,:允许的精度,n n用用C C语言编写的计算程序清单如下:语言编写的计算程序清单如下:n n#include“math.h”#include“math.h”n n#include“stdio.h”#include“stdio.h”n n main()main()6.2 单变量寻优技术单变量寻优技术n n float x0,x1,x2,x3,x4,e1,e2,q1,q2,q3,q4,float x0,x1,x2,x3,x4,e1,e2,q1,q2,
23、q3,q4,q5,m,h0,h,c1,c2;q5,m,h0,h,c1,c2;n nint n;int n;n nprintf(“intput x0,H0,E1,E2,M”);printf(“intput x0,H0,E1,E2,M”);n nscanf(“%f,%f,%f,%f,%f”,&x0,&h0,&e1,&e2,scanf(“%f,%f,%f,%f,%f”,&x0,&h0,&e1,&e2,&m);&m);n n x1=x0,q1=x1*x1-10 x1+36;x1=x0,q1=x1*x1-10 x1+36;n np2:n=0;h=h0;p2:n=0;h=h0;n n x2=x1+h;q2
24、=x2*x2-10 x2+36;x2=x1+h;q2=x2*x2-10 x2+36;n nif(q1q2)if(q1q2)n n h=h+h;n=n+1;h=h+h;n=n+1;n nelseelsen n h=-h;x3=x1;q3=q1;h=-h;x3=x1;q3=q1;6.2 单变量寻优技术单变量寻优技术n np1:x1=x2;q1=q2;x2=x3;q2=q3;p1:x1=x2;q1=q2;x2=x3;q2=q3;n n x3=x2+h;q3=x3*x3-10 x3+36;x3=x2+h;q3=x3*x3-10 x3+36;n n if(q2q3)if(q2q3)n n h=h+h;n
25、=n+1;go to p1;h=h+h;n=n+1;go to p1;n n else elsen n if(n0)if(n0)n nx4=0.5*(x2+x3);q4=x4*x4 10*x4+36;x4=0.5*(x2+x3);q4=x4*x4 10*x4+36;n nif(q4q2)x3=x4;q3=q4;if(q4q2)x3=x4;q3=q4;n nelsex1=x2;q1=q2;x2=x4;q2=q4;elsex1=x2;q1=q2;x2=x4;q2=q4;n n n n c1=(q3-q1)/(x3-x1)c1=(q3-q1)/(x3-x1)n n c2=(q2-q1)/(x2-x1
26、)-c1)/(x2-x3);c2=(q2-q1)/(x2-x1)-c1)/(x2-x3);6.2 单变量寻优技术单变量寻优技术n n if(fabs(c2)e1)if(fabs(c2)e1)n n x1=x2;q1=q2;x1=x2;q1=q2;n n h0=m*h0;go to p2;h0=m*h0;go to p2;n nelsex4=0.5*(x1+x3-c1/c2);elsex4=0.5*(x1+x3-c1/c2);n n q4=x4*x4 10*x4+36;q4=x4*x4 10*x4+36;n n if(q2e2)q5=e2;if(q2e1)if(fabs(q4 q2)/q5)e1
27、)n n if(q4q2)x1=x2;q1=q2;if(q4q2)x1=x2;q1=q2;n n elsex1=x4;q1=q4;elsex1=x4;q1=q4;n n h0=m*h0;go to p2;h0=m*h0;go to p2;6.2 单变量寻优技术单变量寻优技术n n printf(“OPTIM X=%fn”,x4);printf(“OPTIM X=%fn”,x4);n n printf(“OBJ.FUNC=%f”,q4);printf(“OBJ.FUNC=%f”,q4);n n n n n n n n 计算结果:计算结果:n n Q=11,x1=5.000 67,A=5.007
28、5,B=5.000 Q=11,x1=5.000 67,A=5.007 5,B=5.000 6363。6.2 单变量寻优技术单变量寻优技术n n6.2.2 二次插值法二次插值法n n 二次插值法是多项式近似法的一种,即用二次的二次插值法是多项式近似法的一种,即用二次的插值多项式拟合目标函数,并用这个多项式的极小点插值多项式拟合目标函数,并用这个多项式的极小点作为目标函数极值的近似。作为目标函数极值的近似。n n1 1二次插值法的计算公式二次插值法的计算公式二次插值法的计算公式二次插值法的计算公式n n假设目标函数假设目标函数 在三个点在三个点 的函数的函数值分别为值分别为 。可以利用这三个点及相
29、应的函数值。可以利用这三个点及相应的函数值作为二次插值公式,令作为二次插值公式,令n n (6.2.4)(6.2.4)n n 为所求的插值多项式,它应满足条件为所求的插值多项式,它应满足条件(6.2.5)6.2 单变量寻优技术单变量寻优技术n n对多项式对多项式(6.2.4)(6.2.4)式求导数,并令其为零,得式求导数,并令其为零,得n n (6.2.6)(6.2.6)n n n n (6.2.7)(6.2.7)n n(6.2.7)(6.2.7)式就是计算近似极小点的公式。为了确定式就是计算近似极小点的公式。为了确定这个极小点只需算出这个极小点只需算出a1a1和和a2a2,其算法如下。,其算
30、法如下。n n 从从(6.2.5)(6.2.5)可求出可求出n n n n (6.2.8)(6.2.8)6.2 单变量寻优技术单变量寻优技术n n如果设三个点等距离,即如果设三个点等距离,即n n则式则式(6.2.8)(6.2.8)又可写为又可写为 nn n n (6.2.9)(6.2.9)n n设设 为坐标原点,则为坐标原点,则n n n n (6.2.10)(6.2.10)6.2 单变量寻优技术单变量寻优技术n n2.2.用外推法求寻优区间用外推法求寻优区间用外推法求寻优区间用外推法求寻优区间n n外推法外推法外推法外推法是一种寻优极点范围的方法。用二次插值法巡优,是一种寻优极点范围的方法
31、。用二次插值法巡优,有时其最优点存在的范围事先没有给出,因此作为寻优有时其最优点存在的范围事先没有给出,因此作为寻优的第一步,首先就是确定寻优区间。其方法如下:的第一步,首先就是确定寻优区间。其方法如下:n n设从某点设从某点 开始,原始步长为开始,原始步长为 ,则,则 ,n n求目标函数求目标函数 和和 并进行比较。并进行比较。n n若若 ,则将步长加倍,求在则将步长加倍,求在,n n ,等点处目标函等点处目标函数数 的值的值,直至函数值增加为止,如图直至函数值增加为止,如图6.2.3(a)6.2.3(a)所示。所示。6.2 单变量寻优技术单变量寻优技术n n若若 ,则求在则求在 ,n n
32、,等点处的的值,直至函数值增加等点处的的值,直至函数值增加为止,如图为止,如图.2.3(b).2.3(b)n n 对凸函数来说,最小点必落在对凸函数来说,最小点必落在 之间,即之间,即 ,而且有而且有 (6.2.11)(6.2.11)图图6.2.3 外推法图示外推法图示 6.2 单变量寻优技术单变量寻优技术n n 此时,若在此时,若在 与与 之间的中点进行第之间的中点进行第k k+1+1点的计算,点的计算,即取即取 n n (6.2.12)(6.2.12)n n这样共得四个等间距的点这样共得四个等间距的点 ,它们之间的它们之间的间距为间距为 当当 时时 ,;,;当当 时时 ,。比较这四个点的函
33、数值,取函数值最小的。比较这四个点的函数值,取函数值最小的 ,则则 ,这样就可以得三点,这样就可以得三点 ,以便于构成二次插值,以便于构成二次插值函数,并且可以判定函数,并且可以判定 一定在一定在 和和 之间之间。6.2 单变量寻优技术单变量寻优技术n n 3 3外推二次插值法的程序框图外推二次插值法的程序框图n n为便于分析将图所示的框图分为三部分。其中,图为便于分析将图所示的框图分为三部分。其中,图6.2.4(a)6.2.4(a)为外推法最优点存在的区间;图为外推法最优点存在的区间;图6.2.4(b)6.2.4(b)为为二次插值法求近似的最有点;图二次插值法求近似的最有点;图6.2.4(c
34、)6.2.4(c)是比较是比较 与与 ,其比较小者为新的起点,同时缩短步长,其比较小者为新的起点,同时缩短步长 ,再重复图再重复图6.2.4(a)6.2.4(a)及及(b)(b)两部分。两部分。n n例例6.2.2 6.2.2 求目标函数求目标函数 的最小值。的最小值。n n 用用C C语言编写的程序清单如下:语言编写的程序清单如下:n n#include“math.h”#include“math.h”n n#include“stdio.h#include“stdio.h”6.2 单变量寻优技术单变量寻优技术n nmain()main()main()main()n n float x0,x1,
35、x2,x3,x4,e1,e2,q1,q2,q3,float x0,x1,x2,x3,x4,e1,e2,q1,q2,q3,float x0,x1,x2,x3,x4,e1,e2,q1,q2,q3,float x0,x1,x2,x3,x4,e1,e2,q1,q2,q3,q4,q5,m,h0,h,c1,c2;q4,q5,m,h0,h,c1,c2;q4,q5,m,h0,h,c1,c2;q4,q5,m,h0,h,c1,c2;n nint n;int n;int n;int n;n nprintf(“input x0,H0,E1,E2,M”)printf(“input x0,H0,E1,E2,M”)prin
36、tf(“input x0,H0,E1,E2,M”)printf(“input x0,H0,E1,E2,M”);n nscanf(“%f,%f,%f,%f,%f”,&x0,&h0,&e1,&e2,scanf(“%f,%f,%f,%f,%f”,&x0,&h0,&e1,&e2,scanf(“%f,%f,%f,%f,%f”,&x0,&h0,&e1,&e2,scanf(“%f,%f,%f,%f,%f”,&x0,&h0,&e1,&e2,&m);&m);&m);&m);n nx1=x0;q1=x1*x1-10*x1+36;x1=x0;q1=x1*x1-10*x1+36;x1=x0;q1=x1*x1-10*x
37、1+36;x1=x0;q1=x1*x1-10*x1+36;n np2:n=0;h=h0;p2:n=0;h=h0;p2:n=0;h=h0;p2:n=0;h=h0;n n x2=x1+h;q2=x2*x2-10*x2+36;x2=x1+h;q2=x2*x2-10*x2+36;x2=x1+h;q2=x2*x2-10*x2+36;x2=x1+h;q2=x2*x2-10*x2+36;n n if(q1q2)if(q1q2)if(q1q2)if(q1q2)n n h=h+h;n=n+1;h=h+h;n=n+1;h=h+h;n=n+1;h=h+h;n=n+1;n n else else else elsen
38、 n h=-h;x3=x1;q3=q1;h=-h;x3=x1;q3=q1;h=-h;x3=x1;q3=q1;h=-h;x3=x1;q3=q1;6.2 单变量寻优技术单变量寻优技术n np1:x1=x2;q1+q2;x2=x3;q2=q3;p1:x1=x2;q1+q2;x2=x3;q2=q3;p1:x1=x2;q1+q2;x2=x3;q2=q3;p1:x1=x2;q1+q2;x2=x3;q2=q3;n n x3=x2+h;q3=x3*x3-10*x3+36;x3=x2+h;q3=x3*x3-10*x3+36;x3=x2+h;q3=x3*x3-10*x3+36;x3=x2+h;q3=x3*x3-1
39、0*x3+36;n n if(q2q3)if(q2q3)if(q2q3)if(q2q3)n n h=h+h;n=n+1;go to p1;h=h+h;n=n+1;go to p1;h=h+h;n=n+1;go to p1;h=h+h;n=n+1;go to p1;n nelseelseelseelsen n if(n0)if(n0)if(n0)if(n0)n n x4=0.5*(x2+x3);q4=x4*x4-10*x4+36;x4=0.5*(x2+x3);q4=x4*x4-10*x4+36;x4=0.5*(x2+x3);q4=x4*x4-10*x4+36;x4=0.5*(x2+x3);q4=
40、x4*x4-10*x4+36;n n if(q4q2)x3=x4;q3=q4;if(q4q2)x3=x4;q3=q4;if(q4q2)x3=x4;q3=q4;if(q4q2)x3=x4;q3=q4;n nelsex1=x2;q1=q2;x2=x4;q2=q4;elsex1=x2;q1=q2;x2=x4;q2=q4;elsex1=x2;q1=q2;x2=x4;q2=q4;elsex1=x2;q1=q2;x2=x4;q2=q4;n n n n c1=(q3-q1)/(x3-x1);c1=(q3-q1)/(x3-x1);c1=(q3-q1)/(x3-x1);c1=(q3-q1)/(x3-x1);n
41、n c2=(q2-q1)/(x2-x1)-c1)/(x2-x3 c2=(q2-q1)/(x2-x1)-c1)/(x2-x3 c2=(q2-q1)/(x2-x1)-c1)/(x2-x3 c2=(q2-q1)/(x2-x1)-c1)/(x2-x3 6.2 单变量寻优技术单变量寻优技术n n if(fabs(c2)e1)if(fabs(c2)e1)if(fabs(c2)e1)if(fabs(c2)e1)n n x1=x2;q1=q2;x1=x2;q1=q2;x1=x2;q1=q2;x1=x2;q1=q2;n n h0=m*h0;go to p2;h0=m*h0;go to p2;h0=m*h0;go
42、 to p2;h0=m*h0;go to p2;n nelsex4=0.5*(x1+x3-c1/c2);elsex4=0.5*(x1+x3-c1/c2);elsex4=0.5*(x1+x3-c1/c2);elsex4=0.5*(x1+x3-c1/c2);n n q4=x4*x4-10*x4+36;q4=x4*x4-10*x4+36;q4=x4*x4-10*x4+36;q4=x4*x4-10*x4+36;n n if(q2e2)q5=e2 if(q2e2)q5=e2 if(q2e2)q5=e2 if(q2=e1)if(fabs(q4-q2)/q5=e1)if(fabs(q4-q2)/q5=e1)
43、if(fabs(q4-q2)/q5=e1)n n if(q4q2)x1=x2;q1=q2;if(q4q2)x1=x2;q1=q2;if(q4q2)x1=x2;q1=q2;if(q4q2)x1=x2;q1=q2;n n elsex1=x4;q1=q4;elsex1=x4;q1=q4;elsex1=x4;q1=q4;elsex1=x4;q1=q4;n n h0=m*h0;go to p2;h0=m*h0;go to p2;h0=m*h0;go to p2;h0=m*h0;go to p2;n n printf(“OPTIM X=%fn”,x4);printf(“OPTIM X=%fn”,x4);p
44、rintf(“OPTIM X=%fn”,x4);printf(“OPTIM X=%fn”,x4);n n printf(“OBJ.FUNC=%f”,q4);printf(“OBJ.FUNC=%f”,q4);printf(“OBJ.FUNC=%f”,q4);printf(“OBJ.FUNC=%f”,q4);n n n n n n 图6.2.4 外推二次插值法的程序框图当 x0=0.5,h0=1,0,e1=0.001,e2=1,m=0.1 时,计算结果:optim x=5.0,obj.fucn=11.06.3 多变量寻优技术多变量寻优技术n n单变量寻优技术,由于只有一个变量,因此只要在一条线上搜
45、索最优参数就可以了。在变量超过一个以后,就要在多维空间搜索一组最优参数,因此确定寻优方向及寻优步长的问题就比较突出了。根据寻优方向及寻优步长的不同,就有不同的寻优方法。本节将介绍三种方法:最速下降法最速下降法,共轭梯度法共轭梯度法和单纯形法单纯形法。6.3 多变量寻优技术多变量寻优技术n n.3.1 最速下降法最速下降法n n一、最速下降法的基本思想一、最速下降法的基本思想一、最速下降法的基本思想一、最速下降法的基本思想n n为了弄清这种寻优方法的基本思想,可以举一个盲人为了弄清这种寻优方法的基本思想,可以举一个盲人下山的例子。当盲人下山时,眼睛看不见山谷的方位,下山的例子。当盲人下山时,眼睛
46、看不见山谷的方位,如何能沿最短路线迅速下降呢?一般盲人只好靠手前如何能沿最短路线迅速下降呢?一般盲人只好靠手前后探索试探着前进的方向,哪儿最陡?一定下降的最后探索试探着前进的方向,哪儿最陡?一定下降的最快,这种寻求最速下降的方向作为搜索的方向,一步快,这种寻求最速下降的方向作为搜索的方向,一步步逼近最低点就是最速下降的基本思想。步逼近最低点就是最速下降的基本思想。n n要求多变量函数要求多变量函数 的极小点的极小点 ,其中,其中 为为 维方向,维方向,首先从给定的起始点首先从给定的起始点 出发,沿某个有利的方向出发,沿某个有利的方向 进进行一维搜索,求得行一维搜索,求得 在方向在方向 上的极小
47、点上的极小点 ,然后再,然后再从从 出发,沿某个新的有利方向出发,沿某个新的有利方向 进行搜索,求得进行搜索,求得 在在 方向上的近似极小点方向上的近似极小点 。如此继续,直至满足。如此继续,直至满足给定的精度为止。给定的精度为止。6.3 多变量寻优技术多变量寻优技术n n二、最速下降法的计算方法二、最速下降法的计算方法二、最速下降法的计算方法二、最速下降法的计算方法n n设目标函数设目标函数 ,求使目标函数,求使目标函数 为最小值的变为最小值的变量量 。设。设 为为 维向量,对维向量,对 存在二阶偏导数。存在二阶偏导数。n n现假设已经迭代到第现假设已经迭代到第 步,得到此时刻的步,得到此时
48、刻的 ,考虑,考虑 有一个微小的变化,即有一个微小的变化,即n n (6.3.1)(6.3.1)n n 为为 附近的点,其两点的距离为:附近的点,其两点的距离为:n n (6.3.2)(6.3.2)6.3 多变量寻优技术多变量寻优技术n n因为因为 的微小变化,必然引起目标函数的微小变化,必然引起目标函数 也有一也有一个变化:个变化:n n (6.3.3)(6.3.3)n n所谓所谓 下降最快,及最大变化的问题,经过上述下降最快,及最大变化的问题,经过上述变换,就转化为以下具有约束的极值问题。变换,就转化为以下具有约束的极值问题。n n在下列约束条件下:在下列约束条件下:n n (6.3.4)
49、(6.3.4)n n通过适当选择通过适当选择 ,使下式极大化,使下式极大化n n n n (6.3.5)(6.3.5)6.3 多变量寻优技术多变量寻优技术n n具有约束的极值问题可以采样拉格朗日乘子,化为无具有约束的极值问题可以采样拉格朗日乘子,化为无约束极值问题。设约束极值问题。设 为拉格朗日乘子,则为拉格朗日乘子,则n n (6.3.6)(6.3.6)n n式式(6.3.5)(6.3.5)对对 求偏微分,并令其等于零,有求偏微分,并令其等于零,有n n n n解出解出 为为n n (6.3.7)(6.3.7)n n将方程将方程(6.3.7)(6.3.7)代入代入(6.3.2)(6.3.2)
50、,计算出,计算出 因子为因子为n n 6.3 多变量寻优技术多变量寻优技术n n令:令:(6.3.9)(6.3.9)n n则则 n n (6.3.10)(6.3.10)n n将将(6.3.10)(6.3.10)代入代入(6.3.7)(6.3.7)得到得到n n n n (6.3.11)(6.3.11)n n即,我们可以得到第即,我们可以得到第 步时的步时的 为为n n n n (6.3.12)(6.3.12)6.3 多变量寻优技术多变量寻优技术n n下面,确定下面,确定(6.3.12)(6.3.12)的正负号。将的正负号。将(6.3.8)(6.3.8)式代入式代入(6.3.7)(6.3.7)式