1、第五章 最优化方法127第五章 最优化方法在国民经济各部门和科学技术的各个领域中普遍存在着最优化问题(如工业设计中的参数选择,资源合理分配等等).最优化问题的解就是从所有可能的方案中选出最合理的, 以达到最优目标的方案-最优方案. 搜寻最优方案的方法就是最优化方法. 随着计算机科学的发展和广泛应用, 应用最优化方法解决问题的领域不断扩大, 解决问题的深度不断深化, 最优化的理论和方法也不断得到普及和发展. 近几年的大学生数学建模竞赛题目很多都与最优化问题有关(如飞行管理问题(95A),最优捕鱼策略(96A),节水洗衣机(96B),零件参数设计(97A),投资的收益和风险(98A),钢管订购和运
2、输(2000B). 这里, 我们主要介绍最典型的优化模型及应用背景、相关的优化理论和最常用的优化算法.建立最优化问题的数学模型, 首先要确定问题的决策变量, 用n 维向量表示 , 然后构造模型的目标函数 f(X)和决策Tnxx),(21变量的允许取值范围,称可行域,常用一组不等式来界定, 称为约束条件. 一般地,这类模型可表述),(0)mixgi 成如下形式:(0.1)(axinfzs.t. (0.2)migi ,21,0)第五章 最优化方法128只满足(0.2)的解 x 称可行解, 同时满足(0.1)、 (0.2)的解称为最优解.*x1 线性规划如果(0.1)(0.2)中的目标函数 f(x)
3、和约束条件 都是线性)(xgj函数, 该模型称为线性规划.模型为( LP)0,.)(minxbAtscf11 线性规划模型的标准型:(1)cxfins.t. (2)bA其中 ),(,),(,),(,)( 212121 nTmTnnmij ccbxxaA 线性规划的其他形式可通过形式变换和添加松弛变量而化为标准型.12 求解方法:单纯形方法是通过迭代来求问题(LP)的最优解,在一个基本可行解非最优时,确定一个更优的基本可行解,形成一个使目标函数单调减的基本可行解序列 ,经有限步即,)2(1x可求得最优解13 模型示例:例 1.1 运输问题:设有 m 个生产地点 可供应物资,mA,21其供应量(产
4、量)分别为 .有 n 个销售地点 ,a,21 nB21第五章 最优化方法129其需求量分别为 , 假设供需平衡既 .用 表nb,21 nimiba1ijc示由 运输单位物资的运价, 如何确定一种调运方案才能iiBA到使总运输费用 最小.I用 表示由 调运物资的数量, 则运输问题的数学模ijxii到型为:ijminjxcI1s.t. 0,21,1ijimijinjixnba14 利用 MATLAB 优化工具箱解线性规划Matlab 求解线性规划的命令为1) x=linprog(c,A,b,Aeq,beq)2) x=linprog(c,A,b, Aeq,beq ,vlb,vub)3) x= lin
5、prog(c,A,b, Aeq,beq ,vlb,vub,x0);x0 表示初始点4) x= lp(c,A,b, Aeq,beq ,vlb,vub,x0,options);x0 表示初始点其中 1)用于求解模型cxZmins.t. beqA第五章 最优化方法1302)、3)、4)用于求解cxZmins.t. vubxleqA例 1 求解线性规划问题 cxzmas.t. 0bA其中 c=-0.4,-0.28,-0.32,-0.72,-0.64,-0.6A=0.01 0.01 0.01 0.03 0.03 0.030.02 0 0 0.05 0 00 0.02 0 0 0.05 00 0 0.03
6、 0 0 0.08b=850;700;100;900vlb=0;0;0;0;0;0vub=解 用命令 2)l11.mc=-0.4,-0.28,-0.32,-0.72,-0.64,-0.6;A=0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0; 0 0.02 0 0 0.05 0; 0 0 0.03 0 0 0.08;b=850;700;100;900;vlb=0;0;0;0;0;0;vub=;第五章 最优化方法131x=linprog(c,A,b,vlb,vub)f=c*x例 2 求解线性规划问题205,31.46min313232xtsxz解 用
7、命令 3)l12.mc=6,3,4;A=1,1,1;0,1,0;b=120;50;vlb=30,0,20;vub=;x0=0;0;0;Aeq=1,1,1;Beq=120;x=lp(c,A,b,Aeq,beq,vlb,vub,x0)z=c*x2 整数线性规划在某些线性规划问题中,决策变量只能取整数(如人数、机器的数量),这时约束条件中还需添加变量取整的限制,这就是整数线性第五章 最优化方法132规划,模型的一般形式为(ILP)),21(minnjxbAczj 为 非 负 整 数如果其中只有部分变量取整数,称为混合整数规划. 决策变量只能取整数 0 或 1 的称为 0-1 规划21 整数线性规划的
8、求解方法21.1 割平面法用于求解纯整数规划21.2 分枝定界法用于求解混合整数规划.213 穷举法-用于规模不大的整数问题的求解22 建模示例例 2.1 背包问题:有一只背包(泛指仓库、船舱、卫星仓等),最大装载重量为 w 单位。现有 k 种物品,每种的数量无限。第 i 种物品每件重量为 ,价值 。每种物品各取多少装入背包,使其中iiv的物品总价值最高。设取第 i 种物品 件,则ixkxvvz21mns.t. ixwwi k,01 且 为 整 数3 无约束优化无约束优化的模型为)(minxfR第五章 最优化方法133它的最优解都是局部最优解,全局最优解只能从局部最优解的比较中得到.31 最优
9、解条件)()(),(),() 2221 矩 阵称 为 梯 度 Hesianxffxffxf njiTn 必要条件: 若 为 的极小点,则 =0*f *f充分条件:若 =0, 正定,则 是极小点)(x)(*2xfx32 求解方法:搜索算法(数值迭代)数值迭代的基本思路是在迭代的每一步,确定一个搜索方向和一个步长,使沿此方向和此步长走一步到达下一点时,函数 f(X)的值下降.基本步骤为 1)选初始点 2)对于第 k 次迭代解 ,确定搜0xkx索方向 并在此方向确定搜索步长 ,令 s.t.nkRdRkkdx13)若 符合给定的迭代终止原则,停止迭代, )(1xff 1kx*kx否则转 2).不同的算
10、法在于方向和步长的选择,目的是使 f 下降更快.321 步长的选择:搜索方向 确定后,求步长实际上是一个kd一维优化问题:)(minkxf称为一维搜索,有很多方法,如成功-失败法、黄金分割法(0.618 法)、Fibonacci 法、抛物线插值法和三次插值法等等.32.2 方向的选择3 2.2.1 最速下降法(梯度法):取 )(kkxfd3 2.2.2 牛顿法:取 )(12kfd第五章 最优化方法1343 2.2.3 拟牛顿法:选 满足kd)(kkxfH其中 由 BFGS 迭代公式或 DEP 公式迭代得出kH111111 11111 iTiTiiiiTi iTiii sysyHyHiiHTii
11、 sysyHyiiwH iTiTiiiiTi iTiii111 111111 1111 33 用 MATLAB 优化工具箱解无约束最优化问题3 3.1 命令 fminunc1)x=fminunc(fun,x0)2)x=fminunc(fun,x0,options) 其中 1)、2)用于求解多元函数的无约束极小化问题,x0 为迭代的初值,fun 为函数形式的 M-文件(fun.m) 的文件名, fminunc 的求解方法由 options(6)(方向)和 options(7)(步长)指定(options(6)=0 拟牛顿法(BFGS 公式) options(6)=1 拟牛顿法(DFP 公式) o
12、ptions(6)=2 最速下降法; options(7)=0 混合的二次和三次多项式插值 options(7)=1 三次多项式插值)第五章 最优化方法135例 1 求 在(0,8)上的最大值和最小值.xefsin2L21.mf=2*exp(-x)*sin(x);fplot(f,0,8);xmin=fminbnd(f,0,8);x=xmin;ymin=eval(f);f1=-2*exp(-x)*sin(x);xmax=fminbnd(f1,0,8);x=xmax;ymax=eval(f)例 2 求 1)242()11 xexxf 1) 编写函数 M-文件 FUN32.Mfunction f=f
13、un32(x)f=exp(x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);2)键入命令l22.mx0=-1,1;x=fminunc(fun32,x0);y=fun32(x)例3 Rosenbrock函数 212121 )()(0),( xxxf 第五章 最优化方法136它的极小值点为 =(1,1),极小值f( )=0. 试用不同的算法求数值*x*x最优解,初始点选为 =(-1.2,2).0建立函数M-文件fun33.mfunction f=fun33(x)f=100*(x(2)-x(1)2)2+(1-x(1)2;用fminunc命令1)l232.mopt
14、ions(6)=1;options(7)=0;x,options=fminu(fun33,-1.2,2,options)y=options(8)n=options(10)2) options(6)=1;options(7)=1;x,options=fminu(fun33,-1.2,2,options)y=options(8)n=options(10)3) options(6)=2;options(7)=1;x,options=fminu(fun33,-1.2,2,options)y=options(8)n=options(10)第五章 最优化方法1374) options(6)=0;optio
15、ns(7)=1;x,options=fminu(fun33,-1.2,2,options)y=options(8)n=options(10)画图x,y=meshgrid(-2:0.1:2,-1:0.1:3);z=100*(y-x.2).2+(1-x).2;mesh(x,y,z)contour(x,y,z,20)drawnowhold onplot(-1.2,2,o)text(-1.2,2,start point)plot(1,1,o)text(1,1,solution)34 模型示例例 3.4.1 选址问题:某市燃气公司计划要建一个煤气供应站, 该站向城市中有固定位置的m个用户供货. 对于选定
16、的坐标系, 已知第i个用户的位置为 , 如果只考虑直线距离, 如何确定mibai2,1),(第五章 最优化方法138煤气站的位置, 才能使总的运输距离最短?设煤气站的位置为 则问题的数学模型为),(21xmi iibxaf122)()(,in4 非线性规划(0.1)(0.2)中至少有一个是非线性函数的最优化问题称为非线性规划问题, 其数学模型为(4.1)(minxfs.t. (4.2)ljhmigji ,21,0)(其中 Rfxxnjin:,(21求目标函数的最大值或约束条件小于等于零的情形,可通过取其相反数, 而化为上述形式.41 非线性规划问题的求解方法411 罚函数法基本思想是通过构造罚
17、函数把约束问题转化为一系列无约束最优化问题. 这种方法称为序列无约束最小化方法, 简称SUMT.4111SUMT外点法构造罚函数T(x,M)如下:第五章 最优化方法139(4.3)2121 )()(,0min)(,( xhMxgMxfTljjii将求解非线性规划问题(4.1)(4.2)转化为求解无约束问题(4.4),(minxT若对某个确定的M, (4.4)的解 ,则 是(4.1)(4.2)的解Dx)()(x4112SUMT内点法对具有不等式约束的非线性规划问题(4.5)mixgtsfi ,21,0)(.mn构造障碍函数 如下:,krI)(ln)(,()(,( 11 xgrxfrIxgrxf
18、miikkmikk 或将(4.5)转化为求解(4.6),(inkrxI其中 0lim21 kr若 是(4.6)的解, 则 是(4.5)的解.kxkx*42 用MATLAB优化工具箱解约束最优化(非线性规划)问题42.1求解二次规划问题)(0,.21)(minvubxlxbAtscHfT其中H为n阶对称半正定矩阵.MATLAB命令为1)x=qp(H,c,A,b);2)x=qp(H,c,A,b,vlb,vub);2) x=qp(H,c,A,b,vlb,vub,x0);第五章 最优化方法1403) x=qp(H,c,A,b,vlb,vub,x0)4) x=qp(H,c,A,b,vlb,vub,x0,
19、N)例4.1 求二次规划0,2.26),(min1 1211xts xxf写成标准形式0,2,1),62(,421)(min vlbAcHxxfT键入命令l41H=2,-2;-2,4;c=-2;-6;A=1,1;-1,2;b=2;2,vlb=0;0;vub= ;x=qp(H,c,A,b,vlb,vub)z=0.5*x*H*x+c*x422 求解非线性规划问题 vubxlGtsF0)(.min的MATLAB命令为1)x=constr(fun,x0) 第五章 最优化方法1412)x=constr(fun,x0,options) 3)x=constr(fun,x0,options,vlb,vub)例
20、4.2 求解 0,54632. 21min2121xtsxxf建立函数M-文件FUN42function f,g=fun42(x)f=-x(1)-2*x(2)+1/2*x(1)2+1/2*x(2)2;g=2*x(1)+3*x(2)-6;x(1)+4*x(2)-5;键入命令x0=1;1;vlb=0;0;vub=;options=;x=constr(fun42,x0,options,vlb,vub)fun42(x)例4.3 求解015.)1242()min2211xxts xefx建立函数文件FUN43.M第五章 最优化方法142function f,g=fun43(x)f=exp(x(1)*(4
21、*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);g=x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10;键入命令x0=-1;1;options(13)=1;x,options=constr(fun43,x0,options);options(8)43.建模示例例43.1 资金使用问题设有400万元资金, 要求4年内使用完, 若在一年内使用资金 x万元, 则可得效益 万元(效益不能再使用),当年不用的资金可存x入银行, 年利率为10%. 试制定出资金的使用计划, 以使4年效益之和为最大.设变量 表示第 i年所使用的资金数,则有
22、ix4,321,04.532. 8.40ma4321 4321ixxtsxxzi建立函数文件FUN44.Mfunction f,g=fun44(x)f=-(sqrt(x(1)+sqrt(x(2)+sqrt(x(3)+sqrt(x(4);第五章 最优化方法143g(1)=x(1)-400;g(2)=1.1*x(1)+x(2)-440;g(3)=1.21*x(1)+1.1*x(2)+x(3)-484;g(4)=1.331*x(1)+1.21*x(2)+1.1*x(3)+x(4)-532.4;键入命令x0=1;1;1;1;vlb=0;0;0;0;vub=;options=;x=constr(fun4
23、4,x0,options,vlb,vub)fun44(x)得到 1.438.152,.6,2.0,86432z xx5 动态规划动态规划是解决多阶段决策过程最优化问题的一种数学方法. 它在工程技术、管理、经济、工业生产、军事及现代控制工程等方面都有广泛的应用。构造动态规划模型的步骤为 1)将实际问题恰当地划分为若干阶段;2)正确选择状态变量 ;3)确定决策变量 及每段的允kxuk许决策集合 ;4)正确选择状态转移方程)(kkuxD;5)正确列出指标函数 并要求满足递推性。,1kfx nkV,根据 Bellman 的最优化原理(对最优策略来说,无论过去状态和决策如何,由前面诸决策所形成的状态出发
24、,相应的剩余决策序列构成最优子策略) ,利用逆推(初始状态给定)和顺第五章 最优化方法144推方法(终止状态给定)可求出最优决策和最优值。下面我们将就几个典型的多阶段决策过程最优化问题,利用动态规划方法给出他们的求解算法。5.1 投资问题:设有某种资源(或资金)M 个单位(M 为正整数),欲分配用于 N 个生产项目. 已知第 k 个生产项目获得 u(k)个单位(u(k)为非负整数, 称为决策变量)这种资源后可创利润L(u(k),k). L(u(k),K)是 u(k)的不减函数.如何分配这些资源可使所获利润 最大.NkuLI1),(把资源分配过程分为 N 个阶段. 第 k 阶段是向第 k 个生产
25、项目分配资源. 用 x(k+1)表示分配完 1,2,k 个生产项目后剩余的资源数量(称为状态变量,x(1)=M). 用 v(x(k+1),k+1)表示把剩余的资源 x(k+1)分配给第 k+1,k+2,N 个生产项目能获得的最大利润(称为最优值函数). 根据动态规划方法, 利用动态规划基本方程 ),(),( 1,2),1,(,maxNLNxV NkkxVkukkUu 和状态转移方程)()1(kuxk逆向递推可求得最优决策序列 和总利润的最大)(,)2(,1*Nu值 其中).,1(*xVI.,0)(kxkxU求解程序 TZ.Mfunction u,I=tz(M,N,L)第五章 最优化方法145f
26、or i=1:M+1V(i,N)=L(i,N);W(i,N)=i-1;endfor k=N-1:-1:2for i=1:M+1V(i,k)=0;W(i,k)=i-1;for j=1:iif V(i,k)L(j,k)+V(i+1-j,k+1)V(i,k)=L(j,k)+V(i+1-j,k+1);W(i,k)=j-1;end endendendV(M+1,1)=0;W(M+1,1)=M;for j=1:M+1if V(M+1,1)L(j,1)+V(M+2-j,2)V(M+1,1)=L(j,1)+V(M+2-j,2);W(M+1,1)=j-1;第五章 最优化方法146end endI=V(M+1,1
27、);u(1)=W(M+1,1);s=M-u(1);for i=2:Nu(i)=W(s+1,i);s=s-u(i);end应用实例:某公司新购置了某种设备6台, 欲分配给下属的4个企业. 已知各企业获得这种设备后年创利润如表, 问如何分配这些设备能使年创总利润最大, 最大利润为多少?甲 乙 丙 丁0 0 0 0 01 4 2 3 42 6 4 5 53 7 6 7 64 7 8 8 65 7 9 8 66 7 10 8 6键入命令第五章 最优化方法147M=6;N=4;L=0,0,0,0;4,2,3,4;6,4,5,5;7,6,7,6;7,8,8,6;7,9,8,6;7,10,8,6;u,I=t
28、z(M,N,L)6 多目标规划在日常生产、管理、经营等活动中, 经常会遇到多目标决策问题,如在一个生产过程中, 人们总是期望高产出、少用料、省工时等等, 在风险投资中, 希望收益大、风险小.多目标规划的一般模型为(vp)0)(.minxhgtsf其中 )(,(),(,)(),(,)(,() 1121 xhxhgxgxffxf lmp 6.1 有效解和弱有效解6.1.1 iiba6.1.2 设 如果对 则称 为(vp),*Dx)()(,*xffDx*的绝对最优解.6.1.3 设 如果不存在 则称,*x )()(, *xfxfx使 得为(vp)的(弱)有效解或 pareto 最优解.*x6.2 求
29、解多目标函数的评价函数方法第五章 最优化方法148评价函数法是求对目标规划有效解的最基本方法. 它的基本思想是:借助于几何和应用中的直观背景, 构造所谓的评价函数, 从而将多目标规划问题转化为单目标优化问题. 然后利用单目标优化问题的求解方法求出最优解, 并把这种最优解当作多目标规划问题的最优解.所谓的评价函数是利用(vp)的目标函数 f(x), 构造一个复合函数 ,然后在(vp)的约束集上极小化 . 的构造必须保证)(xf )(xf在一定条件下, 的最优解是(vp)的(弱)有效解.)(minxfDx6.2.1 理想点法在(vp)中, 先求解 p 个单目标问题 , 设pjxfjDx2,1)(m
30、in其最优值为 ,称 为一个理想值点, 一般很难达到*jf ),(*2*1ff它, 我们期望在某种度量下, 寻求距 最近的 f 作为近似值. 一种*f直接的想法是构造评价函数Piifz12*)()(然后极小化 并将它的最优解 作为(vp)在这种意义下的minxfDx *x最优解.6.2.2 线性加权和法构造评价函数piiz1)(1,0)(pii求解 = , 将它的最优解 最为(vp)在该意义下的)(minxfDxfT *x最优解. 为权.一般相对重要的指标给予较大的权系数.i第五章 最优化方法1496.2.3 极大极小法在决策时, 采取保守策略是稳妥的. 既在最坏的情况下, 寻求最好的结果.
31、按照这种想法, 可以构造评价函数ipz1max)(然后求解 = , 并将它的最优解作为(vp)在(minxfDx)(infiD这种意义下的最优解.还有很多其他形式的评价函数. 不一一列举.6.3 建模示例用直径为 1 的圆木制作截面为矩形的梁, 为使重量最轻而强度最大, 问截面的长与宽应取何尺寸?设矩形截面的长与宽分别为 , 这时梁的面积为 ,它决定21xx1重量, 而梁的强度取决于截面矩 ,故得到模型为60,1.6maxin2121ts7 组合最优化问题组合最优化(combinatorial optimization)是通过对数学方法的研究去寻找离散事件的最优编排、分组、次序或筛选等, 是运
32、第五章 最优化方法150筹学中的一个经典且重要的分支, 所研究的问题涉及信息技术、经济管理、工业工程、交通运输、通讯网络等诸多领域。该问题可用数学模型描述为Dxgtsf0)(.min其中, f( x) 为目标函数, g( x) 为约束条件, x 为决策变量, D 表示有限个点组成的集合。一个组合优化问题可用三参数 ( D, F, f) 表示, 其中 D 表示决策变量的定义域, F 表示可行解区域 ,F 中的0)(|xgxF任何一个元素称为该问题的可行解, f 表示目标函数.满足的可行解 称为该问题的最优解.组合最优化|)(min)(*xfx*x问题的特点是可行解集合为有限点集. 由直观可知,
33、只要将 D 中有限个点逐一判别是否满足 g(x)的约束和比较目标值的大小, 该问题的最优解一定存在和可以得到.因此, 每一个组合最优化问题都可以通过枚举法求得最优解. 但枚举是以时间为代价的,有的枚举可以接受, 有的则不可能接受.6.1 计算复杂性:针对一个模型可以有各种算法, 衡量一种算法的好坏的一条重要标准是该算法的计算次数或计算时间.如果存在n(问题变量的个数)和 L(输入数据的位数)的一个多项式 P(n,L), 使得该算法解任何实例都在计算时间 T=O(P(n,L)之内解出, 则称该模型存在多项式时间算法, 而 0(P(n,L)称为算法的计算复杂性.多项式算法被认为是好的算法. 把计算
34、时间 T 破坏多项式界的算法, 第五章 最优化方法151称为指数型算法.枚举算法的基本计算总是 n 的阶乘函数,比指数函数增加的速度还快.6.2 求解组合最优化问题的启发式算法启发式算法是相对最优化算法提出的.一个问题的最优算法求得该问题每个实例的最优解.启发式算法是一种技术, 这种技术使得在可接受的计算费用内去寻找最好的解, 但不一定能保证所得解的可行性和最优性.6.3 现代优化算法它是 80 年代初兴起的启发式算法.这些算法包括禁忌搜索,模拟退火,遗传算法,人工神经网络. 这些算法的目标是求 NP-HARD组合最优化问题的全局最优解.目前,这些算法在理论和实际应用方面都得到了较大的发展.6
35、.4 建模示例例 6.1 0-1 背包问题:设有一个容积为 b 的背包,n 个体积分别为 ,价值分别为 的物品, 如何以最大),21(nia )2,1(nic的价值装包?设 分别表示 不装和装,则10ixia第五章 最优化方法152),21(,0,.max1nixbtsciinii或例 6.2 旅行商问题:一个商人欲到 n 个城市推销商品, 每两个城市 i 和 j 之间的距离为 , 如何选择一条道路使得商人每个ijd城市走一遍后回到起点且所走路径最短.决策变量 和 分别表示行走的路线不包含和包含从城0ijx1ij市 i 到城市 j 路径, 则数学模型为 jinjix nssjnixtsdijijnijjiijji ,2,1),0,21|,21,.m,1参考文献1. 施光燕、董加礼,最优化方法,高等教育出版社,1999。2. 邢文训、谢金星,现代优化计算方法,清华大学出版社,1999。3. 姜启源等,数学实验,高等教育出版社,1999。4. 薛定宇,科学计算语言 MATLAB5.3 程序设计与应用,清华大学出版社,2000.5. 李涛等,MATLAB 工具箱-应用数学篇,电子工业出版社,2000.6. 王沫然,MATLAB5.X 与科学计算,清华大学出版社,2000.第五章 最优化方法1537. 赵静、但琦,数学建模与数学实验,高等教育出版社,2000.