优化设计实验指导书(完整版)

上传人:小** 文档编号:51071304 上传时间:2022-01-24 格式:DOC 页数:42 大小:829.50KB
收藏 版权申诉 举报 下载
优化设计实验指导书(完整版)_第1页
第1页 / 共42页
优化设计实验指导书(完整版)_第2页
第2页 / 共42页
优化设计实验指导书(完整版)_第3页
第3页 / 共42页
资源描述:

《优化设计实验指导书(完整版)》由会员分享,可在线阅读,更多相关《优化设计实验指导书(完整版)(42页珍藏版)》请在装配图网上搜索。

1、优化设计实验指导书潍坊学院机电工程学院2008年10月实验一黄金分割法 ,2实验二二次插值法 ,5实验三Powell法 ,8实验四复 合 形 法 ,12实验五惩罚函数法 ,191实验一 黄金分割法一、实验目的1、加深对黄金分割法的基本理论和算法框图及步骤的理解。2 、培养学生独立编制、调试黄金分割法 C 语言程序的能力。3 、掌握常用优化方法程序的使用方法。4、培养学生灵活运用优化设计方法解决工程实际问题的能力。二、实验内容1、编制调试黄金分割法C 语言程序。2、利用调试好的 C 语言程序进行实例计算。3、根据实验结果写实验报告三、实验设备及工作原理1、设备简介装有 Windows 系统及 C

2、 语言系统程序的微型计算机,每人一台。2、黄金分割法 (0.618 法 ) 原理0.618 法适用于区间上任何单峰函数求极小点的问题。对函数除“单峰”外不作 其它要求,甚至可以不连续。因此此法适用面相当广。0.618 法采用了区间消去法的基本原理,在搜索区间内适当插入两点和,它们把 分为三段, 通过比较和点处的函数值, 就可以消去最左段或最右段, 即完成一次迭代。 然后再在保留下来的区间上作同样处理,反复迭代,可将极小点所在区间无限缩小。 现在的问题是:在每次迭代中如何设置插入点的位置,才能保证简捷而迅速地找到极 小点。在 0.618 法中,每次迭代后留下区间内包含一个插入点,该点函数值已计算

3、过, 因此以后的每次迭代只需插入一个新点,计算出新点的函数值就可以进行比较。设初始区间a,b的长为L。为了迅速缩短区间,应考虑下述两个原则:(1) 等比收缩原理使区间每一项的缩小率不变,用表示(0入1)。(2) 对称原理一一使两插入点x1和x2,在a,b中位置对称,即消去任何一边区 间a,x1或x2,b,都剩下等长区间。即有ax1=x2b如图 4-7 所示,这里用 ax1 表示区间的长, 余类同。 若第一次收缩, 如消去 x2,b 区间,则有: 入=(ax2)/(ab)= 入L/L若第二次收缩,插入新点x3,如消去区间x1,x2,则有 入=(ax1)/(ax2)=(1-入)L/入L 根据原理应

4、有:(ax2)/(ab)=(ax1)/ax2即 入L/L=(1-入)L/入L可得入A2+入-1=0解此方程,舍去负根,取有用的根为入=(sqrt(5)-1)/2=0.618入=0.618这样的比例又称为黄金分割比,它是一个具有奇妙性质的数,历史上曾不断 作为美学方面的最佳比而反复出现。黄金分割比至今仍有很多应用。3、黄金分割法计算步骤(1) 确定f(x)的初始搜索区间a,b及终止限。(2) 计算 x2=a+0.618(b-a),f2=f(x2)(3) 计算 x1= a+0.382(b-a),f1=f(x1).(4) 若 |x2-x1|=$,转(5)。(5) 若 f1f2 ,则置 a=x1, x

5、1=x2, f2=f1,转(4 )。4、黄金分割法计算框图四、实验步骤:1编制调试程序。2计算实例。五、实验报告内容1、绘制程序框图。2、记录计算结果并分析。4实验二 二次插值法、实验目的1、加深对二次插值法的基本理论和算法框图及步骤的理解。2、培养学生独立编制、调试二次插值法C 语言程序的能力。二、实验内容1、编制调试二次插值法 C 语言程序。2、利用调试好的 C 语言程序进行实例计算。3、根据实验结果写实验报告三、实验设备及工作原理1、设备简介装有 Windows 系统及 C 语言系统程序的微型计算机,每人一台。2、二次插值法原理f(x) ,并以函数 P(x) 的极值点 xp 再通过比较各

6、插值点和 xp *的函数值多项式是逼近函数的一种常用工具。 利用插值多项式进行一维搜索的基本思想是构造一个较低的插值多项式 P(x) 来近似地代替原目标函数 (即 P/ (x)=0 的根)作为目标函数 f(x) 的近似极值点。及其所在位置,设法缩减搜索区间。从而最终逼近函数f(x) 的极值点 .5#P(x) 是三次多项式,则称为三次插如果 P(x) 是二次多项式,则称为二次插值法,若 值法。一般来说,三次插值的收敛性要好一些,但要计算函数导数;而二次插值计算较简 单且具有一定的精度,故应用广泛。二次插值又称为抛物线法。 设原目标函数 f(x) 的初始单峰搜索区间 x 1,x 3 已确定。 函

7、数 f(x)在 Xl,X2,X3 三点处函数值 fl,f 2,f 3,其中 XlX2f(x 2)f(X 3)。即在三点 处函数值为“高低高”形态(或称“两头大,中间小” ),见图 4-9。作二次插值多项式P(x)=a 0+ a 1X+ a 2X2根据插值条件:在插值点处函数 P(X) 与目标函数 f(X) 应具有相同函数值。 P(X) 应满足P(X1)2=a 0+a 1X1+a 2X1 =f1P(X2)2=a 0+a 1X1+a 2X2 =f2,21J J J J JJ1P(X3)2=a 0+a 1X1+a 2X3 =f3对式 P(X)=a 0+a 1X+a2X2求导并令其等于零,得P/(x)

8、= a i+2a 2X=0或与为 x=- a i/2 a 2,2 2由式 21 中相邻两方程相减消去,得到22a 1(x1-x2)+a 2(x1 -x2)=f 1-f 232a 1(x 2-x 3)+ a 2(x 2 -x 3 )=f 2-f 3,23由此解出a i和a 2,再代入2 -2,于是插值多项式P(x)的极小点为* 2 2 2 2 2 2xp =(x 2 -x3 )f 1+(x3-x 2)f 2+(x1 -x2 )f 3/2(x 2-x3)f 1+(x3-x2)f 2+(x1-x2)f 3 ,2-4Xp*即为目标函数f(x)的极小点的一个近似点。若f(x)本身为二次函数,则在理论上按

9、式2-4 一次求值就可找到最优点,Xp*即为所求。若f(x)为高于二次的函数或其它函数,则一般Xp*不与原函数f(x)的极小点x*重合,如课本图示。 为了求得满足一定精度要求的 f(x) 的极小点 x* ,可采用逐步缩小区间的办法。 如课本图示,搜索区间的缩小可根据Xp*和X2,f(xp*)和f(x2)的相互关系,分六种不同的情况。图中阴影部分为消去的区间。可将f(x p*)和f(x 2)中函数值高的点作为缩小后的新区间的一个边界点。然后以X2,X p*,Xi (或X3)再次构造一条具有“高低一一高”形态的抛物线。如此反复进行,直到搜索区间内的I X2-X p* I值小于规定的精度时,停止迭代

10、,最后以Xp和X2中函数值较小的点作为f(x)的极值点X。3、二次插值法计算步骤:(1) 确定初始搜索区间X 1,X 3并给定在初始区间X 1,X 3内选定一点X2,应满足条件: X1 X2f(X 2)f(X 3),即函数值具有“两头大,中间小”的性质。这可以采用中 所述进退法完成。(2) 以 X1,X 2 ,X 3三点构造新插值曲线 P(X) ,并按式 4-9 求出 Xp*。(3) 检验I X2-Xp* I ?若是终止迭代,以X2,X p*中函数值较小的点作为最优点x*;若否, 转下一步。(4) 判别X2和Xp*,f(x 2)和f(x p*)的相互关系属于图4-10中何种情况。舍去函数值较大

11、 的点X1 (或X3)缩小区间,用X2,X p ,X 3 (或X1)作为新的三点(在这三点处函数值 仍保持“高低高”形态) ,转向( 2)重新构造新插值曲线 P(X) 。4、二次插值法的计算框图见下图:6四、实验步骤:1.编制调试程序。2 计算实例。五、实验报告内容3、绘制程序框图。4、记录计算结果并分析。8实验三 Powell法、实验目的1、加深对Powell法的基本理论和算法框图及步骤的理解。2、熟悉、调试 Powell法语言程序。3、巩固无约束优化方法。二、实验内容1、调试Powell法C语言程序。2、利用调试好的 C语言程序进行实例计算。3、根据实验结果写实验报告三、实验设备及工作原理

12、1、设备简介装有Windows系统及C语言系统程序的微型计算机,每人一台。2、Powell法原理(1)鲍威尔共轭方向法原理1)共轭方向的构造(以二维为例)对于某两点X!0, X20,分别沿方向S ( Xio - X2O,S1不平 行)一维搜索得到两个最优点X1,X2 ,构成方向S2=X2-Xi,则Si与S2为共轭方向。如图所示。共轭方向法的迭代过程2) 鲍威尔共轭方向法基本原理:a、 第一轮迭代与坐标轮换法相同。将本轮迭代起点和 N次一维搜索的末点组成一个 新的方向,沿这个方向一维搜索,得到本轮迭代的终点。b、 从第二轮起,舍去前一轮的第一个一维搜索方向,将前一轮的后N个一维搜索方向作为本轮迭

13、代的前 N个方向,这N个方向的一维搜索终点与本轮搜索的起点构成第N+1个一维搜索方向,沿这个方向做一维搜索,得到本轮搜索的终点。c、若不满足精度要求,则重复迭代。(3) 鲍威尔共轭方向法的特点收敛速度比坐标轮换法有明显的提高。前提是每轮迭代所产生的新的方向与本轮前N-1个方向之间要保持线性无关。若这些方向之间线性相关,则降低了搜索空间的维数, 导致不能完全穷尽对设计空间每个方向的搜索,从而不能收敛于真正的最优解。(2) 改进的鲍威尔法1) 基本原理共轭方向法的前提是每一轮迭代中新生成的第N+1个方向与其它方向线性无关,如果出现线性相关,则导致算法不能正确收敛。鲍威尔为了解决该问题,加入了对共轭

14、方向的判断。如果线性无关则采用该方向,但并不是机械的替换上一轮第一个方向,而是替换函数 值下降最多的方向。如果线性相关,则还是用上一轮迭代的方向。2) 线性相关性的判别准则”f3 fi1( f1+f3 2f2)(f1 f2也m)V0.5Am ( f1 f3)其中:fi 本轮迭代起点函数值f2 本轮迭代终点函数值f3-映射点函数值 mk-一函数值下降最大的一步一维搜索 若满足该公式,则去掉第m个方向,下一轮迭代的m到N方向采用本轮次 第m+1到N+1个方向;若不满足,则本轮迭代结束,以本轮终点为下一轮起点,仍采用 本轮的N个方向进行迭代。3、基本步骤(1) 给定初始点和计算精度。置k=1,取N个

15、坐标轴的单位向量为搜索方向 (i= 0,1,N-1),亠kk(3) 从X 出发,沿Si维搜索,得到N个极小点kXi , ( i=1,2,,N),找到函数值下降最快的一次一维搜索的函数下降值和方 向,记作 km ,S;kkk(4)计算反射点 X N2 X N _ X 0, 计算 f 1 , f 2 , f 3。若满足判别条件,构造本轮迭代第N+ 1个方向:Sn : Xk由N次一维搜索的终点沿Sn维搜索得到本轮迭代终点,作为12#|z下一轮迭代(k+1轮)起点;去掉方向,将Sm 作为下一轮迭代的第N个 方向。否则,保留前N个搜索方向到下一轮迭代,取m in(f 2, f3)对应的点作 为下一轮起点

16、。(6)若满足迭代终止条件:k -1kk 1 kX 0 X 0f(X )f(X)f(X )终止迭代,输出优化结果;否则k - k+1,返回(3)。4、Powell法的计算框图见下图:四、实验步骤1. 编制调试程序。2 计算实例。五、实验报告内容1、绘制程序框图。2、记录计算结果并分析实验四复合形法一、实验目的1、加深对复合形法的基本理论和算法框图及步骤的理解。2、 培养学生独立编制、调试复合形法C语言程序的能力。二、实验内容1、 编制调试复合形法C语言程序。2、利用调试好的 C语言程序进行实例计算。3、根据实验结果写实验报告三、实验设备及工作原理1、设备简介装有Windows系统及C语言系统程

17、序的微型计算机,每人一台。2、复合形法原理(1 )在设计空间找到K个可行点构成多面体(二维:多边形,三维:多 面体,再高维的:超多面体),即所谓初始复合形。根据复合型各顶点目标 函数值的大小找到复合形的最坏点,以其它K- 1个顶点的形心为中点,找到 最坏点的映射点,其它K- 1个点与这个映射点构成新的复合形。这样反复进 行坏点的映射,使得复合形不断更新或者收缩,使之逐渐逼近约束最优点。(2)初始复合形的形成a、初始复合形的顶点数 K的确定:K 一般取在一般n+1? K? 2n,当维数n较小时取较大的 K (如K=2n);当n较大时, 取较小的K。b、初始复合形的顶点的确定1)人工试凑的方法适于

18、维数较低的问题2)随机产生法之一 利用随机函数在(0,1)内产生n个随机数,可以得n个变量xi=ai+ E i (bi-ai)i=1,2,na , bi分别为n个变量的下界和上界于是得复合形的第一个顶点记为X,经过K次这样的步骤可以依次得到(ai , bi)内的K个随机点X,X,X(K),共产生Kx n个随机数。会有两种情况:a、K个随机点都不可行,重新产生;b、至少有一个点是可行点,设法调入可行域 将非可行点调入可行域(结合图5 8)17#由随机法产生的 K个随机点排队,可行点放在前面,非可行点放在后面, 假设前q个 点为可行点,那么第q+1个点X(q+1)为非可行点,将X(q+1)(3)

19、初始复合形的搜索方法a、映射(也叫反射)(见图)#步骤:1)计算复合形各顶点的目标函数值,比较其大小,找出最好点X(L)1k -1、最坏点x(H)、次坏点x(SH);2)算除去最坏点之外的k-1顶点的中心X(C)=3) 计算映射点 X(R) X(R) = X(C) + a (X(C) X(H)4) 如果映射点X(R)既为可行点,且FrFh,即用X(R)代替X(H)点,组成新的复 合形;否则将a缩小0.7倍,继续用上述公式计算 X(R),直到X(R)既可行又适用。b、扩张的方法(见图)如果得到的反射点 X(R)为可行点,而且目标函数值下降较多(如FrFc),则沿着反射方向继续前进,即扩张法,可能

20、会找到更好的新点XX(E)= X(R) + 丫 (X(R) - X(c)丫 取 1如果X(E)既为可行点,且FeFr,则反射成功,则用X(E)代替X(H);否则用原反射点X(R)代替X(H)。H如果在中心点X(C)以外找不到合适的反射点,则可用收缩的方法在X(C)和X(H)中间找较好的新点X(K)x(K)= x(H)+b(x(C) -x(H)收缩系数 3取 0.7如果该点适用,收缩成功,用X (K)代替x(H).d. 压缩的方法(见图)如果以上方法均无效,还可以将复合形各顶点向最好点靠拢的方法,即压缩。2、复合形法的迭代步骤(1)输入各常量,如设计变量个数n收敛精度 1、 2,初始反射系数a,

21、设计变量的上下界值bj和a, j=1,2,n(2)产生初始复合形,其各顶点要在可行域内,且满足约束条件。即第一个顶点产生方法不限,其余k-1个顶点可按随机法产生(设复合形有k个顶点)。Xj(i)=aj+E ij(bj-aj)i=1,2,j=1,2,n式中,k为顶点号;j为点的第j个坐标,aj、bj为对应于Xj分量的边界约束;E ij为伪 随机数,一般微机产生。计算各顶点的目标函数值,找出最坏点X(H)、次坏点X(SH)、最好点X(L),即(H)(H)(i)X( ): F(x( )=max F(X ),i=1,2, k X(SH): F(X(SH)=maxF(X (i),i=1,2,k,E H

22、X(L): F(X(L)=minF(X (i),i=1,2,k计算除最坏点x(H)之外的k-1个顶点的中心点X(c), 即卩X(c)=1/k刀 X(i)(k=i,2, ,k,k 丰 H)检验中心X(c),若X(c)在可行域内,则继续执行步骤(5);若X不在可行域内,此时 可行域为非凸集,如下左图所示,此时作下述计算:利用最坏点X(H)和中心点X(c)重新确定一个区域,即在以 X(H)为起点。X为端点的超方体 中重新利用伪随机数产生新的复合形,即转回(2)。新区域如上左图中虚线所示,此时,各设计变量Xj的边界约束应是若 Xj(H)Xj(c), j=i,2,n 则取aj=xj(c) bj=xj(H

23、)如此产生的新的中心点 X (c) ,一般已在可行域内,若该点仍落在可行域外,则应再转 回步骤(2),如此反复,直至X为可行点为止。(r)在最坏点x(b)和中心点X的连线方向上取反射点X,即X(R)=X+ a (X(C)-X(H)式反射系数a的初值一般取为a =1.3求出反射点X(R)后,对该点进行可行性检查,若X(R)越出了可行域,如上右图所示,则将反射系数a减半,使X(R)点退回可行域,得到新的X(R)点。若新反射点 X(R)仍未退回可行域,继续将a减半,如此反复,直至X(R)为可行点为止。(6) 构成新的复合形:计算反射点的函数值F(X(R),并与最坏点X(H)比较。有两种情况:1) 若

24、F(X(R)F(X(H),则用反射点X(R)代替最坏点X(H),构成新的复合形,转步骤(7)。2) 若F(X(R)? F(X(H),则将反射系数a减半,转步骤(5),重新计算反射点。如果新的反射点x(R)既为可行点,又满足f(x(R)f(x (H),则以X(r)代替X(b),完成本次迭代转步骤( 7)。否则继续将 a 减半,转步骤( 5)。若直到反射系数 a 小于一个预先给定的很小正数时,反射点的函数值仍大于最坏点 函数值,则说明该反射方向不好,此时改用次坏点 X(SH)代替最坏点X(H),即X(H) J X(SH),换一个反射方向,转步骤( 4)。(7) 终止判别:反复执行上述过程中,随着反

25、射系数a 的不断减半,复合形逐渐向最优点收缩,复合形越来越小,直到满足下列情况之一 :1) 各顶点与好点的函数值之差的均方根小于误差限(i) (L) 2 1/21/k 刀F(X )-F(X) ?2) 各顶点与好点的函数值平方和小于误差限刀F(X (i)-F(X (L)2? 23) 各顶点与好点的函数值之差的绝对值之和小于误差限刀 |F(X(i)-F(X (L)|? 3若复合形不满足迭代终止条件,则应转向步骤( 3),开始下一次迭代。四、实验步骤:1 编制调试程序。2计算实例。五、实验报告内容5、绘制程序框图。6、记录计算结果并分析。22实验五惩罚函数法、实验目的1、加深对惩罚函数法的基本理论和

26、算法框图及步骤的理解。2、调试并熟悉惩罚函数法的 C语言程序。3、掌握常用约束优化方法程序的使用方法。二、实验内容1、调试惩罚函数法的 C语言程序。2、利用调试好的 C语言程序进行实例计算。3、根据实验结果写实验报告三、实验设备及工作原理1、设备简介装有Windows系统及C语言系统程序的微型计算机,每人一台。2、惩罚函数法原理外罚函数法基本原理min F (X ), X E Rs.t. gu(X) Z0,u =1,2,,p hv(X) =0,v =1,2,q c n惩罚函数定义在可行域外部,迭代过程从外部逼近最优点。1)不等式约束的处理惩罚项:要求:迭代点离约束越远,惩罚项越大。23#p-f

27、 (min( 0, gu(X)2u吐#式中:min(0,gu(X)(X)-gu(x)|gu(X)(在可行域外)=*0(在可行域内)b、惩罚系数,一般取递增的等比数列。240 :: 1 :: 2 :::k :-P_kkC、 惩罚函数:(X ,)=F(X). v (min( 0, gu(X)u仝2) 等式约束的处理:P21) 惩罚项: hv (X)v -1q2) 惩罚函数x , k) = F(X) 7 hv2(X)v -13) 带有惩罚项的目标函数的构造: _- - p - q 2 -(X , k) =: F (X) (mi n( 0,gu(X) 2 hv (X)u v -13、惩罚函数法算法流程

28、:四、实验步骤:1编制调试程序。2计算实例。五、实验报告内容7、绘制程序框图。8、记录计算结果并分析。机械优化设计外点惩罚函数法程序#include stdio.h#include stdlib.h #include math.h const int kkg=2; const int qkg=1; double r0; double f(double x) double ff; ff=pow(x0-4),2)+pow(x1-5),2);return(ff);void strain(double x,double g) double dlt=0.001;g0=x0-1-dlt; g0=x1-4-

29、dlt;g2=7-x0-x1; double objf(double p) int i;double ff,sg,*g;g=(double *)malloc(kkg+qkg)*sizeof(double); sg=0;strain(p,g);for(i=0;ikkg;i+)if(*(g+i)0)sg=sg+pow(*(g+i),2);if(qkg!=0)for(i=kkg;ikkg+qkg;i+)sg=sg+pow(*(g+i),2);free(g);ff=f(p)+r0*sg; return(ff);double gold(double a,double b,double eps,int n

30、,double xx) int i;double f1,f2,*x2,ff,q,w; for(i=0;i2;i+) xi=(double *)malloc(n*sizeof(double); for(i=0;if2)for(i=0;in;i+)bi=*(x0+i);*(x0+i)=*(x1+i);f1=f2;for(i=0;in;i+)*(x1+i)=ai+0.382*(bi-ai); f2=objf(x1);else for(i=0;in;i+)ai=*(x1+i);*(x1+i)=*(x0+i);f2=f1;for(i=0;in;i+) *(x0+i)=ai+0.618*(bi-ai);

31、f1=objf(x0);q=0;for(i=0;ieps);for(i=0;in;i+)xxi=0.5*(ai+bi);ff=objf(xx); for(i=0;i2;i+) free(xi); return(ff);void jtf(double x0,double h0,double s,int n,double a,double b) int i;double *x3,h,f1,f2,f3; for(i=0;i3;i+) xi=(double *)malloc(n*sizeof(double); h=h0;for(i=0;in;i+) *(x0+i)=x0i;f1=objf(x0);fo

32、r(i=0;i=f1)h=-h0;for(i=0;in;i+)*(x2+i)=*(x0+i);f3=f1;for(i=0;in;i+)*(x0+i)=*(x1+i);*(x1+i)=*(x2+i);f1=f2;f2=f3;for(;)h=2*h;for(i=0;in;i+)*(x2+i)=*(x1+i)+h*si;f3=objf(x2);if(f2f3) break;else for(i=0;in;i+)*(x0+i)=*(x1+i);*(x1+i)=*(x2+i);f1=f2;f2=f3;if(h0)for(i=0;in;i+)ai=*(x2+i);bi=*(x0+i);elsefor(i=

33、0;in;i+)ai=*(x0+i);bi=*(x2+i);for(i=0;i3;i+)free(xi);double oneoptim(double x0,double s,doubleh0,double epsg,int n,double x)double *a,*b,ff;a=(double *)malloc(n*sizeof(double);b=(double *)malloc(n*sizeof(double);jtf(x0,h0,s,n,a,b);ff=gold(a,b,epsg,n,x);free(a);free(b); return (ff);double powell(doub

34、le p,double h0,double eps,double epsg,int n,double x) int i,j,m;double *xx4,*ss,*s;double f,f0,f1,f2,f3,fx,dlt,df,sdx,q,d;ss=(double *)malloc(n*(n+1)*sizeof(double); s=(double *)malloc(n*sizeof(double); for(i=0;in;i+)for(j=0;j=n;j+)*(ss+i*(n+1)+j)=0;*(ss+i*(n+1)+i)=1; for(i=0;i4;i+) xxi=(double *)ma

35、lloc(n*sizeof(double); for(i=0;in;i+)*(xx0+i)=pi;for(;)for(i=0;in;i+) *(xx1+i)=*(xx0+i); xi=*(xx1+i);f0=f1=objf(x);dlt=-1;for(j=0;jn;j+)for(i=0;idlt) dlt=df; m=j;sdx=0;for(i=0;in;i+)sdx=sdx+fabs(xi-(*(xx1+i);if(sdxeps)free(ss);free(s);for(i=0;i4;i+)free(xxi);return(f);for(i=0;in;i+)*(xx2+i)=xi;f2=f;

36、for(i=0;in;i+)*(xx3+i)=2*(*(xx2+i)-(*(xx1+i);xi=*(xx3+i);fx=objf(x);f3=fx;q=(f1-2*f2+f3)*(f1-f2-dlt)*(f1-f2-dlt);d=0.5*dlt*(f1-f3)*(f1-f3);if(f3f1)|(qd)if(f2=f3)for(i=0;in;i+)*(xx0+i)=*(xx2+i);elsefor(i=0;in;i+)*(xx0+i)=*(xx3+i);elsefor(i=0;in;i+)*(ss+(i+1)*(n+1)=xi-(*(xx1+i);*(s+i)=*(ss+(i+1)*(n+1)

37、;f=oneoptim(xx0,s,h0,epsg,n,x);for(i=0;in;i+)*(xx0+i)=xi;for(j=m+1;j=n;j+)for(i=0;i0.001)fom=fxo;r0=c*r0;for(i=0;i2;i+)*(p+i)=xi;elseprintf( 输出最优点及其目标函数值: n); printf(x0=%f,x1=%f,ff=%f,x0,x1,fxo); return;while(1);机械优化设计鲍威尔法程序#include stdio.h#include stdlib.h#include math.h double objf(double x)double

38、 ff; ff=x0*x0+x1*x1-x0*x1-10*x0-4*x1+60;return(ff);double gold(double a,double b,double eps,int n,double xx) int i;double f1,f2,*x2,ff,q,w; for(i=0;i2;i+) xi=(double *)malloc(n*sizeof(double);for(i=0;if2)for(i=0;in;i+)bi=*(x0+i); *(x0+i)=*(x1+i);f1=f2; for(i=0;in;i+) *(x1+i)=ai+0.382*(bi-ai);f2=objf

39、(x1);else for(i=0;in;i+)ai=*(x1+i); *(x1+i)=*(x0+i);f2=f1;for(i=0;in;i+)*(x0+i)=ai+0.618*(bi-ai);f1=objf(x0);q=0; for(i=0;ieps);for(i=0;in;i+)xxi=0.5*(ai+bi); ff=objf(xx);for(i=0;i2;i+) free(xi); return(ff);void jtf(double x0,double h0,double s,int n,double a,double b) int i;double *x3,h,f1,f2,f3;fo

40、r(i=0;i3;i+)xi=(double *)malloc(n*sizeof(double);h=h0;for(i=0;in;i+)*(x0+i)=x0i;f1=objf(x0);for(i=0;i=f1) h=-h0;for(i=0;in;i+)*(x2+i)=*(x0+i);f3=f1;for(i=0;in;i+)*(x0+i)=*(x1+i);*(x1+i)=*(x2+i);f1=f2;f2=f3;for(;)h=2*h;for(i=0;in;i+)*(x2+i)=*(x1+i)+h*si;f3=objf(x2);if(f2f3) break;else for(i=0;in;i+)

41、*(x0+i)=*(x1+i);*(x1+i)=*(x2+i);f1=f2;f2=f3;if(h0)for(i=0;in;i+)ai=*(x2+i);bi=*(x0+i);elsefor(i=0;in;i+)ai=*(x0+i);bi=*(x2+i);for(i=0;i3;i+)free(xi);double oneoptim(double x0,double s,double h0,double epsg,int n,double x) double *a,*b,ff;a=(double *)malloc(n*sizeof(double);b=(double *)malloc(n*sizeo

42、f(double);jtf(x0,h0,s,n,a,b); ff=gold(a,b,epsg,n,x);free(a);free(b);return (ff);double powell(double p,double h0,double eps,double epsg,int n,double x) int i,j,m;double *xx4,*ss,*s;double f,f0,f1,f2,f3,fx,dlt,df,sdx,q,d;ss=(double *)malloc(n*(n+1)*sizeof(double); s=(double *)malloc(n*sizeof(double);

43、for(i=0;in;i+)for(j=0;j=n;j+)*(ss+i*(n+1)+j)=0;*(ss+i*(n+1)+i)=1; for(i=0;i4;i+) xxi=(double *)malloc(n*sizeof(double);for(i=0;in;i+) *(xx0+i)=pi;for(;)for(i=0;in;i+)*(xx1+i)=*(xx0+i); xi=*(xx1+i); f0=f1=objf(x);dlt=-1;for(j=0;jn;j+)for(i=0;idlt)dlt=df;m=j;sdx=0;for(i=0;in;i+) sdx=sdx+fabs(xi-(*(xx1

44、+i);if(sdxeps)free(ss);free(s);34for(i=0;i4;i+)free(xxi);return(f);for(i=0;in;i+)*(xx2+i)=xi;f2=f;for(i=0;in;i+)*(xx3+i)=2*(*(xx2+i)-(*(xx1+i);xi=*(xx3+i);fx=objf(x);f3=fx;q=(f1-2*f2+f3)*(f1-f2-dlt)*(f1-f2-dlt);d=0.5*dlt*(f1-f3)*(f1-f3);if(f3f1)|(qd)if(f2=f3)for(i=0;in;i+)*(xx0+i)=*(xx2+i);elsefor(i

45、=0;in;i+)*(xx0+i)=*(xx3+i);elsefor(i=0;in;i+)*(ss+(i+1)*(n+1)=xi-(*(xx1+i);*(s+i)=*(ss+(i+1)*(n+1);f=oneoptim(xx0,s,h0,epsg,n,x);for(i=0;in;i+)*(xx0+i)=xi;for(j=m+1;j=n;j+)for(i=0;in;i+)*(ss+i*(n+1)+j-1)=*(ss+i*(n+1)+j); main()double p=1,2;359【0】x=乙bx-=|Jb:0x-=016 (6 o|qnopx 9|qnop);uiej;suoo piOA!(

46、6 o|qnopx 9|qnop);uiej;suoo piOA!(x 9|qnop)xjfqo 9|qnop spnpui# spnpui#vijqipisspnpu!#人打 wwTOM+a woox刨:r単券 m nq刨丄単券回IQ x圍黯谚型do 滋&滋国蚩厉g 滋単啊饪呂臺习u血映PSJ 3【lJxox” uuj%=(乙xlx)jj%=xj%=.x u”)HU!d!(.uuuu Juud!(1iuoox1q1e1x%000001912)8|clLUOO【00IdklwooxxT66=【q00=【E eiqnop !(打 o|qnop00lJ【LUOOX iqnop *nq o|qnop

47、|q o|qnopx iqnopds oiqnopb” 15” iuru ;ui)9|diuoo piOA Ouiblu piOA 9pn|ou!# ujn;sj :09+ lJx*iHox*o klK0x- |jx* |Jx+ox*ox=# Q eiqnop (x 9|qnop)xjfqo siqnop 9pn|ou!#自畐蚩蚩饪呂臺44視羽尬斡酗【ldxox”uj%=yj%= |Jxj%=ox”)HU!d乂 xZ L00001 L000101d)|9Mod=w乙x#o|qnopg3=x1-8;g4=x0+x1-11;int gau(double x,double g,int kg)int

48、i;constraint(x,g);for(i=0;i0)goto s33;return 1;s33:return 0;void xcent(int n,int k,int ll,int lh,double x0,double xcom100) int i,l; double xs; for(i=0;in;i+)xs=0;for(l=0;l-1) x0i=xs/(ll-1);else x0i=xs/ll;void fxse(int n,int k,double x,double xcom100,double fxk) int l,lp,lp1,i; double temp;for(l=0;lk

49、-1;l+) for(lp=0;lpk-l;lp+)lp1=lp+1;if(fxklp=fxklp1) temp=fxklp; fxklp=fxklp1; fxklp1=temp; for(i=0;in;i+) xi=xcomilp; xcomilp=xcomilp1; xcomilp1=xi;xcom100,double void comple(int n,int k,int kg,double ep,double x,double bl,double bu, double *f)int i,iw,l,ll,lh,it;double fx,fx0,sdx,fxh,fxr,alp;double

50、 *x0=(double*)calloc(n,sizeof(double);double *xh=(double*)calloc(n,sizeof(double);double *xr=(double*)calloc(n,sizeof(double);double *fxk=(double*)calloc(k,sizeof(double);double *g=(double*)calloc(kg,sizeof(double);s5: for(i=0;in;i+)xi=bli+rand()/40000.0*(bui-bli); iw=gau(x,g,kg);if(iw=0) goto s5; f

51、or(i=0;in;i+) xcomi0=xi;for(l=1;lk;l+)for(i=0;in;i+)xcomil=bli+rand()/50000.0*(bui-bli); lh=-1;for(ll=1;llk;ll+)xcent(n,k,ll,lh,x0,xcom);iw=gau(x0,g,kg);if(iw=0) goto s5;for(i=0;in;i+)xi=xcomill+1;s24: iw=gau(x,g,kg);if(iw=0)for(i=0;in;i+)xi=x0i+0.5*(xi-x0i);goto s24;elsefor(i=0;in;i+)xcomill+1=xi;for(l=0;lk;l+)for(i=0;in;i+)xi=xcomil;fx=objfx(x);fxkl=fx;it=0;s14: it=it+1;printf(nn ITER= %2dn,it); lh=-1;xcent(n,k,k,lh,x0,xcom);fx0=objfx(x0);iw=gau(x0,g,kg);for(i=0;in;i+)printf( X(%d)mid=%f ,i+1,x0i

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!