一维优化方法
- 格式:docx
- 大小:43.26 KB
- 文档页数:8
凸优化之⽆约束优化(⼀维搜索⽅法:⼆分法、⽜顿法、割线法)1、⼆分法(⼀阶导)⼆分法是利⽤⽬标函数的⼀阶导数来连续压缩区间的⽅法,因此这⾥除了要求 f 在 [a0,b0] 为单峰函数外,还要去 f(x) 连续可微。
(1)确定初始区间的中点 x(0)=(a0+b0)/2 。
然后计算 f(x) 在 x(0) 处的⼀阶导数 f'(x(0)),如果 f'(x(0)) >0 , 说明极⼩点位于 x(0)的左侧,也就是所,极⼩点所在的区间压缩为[a0,x(0)];反之,如果 f'(x(0)) <0,说明极⼩点位于x(0)的右侧,极⼩点所在的区间压缩为[x(0),b0];如果f'(x(0)) = 0,说明就是函数 f(x) 的极⼩点。
(2)根据新的区间构造x(1),以此来推,直到f'(x(k)) = 0,停⽌。
可见经过N步迭代之后,整个区间的总压缩⽐为(1/2)N,这⽐黄⾦分割法和斐波那契数列法的总压缩⽐要⼩。
1 #ifndef _BINARYSECTION_H_2#define _BINARYSECTION_H_34 typedef float (* PtrOneVarFunc)(float x);5void BinarySectionMethod(float a, float b, PtrOneVarFunc fi, float epsilon);67#endif1 #include<iostream>2 #include<cmath>3 #include "BinarySection.h"45using namespace std;67void BinarySectionMethod(float a, float b, PtrOneVarFunc tangent, float epsilon)8 {9float a0,b0,middle;10int k;11 k = 1;12 a0 = a;13 b0 = b;14 middle = ( a0 + b0 )/2;1516while( abs(tangent(middle)) - epsilon > 0 )17 {18 #ifdef _DEBUG19 cout<<k++<<"th iteration:x="<<middle<<",f'("<<middle<<")="<<tangent(middle)<<endl;20#endif2122if( tangent(middle) > 0)23 {24 b0 = middle;25 }26else27 {28 a0 = middle;29 }30 middle =( a0+b0)/2;31 }3233 cout<<k<<"th iteration:x="<<middle<<",f'("<<middle<<")="<<tangent(middle)<<endl;34 }1 #include<iostream>2 #include "BinarySection.h"345float TangentFunctionofOneVariable(float x)6 {7return14*x-5;//7*x*x-5*x+2;8 }910int main()11 {12 BinarySectionMethod(-50, 50, TangentFunctionofOneVariable, 0.001);13return0;14 }1th iteration:x=0,f'(0)=-52th iteration:x=25,f'(25)=3453th iteration:x=12.5,f'(12.5)=1704th iteration:x=6.25,f'(6.25)=82.55th iteration:x=3.125,f'(3.125)=38.756th iteration:x=1.5625,f'(1.5625)=16.8757th iteration:x=0.78125,f'(0.78125)=5.93758th iteration:x=0.390625,f'(0.390625)=0.468759th iteration:x=0.195312,f'(0.195312)=-2.2656210th iteration:x=0.292969,f'(0.292969)=-0.89843811th iteration:x=0.341797,f'(0.341797)=-0.21484412th iteration:x=0.366211,f'(0.366211)=0.12695313th iteration:x=0.354004,f'(0.354004)=-0.043945314th iteration:x=0.360107,f'(0.360107)=0.041503915th iteration:x=0.357056,f'(0.357056)=-0.001220716th iteration:x=0.358582,f'(0.358582)=0.020141617th iteration:x=0.357819,f'(0.357819)=0.0094604518th iteration:x=0.357437,f'(0.357437)=0.0041198719th iteration:x=0.357246,f'(0.357246)=0.0014495820th iteration:x=0.357151,f'(0.357151)=0.0001144412、⽜顿法(⼆阶导)前提:f 在 [a0,b0] 为单峰函数,且[a0,b0] 在极⼩点附近,不能离的太远否则可能⽆法收敛。
优化设计与优化方法课程名称: 先进制造技术学院:机械工程学院专业:机电信息工程******学号:********** 任课教师:**2013年 5月4 日优化设计与优化方法冯建平(贵州大学机械工程学院,贵阳贵州 550003)摘要:优化方法为工程设计提供了一种重要的科学设计方法,在各行各业均有应用,其中在机械行业的应用尤为广泛。
本文简单的介绍了一下什么优化设计、优化设计的思想以及简单的步骤,主要介绍了几种常用的优化方法。
关键词:优化设计思想步骤优化方法一、什么是优化设计优化设计是一种规格化的设计方法,它首先要求将设计问题按优化设计所规定的格式建立数学模型,选择合适的优化方法及计算机程序,然后再通过计算机的计算,自动获得最优设计方案。
二、优化设计的思想优化设计的指导思想源于它所倡导的开放型思维方式,即在面对问题时,抛开现实的局限去想象一种最理想的境界,然后再返回到当前的现状中来寻找最佳的解决方案.在管理学中有一句俗语,“思路决定出路,心动决定行动”.如此的思维方式有助于摆脱虚设的假象,这并非属于异想天开或者好高骛远的空想,而是强调一切从未来出发,然后再从现实着手。
三、优化设计的步骤一般来说,优化设计有以下几个步骤:1、建立数学模型2、选择最优化算法3、程序设计4、制定目标要求5、计算机自动筛选最优设计方案等四、优化设计的方法(一)分类根据讨论问题的不同方面,有不同的分类方法:1、按设计变量数量来分(1)单变量(一维)优化(2)多变量优化2、按约束条件来分(1)无约束优化(2)有约束优化3、按目标函数来分(1)单目标优化(2)多目标优化4、按求解方法特点(1)准则法(2)数学归纳法(二)常用的优化方法常用的优化方法:单变量(一维)优化,无约束优化,多目标函数优化,数学归纳法。
1、单变量(一维)优化(1)概述单变量(一维)优化方法是优化方法中最简单、最基本的方法。
(2)具体优化方法1)黄金分割法(0.618法)黄金分割是指将一段线段分成两端的方法,使整段与较长段的比值等于较长段与较短段的比值,即1: λ=λ:(1−λ)2)插值法插值法又称“内插法”,是利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值,这种方法称为插值法。
第3章一维优化方法一维优化方法是数学中用于求解最优化问题的一种重要技术。
在实际问题中,往往需要找到一个函数的最小值或最大值点,一维优化方法就是这样一种方法,可以找到函数在一些区间内的最小值或最大值点。
一维优化方法有很多种,常见的有穷举法、黄金分割法、斐波那契法、抛物线法、割线法、牛顿法等。
不同的方法有不同的适用范围和求解效率,我们可以根据具体问题的特点选择合适的方法进行求解。
穷举法是一种最简单的一维优化方法,它通过遍历函数在给定区间内的所有可能取值,找到其中的最小值或最大值。
穷举法的缺点是计算量大,当问题规模较大时,不适用。
但是它的优点是简单易懂,适用于初学者入门。
黄金分割法是一种较为常用的一维优化方法,它通过划分给定区间,选择区间内一些点进行迭代,不断缩小区间范围,直到找到最优解。
黄金分割法的优点是收敛速度较快,适用于一些比较复杂的问题。
斐波那契法是一种基于斐波那契数列的一维优化方法,它可以在一定程度上提高黄金分割法的效率。
斐波那契法的关键在于选择合适的斐波那契数列作为迭代次数,通过比较函数在斐波那契数列中两个相邻点的取值,确定新的区间范围。
抛物线法是一种通过拟合函数的抛物线来求解最优解的一维优化方法。
它通过选择合适的三个点,构造一个简单的二次函数,找到该函数的极小值点作为最优解。
抛物线法的优点是计算量相对较小,但是在一些复杂的问题中可能不适用。
割线法是一种通过逐步逼近函数极值点的一维优化方法。
它通过选择给定区间上两个初始点,不断用割线近似替代切线,找到极小值点。
割线法的优点是收敛速度快,但是需要在迭代过程中进行导数计算,对于一些无法求导的函数不适用。
牛顿法是一种通过利用函数在一些点处的一阶导数来逼近极值点的一维优化方法。
它通过选择给定区间上一个初始点,利用导数的概念找到极小值点。
牛顿法的优点是收敛速度非常快,但是对于一些无法求导的函数不适用。
综上所述,一维优化方法是数学中用于求解最优化问题的一种重要技术。
一维优化方法-黄金分割法的编程实现机械工程刘恒丽 1011201057 一、说明:在机械类专业中,现代设计方法是必学的一门课程,而黄金分割法是现代设计方法中的最常用的一维优化方法之一,也称0.618法。
它的原理是通过对黄金分割点函数值的计算和比较,将初始区间逐次进行缩小,当区间缩小到给定精度要求时,即可求得一维极小点的近似解。
二、例题:用黄金分割法求解Min f(x)=(x-2)2,初始区间为[0,3],迭代3次。
三、程序实现下面源程序是在Visual C++6.0环境下开发的。
程序源代码:#include "math.h"#include <stdio.h>double a,b,x1,x2,x,y,c,d;int i;void main(){a=0;b=3;x1=a+0.382*(b-a);x2=a+0.618*(b-a);for(i=0;i<3;i++){x=x1;y=x2;c=(x1-2)*(x1-2);d=(x2-2)*(x2-2);if(c<d){b=y;x1=a+0.382*(b-a);x2=x;}else{a=x;x1=y;x2=a+0.618*(b-a);}c=(x1-2)*(x1-2);d=(x2-2)*(x2-2);printf("x1: %f x2: %f c: %f d: %f \n",x1,x2,c,d);}}四、运行结果其中c和d分别为点x1和x2处的函数值,由迭代三次后的结果可以看出,近似点是x2=2.021283,此时的函数值为d=0.000453.。
一. 一维优化(搜索)方法1. 一维问题:多维问题优化问题可分解为很多个一维优化问题—沿某个方向优化问题。
2. 非凸规划问题的优化方法● 网格法 *)(.m i n x x f i →,缩小区间,继续搜索。
●Monte Carlo 方法 b i a i i x x x )1(αα-+=, 10≤≤i α, 随机数。
比较各次得到的*j x 得解*x ● 遗传算法(专题)(二)区间消去法(凸函数)1. 搜索区间的确定:高—低--高(b a f f f <>)则 区间内有极值。
2. 区间消去法原理:在区间 [a, b] 内插两个点a 1, b 1 保留有极值点区间,消去多余区间。
[]b a f f a a ,121→> []121,b a f f a a →<?21→=a a f f缩短率:LL L ∆-=λ(三)0.618法 1. Fibonacci 法—理想方法,不常用。
2. 黄金分割法(0.618法)●原理:提高搜索效率:1)每次只插一个值,利用一个前次的插值;2)每次的缩短率λ相同。
左右对称。
ll ∆-=1λλλ-=12618034.02411=++-=λ●程序:p52(四)插值方法1. 抛物线法原理:任意插3点:321βββ<<算得:()11βf y =; ()22βf y =; ()33βf y = 要求:321y y y <>设函数)(x f 用经过3点的抛物线2210)(x a x a a x P ++=代替,有1212110y a a a =++ββ 2222210y a a a =++ββ 3232310y a a a =++ββ 解线代数方程⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧=⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡321210233222211111y y y a a a ββββββ 解得: ()()()()()()1332213212131322ββββββββββββ----+-+-=y y y a()()()()()()1332213221221232132221ββββββββββββ----+-+-=yyya212*a a x p -=≈β()()()()()()321213132322122123213222y y y yyyββββββββββββ-+-+--+-+-=程序框图p572. 3次曲线插值方法已知:b a <; 0)(<'a f ; 0)(>'b f 。
一维优化方法最优化设计数学模型中的基本概念: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))x(k+1)=x(k)+α(k)s(k)式(8-4)称为优化计算的基本迭代公式。
其中的第k次搜寻方向s(k)及步长α(k)是根据x(k)点目标函数值和约束函数值等信息依据某种算法而确定的,其最终目的是使F(x(k))F(x(1))>F(x(2))>(x(3))> >F(x(k))> 很显然,迭代点必将不断向理论最优点逼近,最后必将达到满足预定精度要求的近似最优点,记作x*。
由迭代算法的基本迭代公式可见,优化方法的主要问题乃是解决迭代方向s(k)(k=1,2, )和迭代步长α(k)(k=1,2, )的问题,由于s(k)与α(k)的确定方法及特性的不同而构成了不同的优化方法,即最优化方法。
已有的各种优化方法尽管在选取方向和步长的原则上各有不同,但有一点是共同的,就是各种方法都是以保证目标函数值稳定的下降为前提,按照基本迭代公式通过计算机进行迭代计算并最终获得理论最优点的近似解。
(8-4)2、迭代计算的终止准则数值计算采用迭代法产生设计点的点列x(1),x(2),x(3), ,x(k),x(k+1), 是无穷的,但在解决实际问题的时候必须在适当的时候结束这种迭代计算,这就是迭代终止准则问题。
优化设计是要求出设计问题的最优解,从理论上,人们当然希望最终迭代点到达理论的极小点,或者使最终迭代点与理论极小点之间的距离足够小时即可终止迭代。
但这在实际计算中是办不到的,因为对于一个待求的优化问题,其理论极小点在哪里是未知的。
因此,只能通过迭代计算获得的点列所提供的各种信息来判断是否应该结束迭代计算,不同的判断依据就构成了不同的终止准则。
由于实际问题具有多样性,且迭代过程与目标函数的性质密切相关,所以很难建立一个统一的迭代终止准则,往往还需要根据实际计算的具体情况进行判断和选择。
经常被采用的终止准则如下:3、点距准则若相邻的两个迭代点x(k)、x(k-1)之间的距离已达到充分小,即满足 x(k)-x(k-1)≤ε1式中ε(k)1是给定的收敛精度,取x为最优点,即x(k)=x*。
4、函数下降量准则由于最优点的很小邻域里函数值的变化很小,所以当相邻两次迭代点的函数值下下降量已达到充分小时,预示着已很接近最优点了当F(x(k))当F(x(k))≥1时,采用函数相对下降量准则 F(x(k))-F(x(k-1))F(x(k))≤ε2其中εk)1,ε2为收敛精度,取x(k)为最优点,即x(=x*。
5、梯度准则按函数极值理论,在极值点处函数的梯度为零。
当目标函数在x(k)点处的梯度的模已达到充分小时,即∇F(x(k))≤ε1可以认为x*≈x(k),ε1是收敛精度。
这一准则对凸集凸函数是完全正确的,若为非凸函数,有可能会误把鞍点当作最优点。
上述准则是无约束优化问题迭代收敛准则。
由于约束优化问题与无约束优化(8-5) (8-6) (8-7) (8-8)问题的最优解的条件不同,所以迭代终止准则也不一样,但以上各终止准则对约束优化问题的求解仍然有着重要的意义。
一维优化方法求解以为目标函数f(x)最优解的过程,称为一维优化,所使用的方法称为一维优化方法。
一维优化方法是优化方法中最简单、最基本的优化方法。
他不仅用来解决一维目标函数的求最优问题,而且常用于多维优化问题在既定方向上寻求最优步长的一维搜索。
对于任一次迭代计算,总是希望从已知的点x(k)出发,沿给定的方向s(k)搜索该方向上到目标函数值最小的点x(k+1),即求步长因子α(k)的最优值,使f(x(k+1))=minf(x(k)+α(k)s(k)) α这种在确定的搜索方向s(k)上求步长因子α(k)的最优取值使得目标函数在该方向上达到极小值的过程称为一维搜索优化计算方法或称为单变量优化计算方法。