您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 第9章基于MATLAB优化工具箱的优化计算
第9章基于MATLAB优化工具箱的优化计算9.1MATLAB优化工具箱一、常用的优化功能函数求解线性规划问题的主要函数是linprog。求解二次规划问题的主要函数是quadprog。求解无约束非线性规划问题的主要函数是fminbnd、fminunc和fminsearch。求解约束非线性规划问题的主要函数是fgoalattain和fminimax。二、一般步骤建立目标函数文件针对具体工程问题建立优化设计的数学模型不等式约束条件表示成g(X)≥0的形式建立调用优化工具函数的命令文件文件内容:必须的输入参数、描述标函数表达式等存储:以自定义的目标函数文件名存储在文件夹中建立约束函数文件文件内容:必须的输入参数、约束函数表达式等存储:以自定义的约束函数文件名存储在文件夹中将优化设计的命令文件复制到MATLAB命令窗口中进行运算求解。分析优化设计的数学模型,选择适用的优化工具函数文件内容:初始点,设计变量的边界约束条件,运算结果输出等内容存储:以自定义的命令文件名存储于文件夹中。9.2线性规划问题一、线性规划数学模型1.主要应用对象:(1)在有限的资源条件下完成最多的任务;(2)如何统筹任务以使用最少资源。2.数学模型形式:minfTXs.t.AX≤b(线性不等式约束条件)AeqX=beq(线性等式约束条件)lb≤X≤ub(边界约束条件)约束条件决策变量目标函数非负数线性3.MATLAB中函数调用格式[xopt,fopt]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)最优解最优值目标函数各维变量系数向量初始点可选项二、例题生产规划问题:某厂利用a,b,c三种原料生产A,B,C三种产品,已知生产每种产品在消耗原料方面的各项指标和单位产品的利润,以及可利用的数量,试制定适当的生产规划使得该工厂的总利润最大。生产每单位产品所消耗的原料现有原料数量(千克)ABCa342600b212400c132800单位产品利润(万元)243合计1800千克→x1→x2→x32x14x23x33x14x22x32x1x1x23x22x32x3≤≤≤++++++++3.确定约束条件:X=[x1,x2,x3]T4.编制线性规划计算的M文件f=[2,4,3]’A=[3,4,2;2,1,2;1,3,2];b=[600;400;800];Aeq=[];beq=[];lb=zeros(3,1);[xopt,fopt]=linprog(f,A,b,Aeq,beq,lb)二、例题解:1.确定决策变量:max2x1+4x2+3x33x1+4x2+2x3≤6002x1+x2+2x3≤400x1+3x2+2x3≤800设生产A、B、C三种产品的数量分别是x1,x2,x3,决策变量:根据三种单位产品的利润情况,按照实现总的利润最大化,建立关于决策变量的函数:2.建立目标函数:根据三种资料数量限制,建立三个线性不等式约束条件5.M文件运行结果:Optimizationterminatedsuccessfully.xopt=0.000066.6667166.6667fopt=-766.6667x1,x2,x3≥0[xopt,fopt]=linprog(f,A,b,Aeq,beq,lb,ub,x0,options)---9.3二次规划问题1.研究意义:(1)最简单的非线性规划问题;(2)求解方法比较成熟。2.数学模型形式:s.t.AX≤b(线性不等式约束条件)AeqX=beq(线性等式约束条件)lb≤X≤ub(边界约束条件)XCHXX21)X(fminTT一、二次规划问题数学模型约束条件决策变量目标函数二次函数3.MATLAB中函数调用格式[xopt,fopt]=quadprog(H,C,A,b,Aeq,beq,lb,ub,x0,options)最优解最优值目标函数的海赛矩阵初始点可选项目标函数的一次项系数向量结果xopt=[2.571,1.143,0.000]fopt=-16.4898二、例题求解约束优化问题321232221xxx2xx2x2)X(f6x2x3x)X(g3214xxx2)X(h3210x,x,x321s.t.XCHXX21)X(fTT解:(1)将目标函数写成二次函数的形式,其中:321xxxX200042024H100C[xopt,fopt]=quadprog(H,C,A,b,Aeq,beq,lb,ub,x0,options)(2)编写求解二次规划的M文件:H=[4,-2,0;-2,4,0;0,0,2];C=[0,0,1];A=[1,3,2];b=[6];Aeq=[2,-1,1];beq=[4];lb=zeros(3,1);[xopt,fopt]=quadprig(H,C,A,b,Aeq,beq,lb)9.4无约束非线性规划问题无约束非线性规划问题的MATLAB函数有fminbnd要求目标函数为连续函数只求解单变量问题fminunc可求解单变量和多变量问题适用于简单优化问题可求解复杂优化问题fminsearch1.使用格式:[xopt,fopt]=fminbnd(fun,x1,x2,options)9.4.1函数fminbnd设置优化选项参数迭代搜索区间目标函数返回目标函数的最优值返回目标函数的最优解2.例题:求解一维无约束优化问题f(x)=(x3+cosx+xlogx/ex)在区间[0,1]中的极小值。解:(1)编制求解优化问题的M文件。%求解一维优化问题fun=inline(‘(x^3+cos(x)+x*log(x))/exp(x)’,‘x’);%目标函数x1=0;x2=1;%搜索区间[xopt,fopt]=fminbnd(fun,x1,x2)(2)编制一维函数图形的M文件。ezplot(fun,[0,10])title('(x^3+cosx+xlogx)/e^x')gridon9.4.1函数fminbnd运行结果:xopt=0.5223fopt=0.39741.使用格式:[xopt,fopt]=fminsearch(fun,x0,options)9.4.2函数fminsearch设置优化选项参数初始点目标函数返回目标函数的最优值返回目标函数的最优解2.例题:求解二维无约束优化问题f(x)=(x14+3x12+x22-2x1-2x2-2x12x2+6)的极小值。解:(1)编制求解二维无约束优化问题的M文件。%求解二维优化问题fun='x(1)^4+3*x(1)^2+x(2)^2-2*x(1)-2*x(2)-2*x(1)^2*x(2)+6';x0=[0,0];%初始点[xopt,fopt]=fminsearch(fun,x0)(2)讨论。将目标函数写成函数文件的形式:%目标函数文件search.mfunctionf=search(x)f=x(1)^4+3*x(1)^2+x(2)^2-2*x(1)-2*x(2)-2*x(1)^2*x(2)+6;则命令文件变为:%命令文件名称为eg9_4.mx0=[0,0];%初始点[xopt,fopt]=fminsearch(@search,x0)9.4.2函数fminsearch运行结果:xopt=1.00002.0000fopt=4.00001.使用格式:[x,fval,exitflag,output,grad,hessian]=fminunc(@fun,x0,options,P1,P2…)9.4.3函数fminunc设置优化选项参数初始点调用目标函数的函数文件名目标函数在最优解的海色矩阵返回目标函数在最优解的梯度优化算法信息的一个数据结构返回算法的终止标志返回目标函数的最优值返回目标函数的最优解附加参数管道截面积:其中设计变量:9.4.3函数fminunc2.例题:已知梯形截面管道的参数是:底边长度c,高度h,面积A=64516mm2,斜边与底边夹角为θ。管道内液体的流速与管道截面的周长s的倒数成比例关系。试按照使液体流速最大确定该管道的参数。解:(1)建立优化设计数学模型管道截面周长hcθsinh2cs64516ctghchA2hctgh64516csinh2hctgh64516sminx1x221211xsinx2ctgxxx64516f(X)hxxX21目标函数的文件(sc_wysyh.m):functionf=sc_wysyh(x)%定义目标函数调用格式a=64516;hd=pi/180;f=a/x(1)-x(1)/tan(x(2)*hd)+2*x(1)/sin(x(2)*hd);%定义目标函数9.4.3函数fminunc2.例题:解:(1)建立优化设计数学模型(2)编写求解无约束非线性优化问题的M文件21211xsinx2ctgxxx64516)X(f[x,fval,exitflag,output,grad,hessian]=fminbnd(@fun,x0,options,P1,P2…)求最优化解时的命令程序:x0=[25,45];%初始点[x,Fmin]=fminunc(@sc_wysyh,x0);%求优语句fprintf(1,'截面高度hx(1)=%3.4fmm\n',x(1))fprintf(1,'斜边夹角θx(2)=%3.4f度\n',x(2))fprintf(1,'截面周长sf=%3.4fmm\n',Fmin)计算结果截面高度hx(1)=192.9958mm斜边夹角θx(2)=60.0005度截面周长sf=668.5656mmxx1=linspace(100,300,25);xx2=linspace(30,120,25);[x1,x2]=meshgrid(xx1,xx2);a=64516;hd=pi/180;f=a./x1-x1./tan(x2*hd)+2*x1./sin(x2*hd);subplot(1,2,1);h=contour(x1,x2,f);clabel(h);axis([100,300,30,120])xlabel('高度h/mm')ylabel('倾斜角\theta/(^{。})')9.4.3函数fminunc2.例题:解:(1)建立优化设计数学模型(2)编写求解无约束非线性优化问题的M文件(3)编写绘制一维函数图形的M文件title('目标函数等值线')subplot(1,2,2);meshc(x1,x2,f);axis([100,300,30,120,600,1200])title('目标函数网格曲面图')控制参数options序号功能默认值及其含义说明1输出形式0,无中间结果输出Options(1)=1,按照表格输出结果Options(1)=-1,隐藏警告信息2解x的精度1e-4Options(2)设置x解的终止条件3函数f的精度1e-4Options(3)设置函数f的终止条件4约束g的精度1e-6Options(4)设置约束g的终止条件5选择主要算法0Options(5)选择主要优化算法6搜索方向算法0fmin()函数为无约束优化搜索方向提供3种算法:Options(6)=0,拟牛顿法BFGS公式Options(6)=1,拟牛顿法DFP公式Options(6)=2,梯度法7步长一维搜索0fmin()函数为无约束优化的步长一维搜索提供2种算法:Options(7)=0,二次和三次混合插值法Options(7)=1,三次多项式插值法123控制参数options序号功能默认值及其含义说明8函数值输出Options(8)输出最终迭代函数值9梯度检验0,不检验Options(9)比较梯度10函数计算次数Options(10)输出函数计算次数11梯度计算次数Options(11)输出函数梯度计算次数12约束计算次数Options(12)输出约束计算次数13等式约束个数0,等式约束为0Options(13)输入等式约束个数14最大迭代次数100n(n为变量维数)Op
本文标题:第9章基于MATLAB优化工具箱的优化计算
链接地址:https://www.777doc.com/doc-1545450 .html