运筹学优化试验.pptVIP

  • 7
  • 0
  • 约4.8千字
  • 约 25页
  • 2018-05-31 发布于广东
  • 举报
运筹学优化试验

* * 一、用Excel求非线性规划模型的命令格式和实例 例1 求 例2 求 二、用Mathematica求非线性规划模型的命令格式和实例 1、用驻点法求函数f(x) 在[a, b]区间上的最大和最小值 1)先求驻点表 zd=Solve[f[x]==0,x] 2)再求函数在表 zd 中点处的{变量值、函数值}表与{端点值 、端点函数值}并集表 zdgh=Union[{x,f[x]}/. zdg,{{a,f(a)},{b,f(b)}}] 3)求表zdgh 中的函数值的最大、最小值 fmax=Max[Transpose[zdgh][[2]]] fmin=Min [Transpose[zdgh][[2]]] 4)求出函数取最大、最小值的点 x1=Position[zdgh,fmin] x2=Position[zdgh,fmax] xmin=zdgh[[x1[[1,1]]]] xmax=zdgh[[x2[[1,1]]] 注:学习编程后我们可把这种方法编成一个通用程序。 Transpose[zdgh]表示把表zdgh转置 zdgh[[2]]表示获取表zdgh的第2行 Transpose[zdgh][[2]]表示获取表zdgh的第2列 Position[zdgh,fmin]表示表zdgh中与元素fmin相匹配的位置 2、用改进法求函数f(x) 在[a, b]区间上的最大和最小值 1)绘制函数f(x)在[a,b]上的图形,观察函数f(x) 在[a, b]区间上可能取最大和最小值 的点为x2和x1附近。 2)xmin=FindRoot[f’[x]==0,{x,x1}] xmax=FindRoot[f’[x]==0,{x,x2}] 3) fmin=f[x]/.xmin fmax=f[x]/.xmax 注:该方法简单直观,但不适宜编通用程序。 3、用求极值命令求函数f(x) 在[a, b]区间上的最大和最小值(P186) 1)绘制函数f(x)在[a,b]上的图形,观察函数f(x) 在[a, b]区间上可能取最大和最小值 的点为x2和x1。 2)xmin=FindMinmum[f[x],{x,x1}] xmax=FindMinmun[-f[x],{x,x2}] 4、多元函数求极值 命令xmin=FindMinmum[f[x, y, z ],{x,x0}{y,y0},{z,z0}] 表示求多元函数f(x,y,z)在点{xo,y0,z0}附近的极小值 xmax= FindMinmum[-f[x, y, z ],{x,x0}{y,y0},{z,z0}] 表示求多元函数f(x,y,z)在点{xo,y0,z0}附近的极大值 5、有约束的非线性规划求解 命令NMinimize[{f(X),约束1,约束2, …,约束m},{决策变量}] 如:NMinimize[{E^(Sin[50 x])+Sin[60 E^y]+Sin[70 Sin[x]]+Sin[Sin[80 y]]-Sin[10 (x+y)]+1/4 (x^2+y^2),x^2+y^2£1},{x,y}] 三、用MATLAB解优化问题 其中等式(3)、(4)、(5)的右边可选用(1)或(2)的等式右边. 函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解. 常用格式如下: (1)x= fminbnd (fun,x1,x2) (2)x= fminbnd (fun,x1,x2 ,options) (3)[x,fval]= fminbnd(…) (4)[x,fval,exitflag]= fminbnd(…) (5)[x,fval,exitflag,output]= fminbnd(…) MATLAB(wliti1) 主程序为wliti1.m: f=2*exp(-x).*sin(x); fplot(f,[0,8]); %作图语句 [xmin,ymin]=fminbnd (f, 0,8) f1=-2*exp(-x).*sin (x); [xmax,ymax]=fminbnd (f1, 0,8) 用Excel规划求解工具求解 用LINGO软件求解 命令格式为: (1)x= fminunc(fun,X0 );或x=fminsearch(fun,X0 ) (2)x= fminunc(fun,X0 ,options); 或x=fminsearch(fun,X0 ,option

文档评论(0)

1亿VIP精品文档

相关文档