机械优化设计——鲍威尔法

合集下载

机械优化设计4无约束方法.

机械优化设计4无约束方法.
a
航空航天学院
(a0 ) 8(2 4a0 ) 5000 (2 100a0 ) 0
从而得到一维搜索的最佳步长为
a0 0.02003072
及第一次迭代设计点位置和函数值
1.919877 2 4a0 1 X , F ( X ) 3686164 2 10 2 100a0 0.3071785
航空航天学院
求逆矩阵?
设A是n阶方阵,如果存在n阶方阵B, 满足AB=BA=E 则称A是可逆矩阵,B是A的逆矩阵。E是n阶单位矩阵
逆矩阵的求法: 定义法;公式法(伴随矩阵法)
1 2 求矩阵 A 的逆矩阵 0 1 解,设B是A的逆矩阵,根据定义得
1 2 b1 b2 b1 b2 1 2 1 0 AB BA 0 1 0 1 0 1 b b b b 3 4 3 4
K=0 ,X(K)=X0
计算
g (k ) , g (k )
* “最速下降性”只 是迭代点邻域的局部 性质。从全局看,并 非最速下降方向。
K=K+1 X(k)=X△g(k )Y
X*= X(K) F*=F(X*)
N
从 X ( k ) 出发,沿 g ( k ) 搜索得
X X

(k )
g
(k )
1 2 解得:b1=1,b2=-2,b3=0,b4=1, 即A 0 1
1
航空航天学院
例4-2
2 求F ( X )=x12 +25x2 的极小值
解: 取初始点 X0=[2, 2]T ,则初始点处梯度,海赛矩阵及其逆阵 分别为 2 x1 4 0 F ( X ) 50 x2 x0 100

第四章无约束优化方法

第四章无约束优化方法

解: (1) 第一个搜索方向
对称正定
(0) (3) 从 X1 点沿S1方向求极小点x(1),即 点沿S 方向求极小点x
17

(0) 方向一维搜索求得该方向极小点x (4) 任取另初始点 x2 = 沿S1方向一维搜索求得该方向极小点 (2)
1 1
X(2)= 0.5 (5) 求与 1相共轭的方向 2 求与S 相共轭的方向S S2 =X(2)-X(1)=
x2
X(0)→X0
(1) (1) X1
终止准则: 终止准则:
( ( Xnk) − X0k) ≤ε
(2) X1
(1) (2) X2 →X0
(2) X2 →X0
(3)
( X* ←Xnk)
上式点距准则中的 两点应是一轮 轮 换 法 的 流 程 图
k Xi(−1)
Xi(k)
以最优步长原则确定α 以最优步长原则确定 2,即极小化
按最优步长原则确定步长α 按最优步长原则确定步长 1,即极小化
此问题可用某种一维优化方法求出α 此问题可用某种一维优化方法求出 1。 在这里, 在这里,我们暂且借用微分学求导解出 令其一阶导数为零, ,令其一阶导数为零,α1=5
得α2=4.5, ,
正定
10
4.2
鲍威尔(Powell)法 鲍威尔(Powell)法 (Powell)
鲍威尔法是直接搜索法中一个十分有效的算法。 鲍威尔法是直接搜索法中一个十分有效的算法。该算法是沿着 逐步产生的共轭方向进行搜索的,因此本质上是一种 共轭方向进行搜索的 本质上是一种共轭方向 逐步产生的共轭方向进行搜索的,因此本质上是一种共轭方向 鲍威尔法的收敛速率较快。 法,鲍威尔法的收敛速率较快。 以共轭方向作为搜索方向,不只限于鲍威尔法, 以共轭方向作为搜索方向,不只限于鲍威尔法,也用于其他一 共轭方向法。 些较为有效的方法,可以统称为共轭方向法 因此, 些较为有效的方法,可以统称为共轭方向法。因此,共轭方向 的概念在优化方法研究中占有重要的地位。 的概念在优化方法研究中占有重要的地位。 共轭方向在最优化问题中的应用是基于其具有一个重要性质, 共轭方向在最优化问题中的应用是基于其具有一个重要性质, 重要性质 个互相共轭的向量, 即:设 S1、S2、…、Sn是关于A的n个互相共轭的向量,则对于 、 是关于A 1 T 的极小点, 求正定二次函数 F ( X ) = c + bT X + X AX 的极小点,从任意初始 2…,n)方向进行一维最优化搜 点出发,依次沿S i=1, 点出发,依次沿Si (i=1,2, ,n)方向进行一维最优化搜 至多n步便可以收敛到极小点. 索,至多n步便可以收敛到极小点.

机械优化设计课程设计

机械优化设计课程设计

目录摘要 (3)关键词 (3)一、概述 (3)二、优化方法介绍 (3)(一)、一维搜索方法 (3)(二)无约束优化方法 (5)1)共轭方向的生成 (6)2)基本算法 (6)3)改进算法的基本步骤如下 (7)三、优化设计实例 (10)1)模型 (10)2)变量 (10)3)优化设计源程序 (10)4)分析结果 (20)四、课程总结 (20)《机械优化设计》课程设计论文摘要:随着社会经济的迅速发展,机械优化设计作为一门为工程设计提供手段的学科,在这样的时代背景下应运而生。

针对具体的课题,通过一些设计变量而建立起目标函数的过程,称为数学建模;应用优化方法为工程设计寻找出最优解是现代优化设计所研究的主要课题与方向。

关键词:机械优化设计;设计变量;目标函数;数学模型;优化方法一、概述优化设计是20世纪60年代初发展起来的一门新学科,它是将最优化原理与计算技术应用于设计领域,为工程设计提供一种重要的科学设计方法的手段。

利用这种新的设计方法,人们就可以从众多的设计方案中寻找出最佳设计方案,从而大大提高设计效率和设计质量。

因此优化设计是现代设计理论和方法的一个重要领域,它已广泛应用于各个工业部门,成为现代工程设计的一个重要手段!二、优化方法介绍(一)、一维搜索方法一维搜索方法可分为两类,一类称为试探法,这类方法是按某种给定的规律来确定区间内插入点的位置,此点位置的确定仅仅按照区间缩短如何加快,而不顾及函数值的分布关系,例如黄金分割法,裴波那契法等。

另一类一维搜索法称作插值法或函数逼近法。

这类方法是根据某些点处的某些信息,如函数值,一阶导数,二阶导数等,构造一个插值函数来逼近原来的函数,用插值函数的极小点作为区间的插入点,这类方法主要有二次插值法,三次插值法等。

在此重点讨论黄金分割法。

黄金分割法适用于[a, b]区间上的任何单谷函数求极小值问题,对函数除要求“单谷”外不作其他要求,甚至可以不连续。

因此,这种方法的适应面相当广。

机械优化设计——鲍威尔法

机械优化设计——鲍威尔法

机械优化设计——鲍威尔法机械优化设计是指在构筑机械产品或系统时,通过优化设计、算法分析等手段,使得机械产品或系统达到最佳的性能和效率。

鲍威尔法(Broyden-Fletcher-Goldfarb-Shanno algorithm,简称BFGS算法)是一种求解非线性最优化问题的拟牛顿法,广泛应用于机械优化设计中。

鲍威尔法是由四位科学家共同提出的,在非线性优化问题中具有很高的效率和可靠性。

它与传统的牛顿法相比,具有更好的收敛性能和更小的存储需求。

鲍威尔法是一种迭代的方法,通过不断更新设计变量的值,使得目标函数的值不断接近最优值。

鲍威尔法的核心思想是利用目标函数的梯度信息来指导方向和步长的选择。

在每一次迭代中,鲍威尔法通过构造一个正定的Hessian矩阵的近似来逼近目标函数的二次泰勒展开式,从而求取方向。

而步长的选择则通过线方法来确定,确保目标函数值在每次迭代中都能够下降。

在机械优化设计中,鲍威尔法可以应用于多种问题,如结构优化、参数优化等。

以结构优化为例,鲍威尔法可以通过不断调整结构的几何形状或内部结构的参数,来使得结构的重量最小或强度最大。

在进行参数优化时,鲍威尔法可以通过调整设计变量的取值,使得可以在给定约束条件下,最大化或最小化一些性能指标。

机械优化设计中的鲍威尔法需要满足一定的数学条件才能保证其收敛性和稳定性。

首先,目标函数必须是连续可微的。

其次,初始设计点的选取对于迭代过程的收敛性也有一定的影响。

一般情况下,选择一个合适的初始设计点可以加快鲍威尔法的收敛速度。

总结起来,鲍威尔法是机械优化设计中一种常用的求解非线性最优化问题的方法。

它可以通过迭代更新设计变量的值,使得目标函数达到最优值。

鲍威尔法不仅具有较好的收敛性能和计算效率,而且对于各种类型的机械优化设计问题都具有很好的适应性。

机械优化设计自学考试教学要求省公开课一等奖全国示范课微课金奖课件

机械优化设计自学考试教学要求省公开课一等奖全国示范课微课金奖课件
本章重点: 搜索区间确实定与区间消元法原理,用黄金 分
割法和牛顿法求一元函数极小点。 本章难点: 牛顿法,二次插值法。
第12页
第四章 无约束优化方法
一、考评知识点与考评要求
1. 最速下降法(梯度法) 识记: 最速下降法定义;最速下降法特点,最速下降法 搜索方向。 领会: 最速下降法搜索路径和步骤。 应用: 用最速下降法求函数极值。
识记: 离散变量组合型法原理;初始复合型顶点形成。 领会: 离散一维新点产生方法;约束条件处理及几何
意义;离散变量组合型法搜索步骤;离散变量组 合型法收敛准则。 应用: 离散处罚函数法求解一维优化问题几何意义。
作用约束。 应用: 二维约束优化问题极值点所处不一样位置几何描
述。
第5页
第一章 优化设计概述
3.优化设计问题基本解法 识记: 优化准则法;数值迭代法;搜索方向;最正确 步长;几个迭代收敛准则: 模准则、值准 则和梯度准则。 领会: 优化准则法和数值迭代法极值点搜索过程 及特点。 应用: 优化准则法和数值迭代法迭代公式;收敛准 则及收敛精度选取。
散处罚因子。 领会: 离散处罚函数构建和几何意义;离散处罚函数法计
算步骤。 应用: 离散处罚函数法求解一维优化问题几何意义。
第25页
第七章 多目标和离散变量优化方法
9. 离散变量搜索型方法——离散复合型法 识记: 离散复合型法原理;离散复合型顶点构建。 领会: 离散复合型法搜索迭代过程。 10.离散变量型网格法 识记: 离散变量型普通网格法和正交网格法原理。 领会: 正交网格表生成方法;正交网格法计算步骤。 11.离散变量组合型法
行条件,下降条件。 领会: 可行方向产生方法;步长确实定: 最优步长、试
验步长计算、试验点调整到约束面方法;可行 方向法计算步骤。 应用: 用可行方向法求约束优化问题最优解。

优化设计-鲍威尔法

优化设计-鲍威尔法

故以
x
( 2) 0
x
(1)
(1) 为新起点,沿( e2 , S )方向一
现代设计方法
维搜索,进行第二次循环: 19 5 , ( 2) ( 2) f ( x x0 0 ) 7.9 17 19 10 5 ( 2) 沿 e2 方向进行一维搜索 x1 , f ( x1( 2) ) 7.98 f1 19 10
lvyong@教一楼512
•检验是否满足终止迭代条件
冶金机械教研室 吕勇
武汉科技大学机械自动化学院
现代设计方法
X2 X0
(1)
(1)
(3 1) 2 (1.5 1) 2 2.06
计算各个方向的函数下降量: △1= f(X0(1))-f(X1(1))=-3-(-7)=4 △2= f(X1(1))-f(X2(1))=-7-(-7.5)=0.5
• 可以证明:若 f3 <f1 (f1 -2f2+f3)(f1-f2- △m)2< 0.5△m(f1-f3)2 同时成立
冶金机械教研室 吕勇 lvyong@教一楼512
武汉科技大学机械自动化学院
现代设计方法
• 表明方向Sk(n)与原方向组成线性无关,可以 用来替换对象△m所对应的方向Sk(m)。否则仍 用原方向组进行第k+1轮搜索。
) 由于 S (1) 及 S ( 2为共轭方向, 目标函数是二次函数,若沿 S ( 2 )
现代设计方法
方向进行一维搜索得到
x
( 2)
4 2
武汉科技大学机械自动化学院
现代设计方法
• 从理论上讲,二维二次正定函数经过这组共 轭方向的一维搜索,迭代点已达到函数的极 小点X* 。 • 将此结构推广至n维二次正定函数,即依次沿 n个(S(1) ,S(2),…,S(n))共轭方向一维搜 索就能达到极小点。

鲍威尔法

鲍威尔法

鲍威尔法二级斜齿轮减速器的优化设计姓名:王剑锋学号:109011159班级:机制096班一、基本原理前已述及,对于n维无约束最优化问题,采用原始共轭方向法在产生n个共轭方向时,有可能是线性相关或接近线性相关的,如遇这种情况,会导致在降维空间寻优使迭代计算不能收敛到真正最优点而失败。

鲍威尔在1964年提出了对上述原始共轭方向法的改进方法—鲍威尔共轭方向法。

这个改进方法与原始共轭方向法的关键区别是在构成第k + 1环基本方向组时,不再总是不管好坏一律去掉前一环的第一个方向,并再将前一环的新生方向补于最后,而是首先判断前一环的基本方向组是否需要更换;如需更换,还要进一步判断前一环原基本方向组中沿某一个方向作一维搜索函数值下降量最大,去掉该方向再将新生方向补入最后构成第k+1环的基本方向组以避免线性相关并最接近共轭。

判别前一环基本方向组是否需要更换的依据,则按导出的下列两个条件式。

(1)(2)是否得到满足来进行处理,式中各符号的涵义可参阅图5-13(P62)说明如下——k环起始点的函数值;——k环沿基本方向组依次一维搜索后的终点的函数值;——对的映射点的函数值,;——k环基本方向组中沿诸方向一维搜索所得各目标函数值下降量中之最大者,对应方向。

若条件式(1)或(2)中至少有一个成立,则第k +1环的基本方向组仍用原来第k环的基本方向组。

k十1环的初始点应选取、两点中函数值小者,亦即当时,取;时,取。

若式(1)及式(2)均不成立,则去掉原来第k环基本方向组中函数值下降量最大的方向,再将第k环所产生的新生方向补入k+1环基本方向组的最后,即以构成第k+l环的基本方向组。

k+1环的初始点应取第k环中沿方向一维搜索的极小点,亦即取。

图2显示了二维正定二次函数用鲍威尔共轭方向法求极小点的搜索路线,其几何意义亦完全可推广到n维正定二次函数。

二、迭代过程及算法框图鲍威尔共轭方向法的具体迭代步骤如下:(1)给定初始点,迭代精度,维数n,。

《机械优化设计》实验指导书

《机械优化设计》实验指导书

《机械优化设计》实验指导书王彩红编写院部:机电工程学院专业:机械设计专业华北科技学院二0一二年十二月上机实验说明【实验环境】操作系统:Microsoft Windows XP应用软件:Visual C++或TC。

【实验要求】1、每次实验前,熟悉实验目的、实验内容及相关的基本理论知识。

2、无特殊要求,原则上实验为1人1组,必须独立完成。

3、实验所用机器最好固定,以便更好地实现实验之间的延续性和相关性,并便于检查。

4、按要求认真做好实验过程及结果记录。

【实验项目及学时分配】实验共计4学时,实验项目及学时分配如下:【实验报告和考核】1、实验报告必需采用统一的实验报告纸,撰写符合一定的规范,详见实验报告撰写格式及规范。

(一)预习准备部分1. 预习每次所做的实验。

2. 按照程序框图试写出汇编程序。

(二)实验过程部分1. 写出经过上机调试后正确的程序,并说明程序的功能、结构。

2. 记录执行程序后的数据结果。

3. 调试说明,包括上机调试的情况、上机调试步骤、调试所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

(三)实验报告内容每次上机实验结束后,学生要作一份完整的实验报告,实验报告内容应包括:1、优化方法的基本原理简述及程序框图绘制。

2、编制优化方法程序。

3、用考核题对所编程序进行考核。

(四)实验考核办法本课程实验成绩依据以下几个方面进行考核1、实验报告2、考核所编制的程序3、实验纪律、出勤等实验(一)【实验题目】一维搜索方法【实验目的】1.熟悉一维搜索的方法-黄金分割法,掌握其基本原理和迭代过程;2.利用计算语言(C语言)编制优化迭代程序,并用给定实例进行迭代验证。

【实验内容】1、搜索区间的确定与区间消去法(进退法)原理(1)方法概要有了目标函数,确定了搜索方向,假设函数f(a)具有单谷性,确定极小点a* 所在的区间[a b]:①在搜索方向上,选定初始点a1,初始点步长h0=0.01(经验,可调整),前进一步得a2点。

《机械优化设计》习题及答案1

《机械优化设计》习题及答案1

机械优化设计习题及参考答案1-1.简述优化设计问题数学模型的表达形式。

答:优化问题的数学模型是实际优化设计问题的数学抽象。

在明确设计变量、约束条件、目标函数之后,优化设计问题就可以表示成一般数学形式。

求设计变量向量[]12Tn x x x x =使 ()min f x →且满足约束条件()0(1,2,)k h x k l == ()0(1,2,)j g x j m ≤=2-1.何谓函数的梯度?梯度对优化设计有何意义?答:二元函数f(x 1,x 2)在x 0点处的方向导数的表达式可以改写成下面的形式:⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡∂∂∂∂=∂∂+∂∂=∂∂2cos 1cos 212cos 21cos 1θθθθxo x f x f xo x f xo x f xo d f令xo Tx f x f x f x fx f ⎥⎦⎤⎢⎣⎡∂∂∂∂=∂∂∂∂=∇21]21[)0(, 则称它为函数f (x 1,x 2)在x 0点处的梯度。

(1)梯度方向是函数值变化最快方向,梯度模是函数变化率的最大值。

(2)梯度与切线方向d 垂直,从而推得梯度方向为等值面的法线方向。

梯度)0(x f ∇方向为函数变化率最大方向,也就是最速上升方向。

负梯度-)0(x f ∇方向为函数变化率最小方向,即最速下降方向。

2-2.求二元函数f (x 1,x 2)=2x 12+x 22-2x 1+x 2在T x ]0,0[0=处函数变化率最大的方向和数值。

解:由于函数变化率最大的方向就是梯度的方向,这里用单位向量p 表示,函数变化率最大和数值时梯度的模)0(x f ∇。

求f (x1,x2)在x0点处的梯度方向和数值,计算如下:()⎥⎦⎤⎢⎣⎡-=⎥⎦⎤⎢⎣⎡+-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡∂∂∂∂=∇120122214210x x x x fx f x f 2221)0(⎪⎭⎫ ⎝⎛∂∂+⎪⎭⎫ ⎝⎛∂∂=∇x f x f x f =5⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎦⎤⎢⎣⎡-=∇∇=5152512)0()0(x f x f p2-3.试求目标函数()2221212143,x x x x x x f +-=在点X 0=[1,0]T 处的最速下降方向,并求沿着该方向移动一个单位长度后新点的目标函数值。

机械优化设计作业

机械优化设计作业

优化设计一.建立数学模型该减速器的总中心距计算式为)]1()1([cos 2123211121i Z m i Z m a a a n n +++=+=∑β1.选取设计变量 由涉及的独立参数,取T T n n x x x x x x i Z Z m m X ],,,,,[],,,,,[65432113121==β2.建立目标函数)cos 2/()]/5.311()1([)(6542531x x x x x x x X f +++=)1(])(1)(1)(1[)()()(1721)(=+⋅⋅⋅⋅⋅⋅+++=k k r X g X g X g r X f X F3.确定约束条件(1)确定上、下限从传递功率于转速可估计 3.5≤m n1≤8 标准值(3.5, 4,5,6,8)3.5≤m n2≤10 标准值(3.5, 4,5,6,8,10)综合考虑传动平稳、轴向力不可太大,能满足短期过载,高速级与低速级大齿轮浸油深度大致相近,轴齿轮的分度圆尺寸不能太小等因素,取:14≤Z 1≤2216≤Z 3≤225.8≤i 1≤780≤β≤150由此建立12个不等式约束条件式g 1(X) = x 1 – 3.5 ≥0g 2(X) = 8 – x 1 ≥0g 3(X) = x 2 – 3.5≥0g 4(X) = 10 – x 2 ≥0g 5(X) = x 3 – 14≥0g 6(X) = 22 – x 3≥0g 7(X) = x 4 – 16≥0g 8(X) = 22 – x 4≥0g 9(X) = x 5 – 5.8≥0g 10(X) = 7 – x 5 ≥0g 11(X) = x 6 –8≥0g 12(X) = 15– x 6≥0(2)按齿面接触强度公式δH = 925a ()i + 13KT 1bi≤ [δH ],N/mm 2得到高速级和低速级齿面接触强度条件分别为[δH ]2m n13Z 13i 1ψa 8(925)2K 1T 1– cos 3β≥0 ① [δH ]2m n23Z 33i 2ψa 8(925)2K 2T 2– cos 3β≥0 ② 式中,[δH ]——许用接触应力,MpaT 1,T 2——分别为高速轴I 和中间轴II 的转矩,N ·mmK 1,K 2——分别为高速级和低速级载荷系数.(3)按轮齿弯曲强度计算公式δF1 = 1.5 K 1T 1bd 1 m n1y 1≤ [δF ]1,N ·mm 2δF2 = δF1 y 1y 2≤ [δF ]2,N ·mm 2 得到高速级和低速级大小齿轮的弯曲强度条件分别为[δF ]1ψa y 13 K 1T 1(1 + i 1) m n13Z 12 – cos 2β≥0 ③ [δF ]2ψa y 23 K 1T 1(1 + i 1) m n13Z 12 – cos 2β≥0 ④ 和 [δF ]3ψa y 33 K 2T 2(1 + i 2) m n23Z 32 – cos 2β≥0 ⑤ [δF ]4ψa y 43 K 2T 2(1 + i 2) m n23Z 32 – cos 2β≥0 ⑥ 其中[δF ]1,[δF ]2,[δF ]3,[δF ]4——分别为齿轮1,2,3,4的许用弯曲应力,N/mm 2;y 1,y 2,y 3,y 4——分别为齿轮1,2,3,4的齿形系数.(4)按高速级大齿轮与低速轴不干涉相碰的条件a 2 – E – de 2/2≥0得 m n2Z 3(1 + i 2) – 2 cos β(E + m n1) –m n1Z 1i 1≥0 ⑦ 式中E ——低速轴轴线与高速级大齿轮齿顶圆之间的距离,mm ;de 2——高速级大齿轮齿的齿顶圆直径,mm.对式①至⑦代入有关数据:[δH ] = 836 N ·mm 2[δF ]1= [δF ]3=444N ·mm ,[δF ]2= [δF ]4= 410.3N ·mm 2T 1 =144700N ·mm ,T 2 = 146789i 1 N ·mmK 1 = 1.225,K 2 = 1.204y 1=0.248,y 2=0.302,y 3=0.256,y 4=0.302E = 50mm得g 13(X) = 5.3×10-6x 13x 33x 5 – cos 3x 6 ≥0g 14(X) = 2.317×10-5x 23x 43 – x 5cos 3x 6 ≥0g 15(X) = 3.117×10-4(1 + x 5)x 13x 32 – cos 2x 6 ≥0g 18(X) = 3.422×10-5(1 + x 5)x 13x 32 – cos 2x 6 ≥0g 16(X) = 3.45×10-6(31.5 + x 5)x 23x 42 – x 52cos 2x 6 ≥0g 19(X) = 3.32×10-5(31.5 + x 5)x 23x 42 – x 52cos 2x 6 ≥0g 17(X) = x 2x 4 (31.5 + x 5) – 2x 5cos x 6 (x 1+50) –x 1x 3x 52≥0g 18(X)、g 19(X)和g 15(X)、g 16(X)相比为明显的消极约束,可省略。

机械优化设计鲍威尔法

机械优化设计鲍威尔法

机械优化设计鲍威尔法
机械优化设计鲍威尔法(Powell method)是一种常用的非线性优化
算法,它以鲍威尔的名字命名,用于解决无约束非线性优化问题。

该方法
在各个领域都有广泛的应用,如工程优化设计、机器学习等。

下面将详细
介绍机械优化设计鲍威尔法的原理及应用。

鲍威尔法的具体步骤如下:
1.初始化参数:选择初始设计参数和方向。

2.寻找一维极小值点:沿着方向找到目标函数在该方向上的极小值点。

3.更新方向:通过比较前后两个极小值点的差异来更新方向。

4.迭代优化:重复步骤2和步骤3,直到达到指定的收敛条件。

鲍威尔法的优点是收敛速度较快、计算量较小,同时可以处理非线性
的优化问题。

然而,该方法也存在一些不足之处,如可能陷入局部最优解、对初值敏感等。

机械优化设计鲍威尔法在工程领域中有广泛的应用。

例如,在机械结
构设计中,可以利用鲍威尔法来优化结构参数,以满足特定的性能指标。

在汽车工业中,可以使用鲍威尔法来优化车辆的燃油效率和性能。

在航空
航天领域,可以利用该方法来优化飞行器的飞行性能。

此外,该方法还可
以用于机器学习中的参数优化,如调整神经网络的权重和偏置等。

总之,机械优化设计鲍威尔法是一种常用的非线性优化算法,通过迭
代逼近最优解。

虽然该方法有一些不足之处,但在实际应用中具有广泛的
适用性,尤其在工程优化设计和机器学习等领域。

通过使用该方法,可以
优化设计参数,改进性能指标,提高工程效率和产品质量。

机械优化设计实验报告浙江理工大学

机械优化设计实验报告浙江理工大学

机械优化设计实验报告班级:XXXX姓名:XX学号:XXXXXXXXXXX一、外推法1、实验原理常用的一维优化方法都是通过逐步缩小极值点所在的搜索区间来求最优解的。

一般情况下,我们并不知道一元函数f(X)极大值点所处的大概位置,所以也就不知道极值点所在的具体区域。

由于搜索区间范围的确定及大小直接影响着优化方法的收敛速度及计算精度。

因此,一维优化的第一步应首先确定一个初始搜索区间,并且在该区间内函数有唯一的极小值存在。

该区间越小越好,并且仅存在唯一极小值点。

所确定的单股区间应具有如下性质:如果在[α1,α3]区间内任取一点α2,,α1<α2<α3或α3<α2<α1,则必有f(α1)>f(α2)<f(α3)。

由此可知,单股区间有一个共同特点:函数值的变化规律呈现“大---小---大”或“高---低---高”的趋势,在极小值点的左侧,函数值呈严格下降趋势,在极小值点右侧,函数值呈严格上升趋势,这正是单股区间依据。

2、实验工具C-Free3.5软件3、程序调试#include<stdio.h>#include<math.h>#define f(x) 3*x*x-8*x+9 //定义函数int main(){double a0,a1,a2,a3,f1,f2,f3,h;printf(“a0=”,a0); //单谷区间起始点scanf(“%lf”,&a0);printf(“h=”,h); //起始的步长scanf(“%lf”,&h);a1=a0;a2=a1+h;f1=f(a0);f2=f(a2);if(f1>f2) //判断函数值的大小,确定下降方向{a3=a2+h;f3=f(a3);}else{h=-h;a3=a1;f3=f1;a1=a2;f1=f2;a2=a3;f2=f3;a3=a2+h;f3=f(a3);}while(f3<=f2) //当不满足上述比较时,说明下降方向反向,继续进行判断{h=2*h;a1=a2;f1=f2;a2=a3;f2=f3;a3=a2+h;f3=f(a3);}printf(“a1=%lf,a3=%lf\n”,a1,a3);printf(“[a1,a3]=[%lf,%lf]\n”,a1,a3); //输出区间}4、调试结果5、总结与讨论1)当写成void main时会出现如下警告改成int main警告消失。

机械优化设计鲍威尔法编程

机械优化设计鲍威尔法编程
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
UpdateData(true);
int i,n;
double h1,h2,h3,m,flag,X00[2][1],d01[2][1],d02[2][1],d03[2][1]; //确定键的执行程序
double X01[2][1],X02[2][1],X03[2][1];
double F0,F1,F2,F3,e1,e2,em;
// the minimized window.
HCURSOR CMyDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMyDlg::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
F1=(X01[0][0]*X01[0][0]+2*X01[1][0]*X01[1][0]-4*X01[0][0]-2*X01[0][0]*X01[1][0]),f1=F1; //确定F的函数值
h2=(4*d02[0][0]+2*d02[0][0]*X01[1][0]+2*d02[1][0]*X01[0][0])/(2*d02[0][0]*d02[0][0]+ //确定搜索步长

机械优化设计鲍威尔法编程

机械优化设计鲍威尔法编程

机械优化设计鲍威尔法编程鲍威尔法编程,又称行进法、射线法,是一种无约束极值问题的最优化算法。

其核心思想是通过不断更新方向,寻找函数极小值点。

鲍威尔法编程结合了线和模式的特点,具有全局能力和局部能力,因此在机械优化设计中得到广泛应用。

在机械优化设计中,通常需要考虑多个设计参数对机械性能的影响。

鲍威尔法编程可以通过不断迭代的方式,寻找最佳的设计参数组合,以达到设计要求。

其具体步骤如下:1.初始化设计参数和步长。

2.计算当前设计参数下的目标函数值。

3.在当前方向上进行线,找到使目标函数值下降的步长。

4.更新设计参数,将方向和步长相乘加到当前设计参数上。

5.检查当前设计参数的变化是否满足终止条件,如果满足则结束,否则返回步骤26.返回最佳设计参数组合及对应的目标函数值。

下面以一个简单的机械优化设计案例为例进行详细说明。

假设有一个弹簧悬挂系统,需要设计合适的弹簧刚度和阻尼系数来满足特定的振动要求。

目标函数为最小化系统振动幅值。

首先,需要定义设计参数和目标函数。

设计参数可以选择弹簧刚度和阻尼系数。

目标函数可以定义为系统振动幅值的平方。

其次,需要确定方向和初始步长。

对于弹簧刚度和阻尼系数来说,方向可以选择正方向和负方向。

初始步长可以根据经验或试验来确定。

然后,根据鲍威尔法编程的步骤,进行迭代。

首先,初始化设计参数和步长。

然后,计算当前设计参数下的目标函数值。

接下来,根据当前方向和步长进行线,找到使目标函数值下降的步长。

再更新设计参数,将方向和步长相乘加到当前设计参数上。

最后,检查当前设计参数的变化是否满足终止条件,如果满足则结束,否则返回到线步骤继续。

最后,得到最佳的设计参数组合及对应的目标函数值。

可以根据实际情况进行设计参数的调整和优化,以获得更好的机械性能。

总之,鲍威尔法编程是一种常用的机械优化设计方法。

通过不断迭代的方式,寻找最佳的设计参数组合,以满足设计要求。

其原理和步骤相对简单,但需要结合具体问题进行参数的选择和调整。

机械优化设计方法——鲍威尔法,坐标轮换法

机械优化设计方法——鲍威尔法,坐标轮换法

鲍威尔法
机械优化设计方法——鲍威尔法
鲍威尔(Powell)法是直接利用函数值 来构造共扼方向的一种共扼方向法。基本 思想是在不用求导数的前提下,在迭代中 逐次构造Hessian矩阵G的共扼方向。
原始共轭法的缺点
对于n维无约束最优化问题,采用原始共轭 方向法在产生n个共轭方向时,有可能是线 性相关或接近线性相关的,遇这种情况, 会导致在降维空间寻优使迭代计算不能收 敛到真正最优点而失败 。
(4)判断是否满足收敛准则。

X k 1 X k
。若满足,则
X k1 0

极小点,否则应置 k k 1 ,返回,
继续进行下一轮迭代。
计算 f (X ) x12 25x22 的极小值
解 : 选取初始点为 X 0 2,2T,初试搜索方向
为 d10 1,0T,d20 0,1 T。初始点处 的函数

F1
f
(
X
0 0
)
104
第一轮迭代:沿 d10 方向进行一维搜
索,得
X10
X
0
1d10
2
1
1 0
2
1
2

X
0 1
代入原方程得:
f1 f (X10) (2 1)2 2522 4 41 12 100
最佳步长

df ( d
)
4
21
0
1 2
X10
2 2
210
0 2
X
0 1
鲍威尔法计算步骤与程序原理
(1)任选一初始点 X 0 ,
X
0 0
X
0
,选取初
试方向组,它由n个线性无关的向量

优化设计-坐标轮换法-鲍威尔方法

优化设计-坐标轮换法-鲍威尔方法

2,0T
0
1 1 X1 X 0 0 2 f 2(1 ) 2 12 8(1 ) 10 df 4(1 ) 8 0 1 d 2 X1 2
2 X 0
2)Powell对基本算法的改进
在获得新方向构成新方向组时,不是轮换地去掉原来的 方向,而是经判别后,在n+1个方向中留下最接近共轭的n 个方向.
• * ①根据Powell条件判定是否需换方向;
②如需换向,则换掉函数值下降量最大的方向.
1.基本算法
二维情况描述鲍威尔的基本算法:
1 ) 任 选 一 初 始 点 x0(1) , 选 坐 标 轴 单 位 向 量 e1=[1,0]T和e2=[0,1]T作为初始搜索方向。
坐标轮换法是每次搜索只允许一个变量变化,其余变量 保持不变,即沿坐标方向轮流进行搜索的寻优方法。
坐标轮换法把多变量的优化问题轮流地转化成单变 量的优化问题.
坐标轮换法
基本原理
搜索方向与步长
• 给定初始点x0, 从x0出发,依次沿坐标轴方向 ei =(0,…,0,1,0,…,0)T,i=1,2,…,n, 进行最优一维搜索,即
Y
N
K=K+1
Sn+1=Xn-X0 自Xn始,沿Sn+1方向搜 索得一维最优点X* Xn+1=2Xn-X0 F1=F(X0), F2=F(Xn), F3=F(Xn+1)
X0=X*
N
F3<F
1
Y
求Δ 及方向标号m
N Y
Q< P
Si=Si+1 i=m,m+1,…n
X 2(1)
沿s2作一维搜索得点X0(3) 。

机械优化设计鲍威尔法

机械优化设计鲍威尔法

机械优化设计中的鲍威尔方法鲍威尔(Powell)法是直接利用函数值来构造共轭方向的一种方法。

对函数1x2Gx+b T +c的极小化问题,基本思想是:在不用导数的前提下,在迭代f(x)=2中逐次构造G 的共轭方向。

一.(d(dd k就是与d j一起对G共轭的方向。

一.基本算法1)任选一初始点x0,再选两个线性无关的向量,如坐标轴单位向量e1=[1,0]T 和e2=[0,1]T作为初始搜索方向。

2)从x0出发,顺次沿e1,e2作一维搜索,得x 10,x 20点,两点连线得一新方向 d 1=x 20-x 0。

用 d 1代替e 1形成两个线性无 关向量d 1,e 2 ,作为下一轮迭代的搜索方向。

再 x 20 出发,沿d 1作一维搜索得点 x 01, 作为下一轮迭代的初始点。

3)从x 1出发,顺次沿,e 2。

d 1作一维搜索, 4)得到点x 11,x 21,两点连线得一新方 向:d 2=x 21-x 11。

4)沿d 2d2作一维搜索得点.x 2 ,即是二维问题的极小点x* 。

. 把二维情况的基本算法扩展到n 维,则鲍威尔基本算法的要点是: 在每一轮迭代中总有一个始点(第一轮的始点是任选的初始点)和n 个线性独立的搜索方向。

从始点出发顺次沿n 个方向作一维搜索得一终点,由始点和终点决定了一个新的搜索方向。

用这个方向替换原来n 个方向中的一个,于是形成新的搜索方向组。

替换的原则是去掉原方向组的第一个方向而将新方向排在原方向的最后。

此外规定,从这一轮的搜索终点出发沿新的搜索方向作一维搜索而得到的极小点,作为下一轮迭代的始点。

这样就形成算法的循环。

二.改进的算法在改进的算法中首先判断原向量组是否需要替换。

如果需要替换,还要进一步判断原向量组中哪个向量最坏,然后再用新产生的向量替换这个最坏的向量,以保证逐次生成共轭方向。

记f i =f(x i k )(i=1,2,3,…,n) 因而F 0=f 0,1x 2x0 e1e 2d 1d 2x* 12x1x 11x 12x 01xΔi=f m-1-f m,相应的方向为d m k,为了构成共轭性好的方向组,须遵循下列准则:在k次循环中,若满足条件F3<F0和(F0-2F2+F3)(F0-F2-Δm)2<0.5Δm(F0-F3)2,则选用新方向d k,并在第k+1迭代中用d k替换对应于Δm的方向d m k。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

机械优化设计鲍威尔法班级:0841001成员:张波2010213217张建2010213214潘阳瑞20102132272013年6月鲍威尔法鲍威尔(Powell )法是直接利用函数值来构造共轭方向的一种方法。

基本思想:在不用导数的前提下,在迭代中逐次构造G 的共轭方向。

一.基本算法:(二维情况描述鲍威尔的基本算法)1)任选一初始点x 0,再选两个线性无关的向量,如坐标轴单位向量e 1=[1,0]T 和e 2=[0,1]T 作为初始搜索方向。

2)从x 0出发,顺次沿1e 、2e 作一维搜索,得 01x 、02x 点,两点连线得一新方向1d 0021x x d -=用 1d 代替e 1,形成两个线性无关向量1d ,e 1,作为下一轮迭代的搜索方向。

再从02x 出发,沿1d 作一维搜索得点01x ,作为下一轮迭代的初始点。

3)从1x 出发,顺次沿2e 、1d 作一维搜索,得到点11x 、12x ,两点连线得一新方向:11122x x d -=。

沿2d 作一维搜索得点2x ,即是二维问题的极小点*x。

把二维情况的基本算法扩展到n 维,则鲍威尔基本算法的要点是:在每一轮迭代中总有一个始点(第一轮的始点是任选的初始点)和n 个线性独立的搜索方向。

从始点出发顺次沿n 个方向作一维搜索得一终点,由始点和终点决定了一个新的搜索方向。

用这个方向替换原来n 个方向中的一个,于是形成新的搜索方向组。

替换的原则是去掉原方向组的第一个方向而将新方向排在原方向的最后。

此外规定,从这一轮的搜索终点出发沿新的搜索方向作一维搜索而得到的极小点,作为下一轮迭代的始点。

这样就形成算法的循环。

图1.二维情况下的鲍威尔法二.改进算法在鲍威尔基本算法中,每一轮迭代都用连结始点和终点所产生出的搜索方向去替换原向量组中的第一个向量,而不管它的“好坏”,这是产生向量组线性相关的原因所在。

在改进的算法中首先判断原向量组是否需要替换。

如果需要替换,还要进一步判断原向量组中哪个向量最坏,然后再用新产生的向量替换这个最坏的向量,以保证逐次生成共轭方向。

为此,要解决两个关键问题:(1)1+k d是否较好?是否应该进入新的方向组?即方向组是否进行更新?(2)如果应该更新方向组,1+k d 不一定替换方向kd 1,而是有选择地替换某一方向kmd 。

改进算法的具体步骤:(1)给定初始点0x (记作00x ),选取初始方向组,它由n 个线性无关的向量01d ,02d ,...,0n d 所组成,置0←k 。

(2)从k x 0出发,顺次沿k d 1,k d 2,...,k n d 作一维搜索得k x 1,k x 2,...,kn x 。

接着以k n x 为起点,沿方向 kk n k n x x d 01-=+移动一个k k n x x 0-的距离,得到 kk n k k n k n k n x x x x x x 0012)(-=++=+k x 0、k n x 、k n x 1+分别称为一轮迭代的始点、终点和反射点。

始点、终点和反射点所对应的函数值分别为:)(00k x f F =)(2kn x f F =)(13kn x f F +=同时计算各中间点的函数值,并记为:)(ki i x f f =(i=1,2,...,n) 因此有00f F =,n f F =2计算n 个函数值之差10f f -,21f f -,...,n n f f --1。

记作: i i i f f -=∆-1(i=1,2,...,n) 其中最大者记作: m m i ni m f f -=∆=∆-≤≤11max(3)根据是否满足判断条件3F F <和230220320)(5.0))(2(F F F F F F F m m -∆<∆--+-,来确定是否要对原方向组进行替换。

若不满足判别条件,则下轮迭代仍使用原方向组,并以kn x 、kn x 1+中函数值小者作为下轮迭代的始点。

若满足上述判别条件,则下轮迭代应对原方向组进行替换,将kn d 1+补充到原方向组的最后位置,而除掉km d 。

即新方向组为kn k n k m k m k kd d d d d d 11121,,...,,,...,,++-作为下轮迭代的搜索方向。

下轮迭代的始点取为沿k n d 1+方向进行一维搜索的极小点10+k x 。

(4)判断是否满足收敛准则。

若满足则取10+k x 为极小点,否则应置1+←k k ,返回2,继续进行下一轮迭代。

这样重复迭代的结果,后面加进去的向量都彼此对G 共轭,经n 轮迭代即可得到一个由n 个共轭方向所组成的方向组。

对于二次函数,最多n 次就可找到极小点,而对一般函数,往往要超过n 次才能找到极小点(这里“n ”表示设计空间的维数)。

图2.鲍威尔法的程序框图题目:用改进的鲍威尔法求目标函数211222121242)(xx x x x x x f --+=的最优解。

已知初始点[1,1]T ,迭代精度001.0=ε。

解:初始点][11=x ,初始搜索方向,][0122==e d 。

初始点处的函数值3)(00-===x f f F 。

第一轮迭代:1)沿01d 方向进行一维搜索,得 :][][][1111111111ααα+=+=+=d x x1α为一维搜索最佳步长,应满足极值必要条件:]34[min ][min )(2111--=+=αααααd x f x f)(min αϕα=042)('1=-=ααϕ所以算出一维搜索最佳步长 21=α得 ][3101=x从而算出01x 点处的函数值及沿01d走步后函数值的增量7)(011-==x f f 411=-=∆f f2)再沿02d方向进行一维搜索,得][][][310123122122ααα+=+=+=d x x2α为一维搜索最佳步长,应满足极值必要条件:]722[min ][min )(2220102--=+=αααααd x f x f)(min αϕα=024)('2=-=ααϕ所以算出一维搜索最佳步长 5.02=α得 ][35.102=x从而算出第一轮终点02x 处的函数值及沿02d走步后函数值的增量5.7)(022-==x f f 5.0212=-=∆f f取沿01d ,02d走步后函数值增量中最大者4],max[21=∆∆=∆m终点02x 的反射点及其函数值为][][][22521135.1023=-=-=x x x7)(033-==x f F3)为确定下一轮迭代的搜索方向和起始点,需检查判别条件230220320)(5.0))(2(F F F F F F F m m -∆<∆--+-和03F F <是否满足。

由于满足Powell 条件,则淘汰函数值下降量最大的方向1e ,下一轮的基本方向组为032,de 。

构成新的方向][][][25.01135.1023=-=-=x x d此点03d 为补充到原方程组的点,沿03d 方向一维搜索得极小点和极小值:9.7)(],[18.37.11-==x f x此点1x 为下一轮迭代初始点,按点距准则检验终止条件ε>=-+-=-886.2)17.1()18.3(2211x x需进行第二轮迭代机算。

第二轮迭代:此轮基本方向组为2e ,03d,分别相当于11d ,12d,起始点为11x x =。

1)沿2e 方向进行一维搜索得,过程同上,得:98.7)(,][118.39.111-==x f x2)以11x 为起点,沿03d 方向一维搜索得:996.7)(,][1296.39.112-==x f x确定此轮中函数值最大下降量及其相应方向,016.02=∆取沿2e ,03d走步后函数值增量中最大者08.0],max[21=∆∆=∆m终点12x 的反射点及其函数值为][][][2212.418.28.37.196.394.111213=-=-=x x x964.7)(133-==x f F检验Powell 条件,淘汰函数值下降量最大的方向2e ,下一轮的基本方向组应为03d,13d。

构成新的方向][][][16.024.08.37.196.394.111213=-=-=x x d此点13d 为补充到原方程组的点,沿13d 方向一维搜索得极小点和极小值:8)(],[2422-==x f x此点2x 为下一轮迭代初始点,按点距准则检验终止条件ε>=-+-=-36.0)7.12()8.34(22202x x需进行第三轮迭代机算。

第三轮迭代:此轮基本方向组为03d ,13d ,起始点为 20x = 2x ,先后沿03d ,13d ,方向,进行一维搜索,得 ][4221=x , ][4222=x检验终止条件:ε<=-0222x x故最优解: 8)(,][*42*-==x f x实际上,前两轮迭代的13d ,23d 为共轭方向,由于本例目标函数是二次函数,按共轭方向的二次收敛性,故前两轮的结果就是问题的最优解,但每一轮迭代都需要进行n+1次迭代。

图3.迭代过程图附录:#include <stdio.h>#include <math.h>#include <stdlib.h>#define m 5 /*数组长度m >= 维数n */float f(float x[]);void mjtf(int n,float x0[],float h,float s[],float a[],float b[]);void gold(int n,float a[],float b[],float flag,float x[]);void mbwef(int n,float x0[],float h,float flag,float a[],float b[],float x[]);/*目标函数(n维)*//*入口参数:x :n维数组,自变量 *//*返回值:函数值 */float f(float x[]){float result;result=x[0]*x[0]+2*x[1]*x[1]-4*x[0]-2*x[0]*x[1];return result;}/*外推法子程序*//*入口参数:n :优化模型维数x0 :n维数组,初始点坐标h :初始搜索步长s :n维数组,搜索方向 *//*出口参数:a :n维数组,搜索区间下限b :n维数组,搜索区间上限*/void mjtf(int n,float x0[],float h,float s[],float a[],float b[]) {int i;float x1[m],x2[m],x3[m],f1,f2,f3;for(i=0;i<n;i++) /*计算初始两试点*/{x1[i]=x0[i];x2[i]=x0[i]+h*s[i];}f1=f(x1);f2=f(x2);if(f2>=f1) /*判断搜索方向*/{ /*搜索方向为反向,转身*/h=(-1)*h;for(i=0;i<n;i++)x3[i]=x1[i];f3=f1;for(i=0;i<n;i++)x1[i]=x2[i];f1=f2;for(i=0;i<n;i++)x2[i]=x3[i];f2=f3;} /*搜索方向为正向*/for(i=0;i<n;i++) /*计算第三试点*/x3[i]=x2[i]+h*s[i];f3=f(x3);while(f3<f2) /*判断是否未完成搜索*/{ /*未完成,继续搜索*/h=2*h;for(i=0;i<n;i++)x1[i]=x2[i];f1=f2;for(i=0;i<n;i++)x2[i]=x3[i];f2=f3;for(i=0;i<n;i++)x3[i]=x2[i]+h*s[i];f3=f(x3);} /*已完成*/for(i=0;i<n;i++) /*输出初始搜索区间*/{if(h>0){a[i]=x1[i];b[i]=x3[i];}else{a[i]=x3[i];b[i]=x1[i];}}}/*黄金分割法子程序*//*入口参数:n :优化模型维数a :n维数组,搜索区间下限b :n维数组,搜索区间上限flag :迭代精度 *//*出口参数:x :n维数组,极小点坐标 */void gold(int n,float a[],float b[],float flag,float x[]) {int i;float x1[m],x2[m],f1,f2,sum;for(i=0;i<n;i++) /*计算初始两试点*/x1[i]=b[i]-(float)0.618*(b[i]-a[i]);f1=f(x1);for(i=0;i<n;i++)x2[i]=a[i]+(float)0.618*(b[i]-a[i]);f2=f(x2);do{if(f1<=f2) /*判断消去区间*/{ /*消去右区间*/for(i=0;i<n;i++)b[i]=x2[i];for(i=0;i<n;i++)x2[i]=x1[i];f2=f1;for(i=0;i<n;i++)x1[i]=b[i]-(float)0.618*(b[i]-a[i]);f1=f(x1);}else{ /*消去左区间*/for(i=0;i<n;i++)a[i]=x1[i];for(i=0;i<n;i++)x1[i]=x2[i];f1=f2;for(i=0;i<n;i++)x2[i]=a[i]+(float)0.618*(b[i]-a[i]);f2=f(x2);}sum=0;for(i=0;i<n;i++)sum+=(b[i]-a[i])*(b[i]-a[i]);}while(sqrt(sum)>flag*0.1); /*判断是否未达到精度要求,若未达到则返回继续缩小区间*/for(i=0;i<n;i++)x[i]=(float)0.5*(b[i]+a[i]); /*已达到,输出极小点*/}/*鲍威尔法子程序*//*入口参数:n :优化模型维数x0 :n维数组,初始点坐标h :初始搜索步长flag :迭代精度a :n维数组,搜索区间下限b :n维数组,搜索区间上限*//*出口参数:x :n维数组,极小点坐标 */void mbwef(int n,float x0[],float h,float flag,float a[],float b[],float x[]) {int i,j,k,r;float x1[m],x2[m],f0,f1,f2,fn[m],s[m][m],sum;for(i=0;i<n;i++) /*方向矩阵初始化*/for(k=0;k<n;k++) /*初始搜索方向确定*/if(i==k)s[i][k]=1;elses[i][k]=0;k=1;while(1){for(i=0;i<n;i++)x1[i]=x0[i];for(i=0;i<n;i++) /*依次按每个方向搜索*/{mjtf(n,x1,h,s[i],a,b); /*调用外推法子程序*/gold(n,a,b,flag,x1); /*调用黄金分割法子程序*/fn[i]=f(x0)-f(x1); /*计算函数下降值*/}for(i=0;i<n;i++) /*计算映射点*/x2[i]=2*x1[i]-x0[i];for(i=1;i<n;i++) /*找出函数下降值中的最大值存入fn[0]*/if(fn[0]<fn[i]){fn[0]=fn[i];r=i; /*搜索方向累加*/}elser=0;f0=f(x0); /*计算始点、终点和映射点的函数值*/f1=f(x1);f2=f(x2);if(f2>=f0||(f0-2*f1+f2)*(f0-f1-fn[0])*(f0-f1-fn[0])>=0.5*fn[0]*(f0-f2)*(f0-f2)){ /*判断是否需要换方向*//*不需要换*/sum=0; /*计算一轮中终点与始点的距离*/for(i=0;i<n;i++)sum+=(x1[i]-x0[i])*(x1[i]-x0[i]);if(f1<=f2) /*判断将终点还是将映射点赋给下一轮始点*/for(i=1;i<n;i++) /*将终点赋给下一轮始点*/x0[i]=x1[i];elsefor(i=1;i<n;i++) /*将映射点赋给下一轮始点*/x0[i]=x2[i];}else{ /*需要换*/for(i=r;i<n;i++) /*去掉第r+1个方向,其它方向前移*/for(j=0;j<n;j++)s[i][j]=s[i+1][j];for(i=0;i<n;i++) /*生成新方向放在最后*/s[n][i]=x1[i]-x0[i];mjtf(n,x1,h,s[n],a,b); /*按新方向搜索一次*/gold(n,a,b,flag,x1);sum=0; /*计算一轮中终点与始点的距离*/ for(i=0;i<n;i++)sum+=(x1[i]-x0[i])*(x1[i]-x0[i]);for(i=0;i<n;i++) /*将终点赋给下一轮始点*/x0[i]=x1[i];}if(sqrt(sum)<=flag) /*判断是否满足精度要求*/break;elsek+=1;}for(i=0;i<n;i++) /*输出极小点坐标*/x[i]=x1[i];}/*鲍威尔法主程序*/void main(){int i,n;float h,flag,x0[m],a[m],b[m],x[m];printf("\n<鲍威尔法>\n");printf("维数: 2\n");n = 2;printf("请输入初始点:");for(i=0;i<n;i++){printf("\nx0[%d]=",i);scanf("%f",&x0[i]);}printf("\n请输入初始步长:\n");scanf("%f",&h);printf("\n请输入精度:\n");scanf("%f",&flag);flag = 0.1;mbwef(n,x0,h,flag,a,b,x);printf("\n极小点坐标为:\n");for(i=0;i<n;i++)printf("x[%d]=%f\n",i,x[i]);printf("\n极小值为:\n%f\n",f(x));system("pause");}机械优化设计黄金分割法班级:0841001成员:张波2010213217张建2010213214潘阳瑞20102132272013年6月。

相关文档
最新文档