一维优化方法

一维优化方法
一维优化方法

一维优化方法

最优化设计数学模型中的基本概念:

1、设计变量

在机械设计中,区别不同的设计方案,通常是以一组取值不同的参数来表示。这些参

数可以是表示构件形状、大小、位置等的几何量,也可以是表示构件质量、速度、加速度、力、力矩等的物理量。在构成一项设计方案的全部参数中,可能有一部分参数根据实际情

况预先确定了数值,它们在优化设计过程中始终保持不变,这样的参数称为给定参数(或

叫预定参数)或设计常数。另一部分参数则是需要优选的参数,它们的数值在优化设计过

程中则是需要优选的参数,它们的数值在优化计算过程中是变化的,这类参数称为设计变量,它相当于数学上的独立自变量。一个优化问题如果有n个设计变量,而每个设计变量

用xi(i=1,2, ,n)表示,则可以把n个设计变量按一定的次序排列起来组成一个列阵或行

阵的转置,即写成

??x1?

x=?x?

2?=[x1,x2, ,xT

?? ?n]

?x?

n?

我们把x定义为n维欧式空间的一个列向量,设计变量x1,x2, ,xn为向量x的n个

分量。以设计变量x1,x2, ,xn为坐标轴展成的空间称为n维欧式空间,用Rn表示。该空

间包含了该项设计所有可能的设计方案,且每一个设计方案就对应着设计空间上的一个设

计向量或者说一个设计点x。

2、目标函数

优化设计是在多种因素下欲寻求使设计者员满意、且适宜的一组参数。“最满意”、“最适宜”是针对某具体的设计问题,人们所追求的某一特定目标而言。在机械设计中,

人们总希望所设计的产品具有最好的使用性能、体积小、结构紧凑、重量最轻和最少的制

造成本以及最多的经济效益,即有关性能指标和经济指标方面最好。

在优化设计中,一般将所追求的目标(最优指标)用设计变量的函数形式表达,称该函

数为优化设计的目标函数。目标函数的值是评价设计方案优劣程度的标准,也可称为准则

函数。建立这个函数的过程称为建立目标函数。一般的表达式为

F(x)=F(x1,x2, ,xn)

它代表着某项重要的特征,例如机器的某种性能、体积、质量、成本、误差、效率等等。

目标函数是设计变量的标量函数。优化设计的过程就是通过优选设计变量使目标函数

达到最优值,最优值的数学表征为最小值minF(x)或最大值maxF(x)。按一般的规范做法,把优化问题归结为求目标函数值的最小值居多。在求解过程中,目标函数值越小,设计方

案越优。对于某些追求目标函数最大值的问题,例如前述求月生产利润最大的问题或谋求

设计的效率最高、寿命最长等等,可转化(8-1) (8-2)

为求目标函数负值的最小值问题,即

maxF(x)?min[-F(x)] (8-3) 因此,本章在后面的叙述中,一律把优化问题规范为求

目标函数的最小值,表达式见式(8-2)。在优化设计中,仅根据一项准则建立的一个目标

函数,称为单目标函数。如前面举例中的生产调度问题中,为了实现单月生产利润最大化

而建立的目标函数即属于单目标优化设计问题。若在设计中需要同时兼顾多个设计准则,

则需要建立多个目标函数,这种问题即为多目标优化问题。

在解决优化设计问题时,正确选择目标函数是非常重要的,它不仅直接影响优化设计

的结果,而且对整个优化计算的繁简难易也会有一定的影响。

3、约束条件与可行域

优化设计不仅要使所选择方案的设计指标达到最佳值,同时还必须满足一些附加的设

计条件,这些附加的设计条件都是对设计变量取值的限制,在优化设计中叫做设计约束或

约束条件。它的表现形式有两种,一种是不等式约束,即

另一种是等式约束,即

gu(x)≤0 或gu(x)≥0hv(x)=0u=1,2, ,m v=1,2, ,p

式中gu(x)和hv(x)分别为设计变量的函数;m和p分别表示不等式约束和等式约束的个数,而且等式约束的个数p必须小于设计变量的个数n。因为从理论上讲,存在一个等

式约束就得以用它消去一个设计变量,这样便可降低优化设计问题的维数。所以,当p=n 时,即可由p个方程组中解得唯一的一组x1,x2, ,xn值。这样,方案的选择就成为唯一

的或确定的了。

在解决工程问题时,约束条件是优化设计获得工程可接受设计方案的重要条件。不等

式约束及其有关概念,在优化设计中是相当重要的。每一个不等式约束(如g(x)≤0)都把

设计空间划分成两部分,一部分是满足该不等式约束条件的,即g(x)

)>0。两部分的分界面叫做约束面,即

由g(x)=0的点集构成。在二维设计空间中约束面是一条曲线或直线,在三维以上的

设计空间中则是一个曲面或超曲面。一个优化设计问题的所有不等式约束的边界将组成一

个复合约束边界,如图8-3表示了一个二维问题的情况。其约束边界所包围的区域(图中

阴影线内)是设计空间中满足所有不等式约束条件的部分,在这个区域中所选择的设计变

量是允许采用的,我们称这个区域为设计可行域或简称为可行域,记作

D={xgu(x)≤0u=1,2, ,m}

若某项设计中除了具有m个不等式约束条件外,还应满足p个等式约束条件时,即对

设计变量的选择又增加了限制。如图8-3所示,当有一个等式约束条件h(x1,x2)=0时,

其可行设计方案只允许在D域内的等式函数曲线的AB段上选择。因此,在一般的情形下,优化问题的设计可行域可表示为

?g(x)≤0 u=1,2, ,m ?D=?u? ?hv(x)=0 v=1,2, ,p

与此相反,除去可行域以外的设计空间称为非可行域。据此,在可行域内的任一设计

点都代表了一个可接受的设计方案,这样的点叫可行设计点或内点,如图所示的x(1)点;在约束边界上的点叫极限设计点或边界点,如点x(3),此时这个边界所代表的约束叫作起作用约束。x(2)点则称为外点,即非可行点,该点为不可接受的设计方案,因为该点违反

了约束条件2,即g2(x(2))>0。

二、优化计算的数值解法及收敛条件

最优化技术总体包含两个方面,首先是根据实际的生产或科技问题构造出优化的数学

模型,再采取恰当的优化方法对数学模型进行求解。无论是无约束优化问题还是约束优化

问题,其本质上都是求极值的数学问题。从理论上,其求解可用解析法,即微积分学和变

分法中的极值理论,但由于实际中的优化数学模型多种多样,往往目标函数及约束函数都

是非线性的,采用解析法求解变得非常复杂和困难,甚至在有些时候无法求解数学模型。

因此,随着优化技术和电子计算机技术的不断发展,逐渐产生了以计算机程序计算为主的

一种更为实用的求优方法—数值计算法,通常也称为求解非线性规划的最优化方法。

1、数值计算法的迭代过程

最优化方法是与电子计算机及计算技术的发展紧密相联系的,数值计算法的迭代过程

也是依赖于计算机的运算特点而形成的。所以,计算过程完全有别于解析法的求解过程。

优化方法的迭代特点是:按照某种人为规定的逻辑结构,以一定的格式反复的数值计算,

寻求函数值逐次下降的设计点,直到满足规定的精度时才终止迭代计算,最后的设计点即

为欲求的最优点,所得到的解是满足规定精度的近似解。

图8-9 二维优化问题的迭代过程

总体做法如图8-9所示,由选定的初始点x(0)出发,沿着某种优化方法所规定的搜寻方向s(0),以一定的步长α(0),按迭代格式产生第一个新的设计点x(1),

x(1)=x(0)+α(0)s(0),且同时满足F(x(1))

一维优化方法

一维优化方法 最优化设计数学模型中的基本概念: 1、设计变量 在机械设计中,区别不同的设计方案,通常是以一组取值不同的参数来表示。这些参 数可以是表示构件形状、大小、位置等的几何量,也可以是表示构件质量、速度、加速度、力、力矩等的物理量。在构成一项设计方案的全部参数中,可能有一部分参数根据实际情 况预先确定了数值,它们在优化设计过程中始终保持不变,这样的参数称为给定参数(或 叫预定参数)或设计常数。另一部分参数则是需要优选的参数,它们的数值在优化设计过 程中则是需要优选的参数,它们的数值在优化计算过程中是变化的,这类参数称为设计变量,它相当于数学上的独立自变量。一个优化问题如果有n个设计变量,而每个设计变量 用xi(i=1,2, ,n)表示,则可以把n个设计变量按一定的次序排列起来组成一个列阵或行 阵的转置,即写成 ??x1? x=?x? 2?=[x1,x2, ,xT ?? ?n] ?x? n? 我们把x定义为n维欧式空间的一个列向量,设计变量x1,x2, ,xn为向量x的n个 分量。以设计变量x1,x2, ,xn为坐标轴展成的空间称为n维欧式空间,用Rn表示。该空 间包含了该项设计所有可能的设计方案,且每一个设计方案就对应着设计空间上的一个设 计向量或者说一个设计点x。 2、目标函数 优化设计是在多种因素下欲寻求使设计者员满意、且适宜的一组参数。“最满意”、“最适宜”是针对某具体的设计问题,人们所追求的某一特定目标而言。在机械设计中, 人们总希望所设计的产品具有最好的使用性能、体积小、结构紧凑、重量最轻和最少的制 造成本以及最多的经济效益,即有关性能指标和经济指标方面最好。 在优化设计中,一般将所追求的目标(最优指标)用设计变量的函数形式表达,称该函 数为优化设计的目标函数。目标函数的值是评价设计方案优劣程度的标准,也可称为准则 函数。建立这个函数的过程称为建立目标函数。一般的表达式为

最优化方法一维搜索法C++程序

加步探索法 #include #include using namespace std; double fun(double t) { return (t*t*t-2*t+1); } double max(double a,double b) { if(a>b)return a; else return b; } double min(double a,double b) { if(a>b)return b; else return a; } double Addstep(double(*pfun)(double t)) { int k=0; double t0=0,h=1,r=2,t,a=0,b=0; t=t0+h; do{ if(fun(t)

对分法 #include #include using namespace std; double fun(double t) { return (t*t-3*t); } double dfun(double t) { return (2*t-3); } void Dichotomous(double(*pfun)(double t),double (*pdfun)(double t)) { int maxflag=1000,k=1; double a=-3,b=5,c,err=0.1,t; do { c=(a+b)/2; if(dfun(c)<0){a=c;} else {if(dfun(c)>0){b=c;} else{a=c;b=c;}} k++; }while(fabs(a-b)>err&&k=maxflag) cout<

第三章 一维搜索

第三章 常用一维搜索方法 第节维搜索概述 第一节 一维搜索概述一、下降迭代算法的基本思想、下降迭代算法的基本思想 不失一般性,考虑如下的优化问题 min ()x S f x ∈ (3.1) 其中:n f S R R ?→. 下降迭代算法的的基本思想:给定一个初始点1n x R ∈,按 }k 使得当}k 是有限点列时照某种迭代规则产生一个点列{x ,使得当{x 其最后一个点是最优化问题的最优解;当{}k x 是无穷点列时,它有极限点,且其极限点是优化问题的最优解.

设已迭代到点k x 处,则下一次迭代会出现以下两种情况之一: (1) 从k x 出发沿任何方向移动,目标函数不再下降; 出发至少存在个方向使标数有所 (2)从k x 出发至少存在一个方向使目标函数()f x 有所下降.这时,从中选取一个下降方向k d ,即k d 满足 ()0k T k f x d ?<,然后在直线 k k x x d λ=+上适当的确定一个新点 1k k k k x x d λ+=+,使得1()()()k k k k k f x f x d f x λ+=+<,此时就说完成了第1k +次迭代. 基本迭代格式 1k k k k x x d λ+=+ 本代格式 k d ------搜索方向 k λ-----步长因子或搜索步长

最优化问题的求解步骤 最优化问题的求解步骤:(1)选取初始点1x ,令1k =; (2)构造搜索方向k d .依照一定的规则,构造()f x 在点 k x 处的下降方向或可行下降方向作为搜索方向k d ; (3)确定搜索步长k λ.以k x 为起点沿搜索方向k d 选取的 λ适当步长k ,使得目标函数值有某种意义的下降,通常使 ()()k k k k f x d f x λ+<. 1k +令1k k k + (4)求出新的迭代点x .令k x x d λ=+(5)检验终止条件.判定1 k x +是否满足终止条件,若满足 停止迭代输出近似最优解否则令转 停止迭代,输出近似最优解1k x +;否则,令:1k k =+,转(2).

一维搜索方法

一维搜索方法:(方法比较) “成功—失败”法、二分法、0.618法(黄金分割法)、牛顿法、二次插值法、D.S.C法、Powell法、D.S.C—Powell组合法。 1、“成功—失败”法:主要思想:从一点出发,按一定的步长搜索新点,若成功,加大步长继续搜索,否则,缩短步长小步后退。此方法可以求最优解所在区间,称为“搜索区间”。 2、二分法:主要思想:区间[a,b]的中间值x0,判断f(x)的导数在三个点处的值,舍去一部分区间再求f(x)的极小值。 3、0.618法:等比例收缩原则,每次留下来的区间长度是上次留下来的区间长度的w倍。以及对称原则、去坏留好原则。W=0.618 4、牛顿法:基本思想:在极小值点附近用目标函数的二阶泰勒多项式近似代替目标函数,从而求得目标函数的极小值点的近似值。 5、二次插值法:牛顿法是在x k附近的目标函数用泰勒多项式近似代替,而此法是将f(x)用二次插值多项式p(x)近似代替。把p(x)的极小值点作为f(x)极小值点的代替,从来求得函数的极小值。 6、D.S.C法:主要思想:利用成功—失败法寻找靠近极小值点的三点,进行二次插值。 优点是:收敛速度快,且不要求函数可微。 7、Powell法:基本思想:在搜索方向开始得到三点x0,x1,x2后,作二次插值,求得最小值x, 在四点中去坏留好,在余下的三点中再作二次插值…… 8、D.S.C—Powell组合法: 几种方法比较: D.S.C—Powell组合法是非常好的一种方法,它比任何一个单个方法都好 D.S.C—Powell组合法与0.618法比较:D.S.C—Powell法中函数值的计算要比黄金分割法少得多,一般来讲它优于黄金分割法。 但:D.S.C—Powell法不一定能收敛到最优解。 最速下降法与修正牛顿法: 对于正定二次函数,牛顿法一步可以求得最优解,对于非二次函数,牛顿法并不能保证有限次求得其最优解,但由于目标函数在极小值的附近近似于二次函数,故当初始点靠近极小值时,牛顿法收敛的速度比较快。 牛顿法的缺点是:计算量大。 故:开始几步用最速下降法,后面用牛顿法。 最速下降法、牛顿法、修正牛顿法是无约束优化方法中的基本方法。

现代设计一维优化方法——黄金分割法c程序源代码

现代设计一维优化方法——黄金分割法c程序 该程序是现代设计优化方法,黄金分割法的c语言源代码 该程序无错误,已经调试,后面附有实例,仅供参考 希望对你有所帮助………… #include "stdio.h" #include "math.h" #include "conio.h" #define e 0.001 #define tt 0.01 double function(double x) { double y; y=8*pow(x,3)-2*pow(x,2)-7*x+3; return(y); } void searching(double a[3],double f[3]) {double t=tt,a1,f1,ia; int i; a[0]=0; f[0]=function(a[0]); for(i=0;;i++) {a[1]=a[0]+t; f[1]=function(a[1]); if(f[1]=e) { t=-t;a[0]=a[1];f[0]=f[1]; } else{ if(ia==1) return; t=t/2;ia=1; } } for(i=0;;i++) { a[2]=a[1]+t; f[2]=function(a[2]); if(f[2]>f[1]) break; t=2*t; a[0]=a[1];f[0]=f[1]; a[1]=a[2];f[1]=f[2];

} if(a[0]>a[2]) { a1=a[0];f1=f[0]; a[0]=a[2];f[0]=f[2]; a[2]=a1;f[2]=f1; } return; } double gold(double *ff) { double a1[3],f1[3],a[4],f[4]; double aa; int i; searching(a1,f1); a[0]=a1[0];f[0]=f1[0]; a[3]=a1[2];f[3]=f1[2]; a[1]=a[0]+0.382*(a[3]-a[0]); a[2]=a[0]+0.618*(a[3]-a[0]); f[1]=function(a[1]); f[2]=function(a[2]); for(i=0;;i++) { if(f[1]>=f[2]) {a[0]=a[1];f[0]=f[1]; a[1]=a[2];f[1]=f[2]; a[2]=a[0]+0.618*(a[3]-a[0]); f[2]=function(a[2]); } else{ a[3]=a[2];f[3]=f[2]; a[2]=a[1];f[2]=f[1]; a[1]=a[0]+0.382*(a[3]-a[0]); f[1]=function(a[1]); } if(a[3]-a[0]

相关文档
最新文档