《最优化问题程序设计方法.pptx》由会员分享,可在线阅读,更多相关《最优化问题程序设计方法.pptx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1页/共41页第2页/共41页第3页/共41页第4页/共41页第5页/共41页MATLAB语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,自1984年由美国 MathWorks 公司推向市场以来,历经十多年的发展与竞争,现已成为国际公认的最优秀的工程应用开发环境MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎MATLAB:是英文MATrix LABorotory(矩阵实验室)的缩写二.Matlab简介第6页/共41页 在欧美大学里,诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等课程的教科书都把MATLABMATLAB
2、作为内容这几乎成了九十年代教科书与旧版书籍的区别性标志在那里,MATLABMATLAB是攻读学位的大学生、硕士生、博士生必须掌握的基本工具在国际学术界,MATLABMATLAB已经被确认为准确、可靠的科学计算标准软件在许多国际一流学术刊物上,(尤其是信息科学刊物),都可以看到MATLABMATLAB的应用第7页/共41页MATLAB的发展 1984年,MATLAB 第1版(DOS版)1992年,MATLAB 4.0版 1994年,MATLAB 4.2版 1997年,MATLAB 5.0版 1999年,MATLAB 5.3版 2000年,MATLAB 6.0版 2001年,MATLAB 6.1版
3、 2002年,MATLAB 6.5版 2004年,MATLAB 7.0版第8页/共41页MATLABMATLAB特点:1.数值计算和符号计算功能在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函数可使用,函数的标示自然,使得问 题和解答像数学式子一般简单明了,让使用者可全力发挥在解题方面,而非浪费在电脑操作上 2.图形功能利用MATLAB的高级图形命令可以轻而易举地绘制二维、三维乃至四维图形,并可进行图形和坐标的标识、视角、动画和光照设计、色彩精细控制等等第9页/共41页3.高阶但简单的程式环境 作为一种直译式的程式语言,MATLAB容许使用者在短时间内写完程式,所花的时间约为
4、用 FORTRAN 或 C 的几分之一,而且不需要编译(compile)及联结(link)即能执行,同时包含了更多及更容易使用的内建 功能 4.开放及可延伸的架构 MATLAB容许使用者接触它大多数的数学原始码,检视运算法,更改现存函数,甚至加入自己的函数使 MATLAB成为使用者所需要的环境 第10页/共41页5.应用工具箱基本部分和各种可选的工具箱.基本部分中有数百个内部函数.工具箱提 供了使用者在特别应用领域所需之许多函数.现有工具箱有:符号运算(利用Maple V的计算核心执行)、影像处理、统计分析、讯号处理、神经网络、模拟分析、控制系统、即时控制、系统确认、强建控 制、弧线分析、最优
5、化、模糊逻辑、化学计量分析.第11页/共41页第12页/共41页三 Matlab最优化1.线性优化2.非线性优化第13页/共41页线性规划问题是目标函数和约束条件均为线性函数的问题,MATLAB7.0解决的线性规划问题的标准形式为 min sub.to:其中f、x、b、beq、lb、ub为向量,A、Aeq为矩阵.其它形式的线性规划问题都可经过适当变换化为此标准形式.3.1 线性优化第14页/共41页函数 linprog格式 x=linprog(f,A,b)%求min f *x sub.to 线性规划的最优解.x=linprog(f,A,b,Aeq,beq)%等式约束,若没有不等式约束,则A=,
6、b=.x=linprog(f,A,b,Aeq,beq,lb,ub).%指定x的范围,若没有等式约束,则Aeq=,beq=.x=linprog(f,A,b,Aeq,beq,lb,ub,x0)%设置初值x0 x=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)%options为指定的优化参数第15页/共41页x,fval=linprog()%返回目标函数最优值,即fval=f *x.x,lambda,exitflag=linprog()%lambda为解x的Lagrange乘子.x,lambda,fval,exitflag=linprog()%exitflag为终止迭
7、代的错误条件.x,fval,lambda,exitflag,output=linprog()%output为关于优化的一些信息.说明:若exitflag0表示函数收敛于解x,exitflag=0表示超过函数估值或迭代的最大数字,exitflagf=-5;-4;-6;A=1-1 1;3 2 4;3 2 0;b=20;42;30;lb=zeros(3,1);x,fval,exitflag,output,lambda=linprog(f,A,b,lb)结果为:x=%最优解 0.0000 15.0000 3.0000fval=%最优值 -78.0000exitflag=%收敛 1第18页/共41页ou
8、tput=iterations:6%迭代次数 cgiterations:0 algorithm:lipsol%所使用规则lambda=ineqlin:3x1 double eqlin:0 x1 double upper:3x1 double lower:3x1 double lambda.ineqlinans=0.0000 1.5000 0.5000 lambda.lowerans=1.0000 0.0000 0.0000表明:不等约束条件2和3以及第1个下界是有效的第19页/共41页3.2非线性优化1 有约束的一元函数的最小值单变量函数求最小值的标准形式为 sub.to 函数 fminbnd
9、格式 x=fminbnd(fun,x1,x2)%返回自变量x在区间上函数fun取最小值时x值,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x=fminbnd(fun,x1,x2,options)x,fval=fminbnd()x,fval,exitflag=fminbnd()x,fval,exitflag,output=fminbnd()第20页/共41页例2 计算下面函数在区间(0,1)内的最小值.解:x,fval,exitflag,output=fminbnd(x3+cos(x)+x*log(x)/exp(x),0,1)x=0.5223fval=0.3974exitfl
10、ag=1output=iterations:9 funcCount:9 algorithm:golden section search,parabolic interpolation第21页/共41页例3 在0,5上求下面函数的最小值解:先自定义函数:在MATLAB编辑器中建立M文件为:function f=myfun(x)f=(x-3).2-1;保存为myfun.m,然后在命令窗口键入命令:x=fminbnd(myfun,0,5)则结果显示为:x=3第22页/共41页2 无约束多元函数最小值多元函数最小值的标准形式为其中:x为向量.命令 利用函数fminsearch求无约束多元函数最小值函数
11、 fminsearch格式 x=fminsearch(fun,x0)%x0为初始点,fun为目标函数的表达式字符串或MATLAB自定义函数的函数柄.x=fminsearch(fun,x0,options)%options查optimsetx,fval=fminsearch()%最优点的函数值x,fval,exitflag=fminsearch()%exitflag与单变量情形一致x,fval,exitflag,output=fminsearch()%output与单变量情形一致第23页/共41页例4 求 的最小值点解:X=fminsearch(2*x(1)3+4*x(1)*x(2)3-10*x
12、(1)*x(2)+x(2)2,0,0)结果为X=1.0016 0.8335或在MATLAB编辑器中建立函数文件function f=myfun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2;保存为myfun.m,在命令窗口键入 X=fminsearch(myfun,0,0)或 X=fminsearch(myfun,0,0)结果为:X=1.0016 0.8335第24页/共41页3 有约束的多元函数最小值非线性有约束的多元函数的标准形式为:sub.to 其中:x、b、beq、lb、ub是向量,A、Aeq为矩阵,C(x)、Ceq(x)是返回向量的函数,f(
13、x)为目标函数,f(x)、C(x)、Ceq(x)可以是非线性函数.第25页/共41页函数 fmincon格式 x=fmincon(fun,x0,A,b)x=fmincon(fun,x0,A,b,Aeq,beq)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval=fmincon()x,fval,exitflag=fmincon()x,fval,exitflag,output=fm
14、incon()x,fval,exitflag,output,lambda=fmincon()x,fval,exitflag,output,lambda,grad=fmincon()x,fval,exitflag,output,lambda,grad,hessian=fmincon()第26页/共41页参数说明:fun为目标函数,它可用前面的方法定义;nonlcon的作用是通过接受的向量x来计算非线性不等约束和等式约束分别在x处的估计C和Ceq,通过指定函数柄来使用,如:x=fmincon(myfun,x0,A,b,Aeq,beq,lb,ub,mycon),先建立非线性约束函数,并保存为myco
15、n.m:function C,Ceq=mycon(x)C=%计算x处的非线性不等约束的函数值.Ceq=%计算x处的非线性等式约束的函数值.lambda是Lagrange乘子,它体现哪一个约束有效.output输出优化信息;grad表示目标函数在x处的梯度;hessian表示目标函数在x处的Hessian值.第27页/共41页例5 求下面问题在初始点(0,1)处的最优解min sub.to 解:约束条件的标准形式为:sub.to 先在MATLAB编辑器中建立非线性约束函数文件:function c,ceq=mycon(x)c=(x(1)-1)2-x(2);ceq=;%无等式约束第28页/共41页
16、然后,在命令窗口键入如下命令或建立M文件:fun=x(1)2+x(2)2-x(1)*x(2)-2*x(1)-5*x(2);%目标函数x0=0 1;A=-2 3;%线性不等式约束b=6;Aeq=;%无线性等式约束beq=;lb=;%x没有下、上界ub=;x,fval,exitflag,output,lambda,grad,hessian=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mycon)第29页/共41页则结果为x=3 4fval=-13exitflag=1%解收敛 output=iterations:2 funcCount:9 stepsize:1 algorith
17、m:medium-scale:SQP,Quasi-Newton,line-search firstorderopt:cgiterations:lambda=lower:2x1 double%x下界有效情况,通过lambda.lower可查看.upper:2x1 double%x上界有效情况,为0表示约束无效.第30页/共41页 eqlin:0 x1 double%线性等式约束有效情况,不为0表示约束有效.eqnonlin:0 x1 double%非线性等式约束有效情况.ineqlin:2.5081e-008%线性不等式约束有效情况.ineqnonlin:6.1938e-008%非线性不等式约束
18、有效情况.grad=%目标函数在最小值点的梯度 1.0e-006*-0.1776 0hessian=%目标函数在最小值点的Hessian值 1.0000 -0.0000 -0.0000 1.0000第31页/共41页4 二次规划问题二次规划问题(quadratic programming)的标准形式为:sub.to 其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量其它形式的二次规划问题都可转化为标准形式.MATLAB5.x版中的qp函数已被6.0版中的函数quadprog取代.第32页/共41页函数 quadprog格式 x=quadprog(H,f,A,b)%其中H,f,A,
19、b为标准形中的参数,x为目标函数的最小值.x=quadprog(H,f,A,b,Aeq,beq)%Aeq,beq满足等约束条件.x=quadprog(H,f,A,b,Aeq,beq,lb,ub)%lb,ub分别为解x的下界与上界.x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0)%x0为设置的初值x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)%options为指定的优化参数x,fval=quadprog()%fval为目标函数最优值x,fval,exitflag=quadprog()%exitflag与线性规划中参数意义相同x,f
20、val,exitflag,output=quadprog()%output与线性规划中参数意义相同x,fval,exitflag,output,lambda=quadprog()%lambda与线性规划中参数意义相同 第33页/共41页例6 求二次规划的最优解 max f(x1,x2)=x1x2+3 sub.to x1+x2-2=0解:化成标准形式:sub.to x1+x2=2第34页/共41页在Matlab中实现如下:H=0,-1;-1,0;f=0;0;Aeq=1 1;b=2;x,fval,exitflag,output,lambda=quadprog(H,f,Aeq,b)结果为:x=1.0
21、000 1.0000第35页/共41页fval=-1.0000exitflag=4output=iterations:1 algorithm:large-scale:projective preconditioned conjugate gradients f irstorderopt:0 cgiterations:1 message:Optimization terminated:local minimum found;the solution is singular.lambda=eqlin:1.0000 ineqlin:lower:upper:第36页/共41页习题及解答(任务分配问题)
22、某车间有甲、乙两台机床,可用于加工三种工件.假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表.问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?第37页/共41页解 设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6.可建立以下线性规划模型:第38页/共41页f=13 9 10 11 12 8;A=0.4 1.1 1 0 0 0 0 0 0 0.5 1.2 1.3;b=800;900;Aeq=1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1;beq=400 600 500;vlb=zeros(6,1);vub=;x,fval=linprog(f,A,b,Aeq,beq,vlb,vub)第39页/共41页The end第40页/共41页感谢您的观看!第41页/共41页