第1章 绪论
1.1 最优化问题的提出
“优化”既是一个专业术语,也是一个通俗的词语,这一方面说明优化问题的广泛性;另一方面也说明解决优化问题具有一定的难度,需要有专门的理论和技巧。优化问题来源于求某一设计(广义的设计)的最优结果,用数学观点来说就是求用某一指标或某几个指标描述的设计的最大值或最小值。设计的决策包含优化的过程,其中有通过以往经验判断得出的决策,有通过枚举或多方案比较得出的决策,而经济的做法则是通过对设计建立数学模型,通过解析或数值计算寻找到决策的依据,用以指导设计的实施。例如,某设计的模型可用一元函数f(x)来表示,对其进行最优化设计就是求该一元函数的最大值和最小值。如果一元函数是单调函数,则函数的最大值或最小值会在变量x的边界上取得;如果一元函数是二次多项式,则函数的极值在函数曲线的顶点上取得;如果一元函数是高次多项式,函数曲线有多个极值点,则求函数的最大值或最小值问题就变得复杂起来。对多元函数的极值问题更是如此,需要用到局部或全局优化算法来求解。
线性规划问题是目标函数和限制条件都是线性函数的问题,在生产和生活中很多问题都可抽象为线性规划问题。下面以线性规划举例说明优化设计问题的提出、建模及求解的全过程。 例1
有一名学生,期末有5门功课要考试,可用的复习时间有18h。假定这5门功课分别为数学、英语、计算机基础、画法几何和专业概论。如果不复习直接参加考试,这5门功课预期的考试成绩分别为65分、60分、70分、60分和65分。复习以1h为一单位,每增加1h复习时间,各门功课考试成绩就有可能提高,每复习1h各门功课考试成绩提高的分数分别为3分、4分、5分、4分和6分。问:如何安排各门功课的复习时间可使平均成绩不低于80分,并且数学和英语成绩分别不低于70分和75分? 解:
设分配在数学、英语、计算机基础、画法几何和专业概论这5门功课的复习时间分别为x1,x2,x3,x4,x5,则可列出如下的目标函数和限制条件: min f(x)=x1+x2+x3+x4+x5 s.t. x1+x2+x3+x4+x5≤18
(3x1+4x2+5x3+4x4+6x5+320)/5≥80 3x1+65≥70 4x2+60≥75 3x1≤35 4x2≤40 5x3≤30 4x4≤40 6x5≤35
x1,x2,x3,x4.x5≥0
根据所给列出的主要方程。但是根据实际情况,各门功课的成绩不能大于100分,各门功课的复习时间不能是负数,因此还需补充这几个限制条件。由此看出,这是一个在满足限制条件(约束条件)的情况下,求最少复习时间的问题。下面用MATLAB优化工具箱求线性规划的函数linprog()来求解此问题。 线性规划问题数学模型
min CTX s.t. AX≤B AeqX=Beq Lb≤X≤Ub
其中:C,X,B,Beq,Lb,Ub为向量;A,Aeq为矩阵。 例2
资源分配问题是线性规划中的一类问题。这里所说的资料其含义广泛,可以使一般的物质资料,也可以是人力资源。资源分配问题可描述为生产若干种产品(广义的产品)需要几种不同的资源,如原料消耗量、设备使用量、人力需要量等。各种资源供应量有一定限制,所生产的产品有不同的利润或花费不同的费用。所求问题是在所消耗资源和资源供给量限制的条件下,求生产不同的产品的数量,使收益最大或费用最低。
某工厂要生产两种规格的电冰箱,分别用Ⅰ和Ⅱ表示。生产电冰箱需要两种原材料A和B,另需设备C,生产两种电冰箱所需原材料、设备台数、资源供给量及两种产品可获得的利润如表所示。问:工厂应分别生产Ⅰ,Ⅱ型电冰箱多少台,才能使工厂获得最多?
资源 设备C 原材料A 原材料B 单位产品获利 电冰箱Ⅰ用原材料限制 Ⅰ 1 2 0 220 Ⅱ 1 1 1 250 ≤800kg 资源限制 1200台时 1800kg 1000kg 求最大收益 解:
设生产Ⅰ,Ⅱ型电冰箱的数量分别是x1,x2,则可获得的最大收益为 max f(X)=220x1+250x2, X∈R2 s.t. x1+x2≤1200
2x1+x2≤1800 x2≤1000 x1≤800 x1,x2≥0
通过以上两个例子,我们初步了解了优化设计求解的过程,以及优化设计的“威力”。 例1-2中使用了标准化得优化数学模型,而优化问题数学模型的一般描述为 min(max) f(X)=f(x1,x2,x3,…,xn), X∈Rn s.t. gu(x) ≤(≥)0, u=1,2,…,l hv(x)=0,v=1,2,…,m
目标函数和约束条件可以是线性的,也可以、是非线性的。
1.2 最优化问题分类
工程实际问题多种多样,依据不同的分类方法,它们属于不同的类型,相应地有不同的解法。例如根据问题的性质,可将问题分为静态问题、动态问题、确定性问题、随机性问题、模糊问题、连续问题、离散问题、逻辑问题等。求解问题时首先要根据问题遵循的基本定律建立相应的数学模型,模型的类型与问题的类型往往是一致的。不论是那一种类型的问题或模型,其求解可通过实验法、解析法或数值方法来实现。随着计算机技术及各种数值方法的发展,利用计算机求解实际问题越来越普遍和快捷。常遇到的工程问题其数学模型一种是代数模型;另一种是用常微分或偏微分方程表示的模型,如弹性体静力平衡微分方程。有限元法是求解偏微分方程非常有效的方法,其理论基础就是求能量函数或范函的极值。
对于优化设计问题来说,若目标函数和约束函数都是线性函数,则这样的问题就是线性规划问题,,如例1-1和1-2中数学模型;若目标函数或约束函数中含有非线性函数,则这样的问题是非线性优化问题。
有些优化问题有约束条件,而有些优化问题没有约束条件,据此可以将最优化问题分为无约束问题和有约束问题。无约束问题在经典优化设计中占有重要地位,其求解方法是某些约束优化问题求解的基础。
此外,目标函数中变量(称为设计变量)可能只含有一个,也可能含有多个,相应的优点问题就分别称为单变量问题和多变量问题。单变量优化问题的解决称为一维搜索方法。经典多变量优化算法中确定搜索方向最优步长的问题就是一维搜索问题。因此,一维搜索算法是多变量优化算法的基础。
根据目标函数的多少,最优化问题又可以分为单目标函数问题和多目标函数问题;根据设计变量取值的性质,最优化问题又可分为单目标函数问题和多目标函数问题;根据设计变量取值是否连续,最优化问题又可以分为连续优化问题和离散优化问题。
根据求解算法是否含有导数运算,可以将优化算法分为含导数的优化算法和不含导数的优化算法,不含导数的优化算法又称为直接算法。
离散优化问题通常称为规划问题,如资源配置、生产管理、最短邮路等问题。一些启发式优化算法如遗传算法、粒子群算法不仅适合于求解连续优化问题,也适于求解离散优化问题。下式是最优化问题数学模型:
这也是MATLAB优化工具箱函数中优化数学模型采用的形式。
经典优化算法大多属于线搜索方法,即从某一初始点出发x(0),沿搜索方向d(0),按一定的步长α(k)在约束条件限定的范围内进行搜索,一般的迭代格式为
x(k+1)=x(k)+α(k)d(k)
根据搜索方向d构造方法的不同,就形成了不同的优化算法。
1.3 优化模型的图形表示
由图1.1可知,设计变量的取值被限定在约束函数规定的区域内,满足约束条件的最优解位于约束函数曲线的交点上。将优化模型用图形表示就是优化问题的图解法。MATLAB有方便、灵活的绘图函数,对一些二维或三维优化问题应用绘图函数可以帮助了解目标函数性状和约束空间。对一些实际问题,通过图形表示可以了解设计变量的取值范围,也可以通过图解直接得出优化问题的解。先介绍MATLAB常用的绘图函数,然后通过典型优化问题的分析了解基于MATLAB的图解法。
MATLAB绘图函数包括平面曲线函数plot()、三维曲线绘图函数plot3()、三维曲线绘图函数mesh()和surf(),以及将三维曲面投影到平面上的取等值线函数contour()。要绘制较完美的图形,还要对曲线线型、线宽、线的颜色、绘图点标记的形状、标记边框颜色、标记填充颜色等进行定义,此外还要对坐标轴刻线、坐标轴名称、坐标轴取值范围、曲线图例等进行说明,对所绘图形修饰性的说明或定义也可在图形绘制完成后在图形显示窗口通过编辑命令来完成。
1. plot()函数
是在直角坐标系中绘制平面曲线的基本函数,要求输入的参数是横坐标x和纵坐标y的值。x和y用行向量或列向量来表示。 例1-3 绘制下面函数曲线: y(x)=2sinx+lnx
用到的有关函数有内置函数定义函数inline() 、坐标点生成函数linspace()、函数取值函数feval()。坐标点生成函数linspace()用于生成等距点,该函数有3个输入参数,前两个参数说
明坐标的起止点,第3个参数表示生成的离散点数,总的点数包括两个端点。如linspace(1,2,3),结果为[1.0 1.5 2.0],即区间[1 2]上生成3个点,在给定区间内插入一个点1.5.若不指定第3个参数,则自动认为生成100个点。生成等距坐标点的另一种方法是用分割符来实现,如x=1:0.1:10,结果是从1开始,按增加0.1递增,直到小于或等于终点。除可生成等距点外,还可以生成对数分隔点,所用函数为logspce(),该函数也有3个输入参数,其中前两个参数是以10为底的指数,第3个参数与linspace()函数相同。绘图时,函数内向量元素的个数要相等,计算向量长度、矩阵维数的函数分别是length()和size()。
二维绘图函数还有简洁绘图函数ezplot、绘直方图函数bar、在图形加上误差带数errorbar、用给定精度绘图的函数fplot、绘极坐标图函数polar、绘统计分布图hist、绘台阶图函数stairs、绘极坐标统计分布图函数rose、绘火柴杆图函数stem、绘图区填充函数fill、绘矢量场图函数quiver。 2. plot3()
用来绘制三维曲线,它有3个输入参数,分别对应直角坐标系中的x,y,z方向的坐标点,各坐标点以向量表示。 3. mesh()
用来绘制网格状三维曲面,它有3个输入参数,每个参数都是二维矩阵,它们分别是与平面矩形区域网格点对应的x,y,z坐标值。因此,要绘制三维曲面,首先要在xy平面上根据x,y的取值范围划分网格,然后再计算网格点上与x,y对应的z坐标值。网格坐标生产函数为meshgrid(),该函数根据x,y方向的两个一维向量生成平面网格。 4. contour()
三维曲面等值线函数,该函数常用格式:
contour(z) 根据矩阵z绘制三维曲面x,y坐标用矩阵行、列的序号表示。 contour(z,n) 绘制n条等值线。
contour(z,v) 按增量v绘制等值线,v为向量。
contour(x,y,z) 用给定的x,y坐标在xy平面上绘制z等值线。 contour(x,y,z,n),contour(x,y,z,v) 其中参数n,v含义与上同。
contour()函数既可以在三维图形中,也可在二维图形中。应用该函数结合优化问题的约束条件可进行优化问题的图解分析。
例1-4 用图形表示如下优化模型,并求解: min f(x)=4x1^2-x2^2-12 s.t. x1^2+x2^2=25 (x1-5)^2+(x2-5)^2-16 解:
绘制目标函数曲面、约束函数曲线及求解程序如下。
从图1.3可以看出,约束函数曲线在点(1,5)处相交,该点就是目标函数满足约束条件的解。应用MATLAB优化工具箱函数fmincon()得出的结果为X*=[1.0013 4.8987]T。通过图解分析可对优化问题的几何性质有更清晰地认识,从而可得出更为精确的解。
三维绘图函数中surf函数和riobbon函数也很有用,它们分别用来绘制带阴影的三维曲面以及用条带表示的三维曲面或曲线。
除可利用MATLAB进行函数曲线绘制和分析外,其他的一些数学软件也能轻松完成类似的工作,其中应用较广的是Maple,MathCAD和Mathematics。
1.4 有限元法引例
有限元法是求解偏微分方程的一种数值方法,在解决弹性力学、流体力学等学科的问题中得
到广泛应用,很多结构或流体分析商业软件都采用有限元法求解。下面通过阶梯轴有限元列式的建立来说明有限元法的基本思想和基本格式的推导过程。 一受轴向力作用的阶梯轴,采用虚位移原理建立该阶梯轴的有限元列式。虚位移原理可叙述为:弹性体在给定的约束和一组外力作用下处于平衡时,外力在约束和变形协调条件允许的任意一组虚位移上所做的虚功等于弹性体内应力在相应虚应变上所做的功,即
?*TF???*T?dv
v对阶梯轴的典型单元,虚位移原理可表示为Fi?ui?Fj?uj??le0?*T?Aedx
du dx应力与应变的关系为 (本构关系)??E?
位移与应变的关系为 (几何关系)??设位移模型为u??1??2x 对第①单元,边界条件为x?0将边界条件代入位移模式,得
u?uix?leu?uj
?1?uie?2?uj?uilexxu?ui(1?)?uj?(Nilele?ui?Nj)??
?uj?记????ui???ui?*??,则虚位移???。
u?j???uj?dNj??ui?1??(???dx?le??uj?1?ui?)???B?e le?uj?du?dNi??根据几何关系,有??dx??dx虚应变为??B?
**?*T??*TBT?(?ui?1????le???uj)??
1????le??1?ui?)?? le?uj?*T根据本构关系,有
??E??EB?e?E(?1le将以上各式代入虚功方程,得?F??le0?*T?Aedx
1?ui?)??Aedx le?uj?即(?ui?uj)????(?ui0F?j??Fi?ele?1????1?l??uj)?e?E(?1le????le??