您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 基于MATLAB优化工具箱的优化计算
第9章基于MATLAB优化工具箱的优化计算9.1MATLAB优化工具箱一、常用的优化功能函数求解线性规划问题的主要函数是linprog。求解二次规划问题的主要函数是quadprog。求解无约束非线性规划问题的主要函数是fminbnd、fminunc和fminsearch。求解约束非线性规划问题的主要函数是fgoalattain和fminimax。1、线性规划数学模型数学模型形式:minfTXs.t.AX≤b(线性不等式约束条件)AeqX=beq(线性等式约束条件)lb≤X≤ub(边界约束条件)常用的简化模型:minfTXs.t.AX≤b(线性不等式约束条件)数学模型形式:s.t.AX≤b(线性不等式约束条件)AeqX=beq(线性等式约束条件)lb≤X≤ub(边界约束条件)XCHXX21)X(fminTT2、二次规划问题数学模型二次函数目标函数1.数学模型形式:minf(X)s.t.AX≤b(线性不等式约束)AeqX=beq(线性等式约束)C(X)≤0(非线性不等式约束条件)Ceq(X)=0(非线性等式约束)Lb≤X≤Ub(边界约束条件)约束条件3、无约束非线性规划数学模型形式:minf(X)例1:求解二维无约束优化问题f(x)=(x14+3x12+x22-2x1-2x2-2x12x2+6)的极小值。例2:求解二维无约束优化问题min12122264516()tansinxxfxxxx例13求在0x8中的最小值与最大值xefxsin2数学模型形式:minf(X)(函数为f(x)非线性函数)s.t.AX≤b(线性不等式约束)AeqX=beq(线性等式约束)C(X)≤0(非线性不等式约束条件)Ceq(X)=0(非线性等式约束)Lb≤X≤Ub(边界约束条件)约束条件4.约束线性规划3.1matlab优化函数二、一般步骤建立目标函数文件针对具体工程问题建立优化设计的数学模型不等式约束条件表示成g(X)≥0的形式建立调用优化工具函数的命令文件文件内容:必须的输入参数、描述标函数表达式等存储:以自定义的目标函数文件名存储在文件夹中建立约束函数文件文件内容:必须的输入参数、约束函数表达式等存储:以自定义的约束函数文件名存储在文件夹中将优化设计的命令文件复制到MATLAB命令窗口中进行运算求解。分析优化设计的数学模型,选择适用的优化工具函数文件内容:初始点,设计变量的边界约束条件,运算结果输出等内容存储:以自定义的命令文件名存储于文件夹中。小例:求解二维无约束优化问题min12122264516()tansinxxfxxxx解:首先编制目标函数functionf=li3mubiao_fminunc(x)a=64516;hd=pi/180;f=a/x(1)-x(1)/tan(x(2)*hd)+2*x(1)/sin(x(2)*hd);注意:保存时,要使保存的文件名与函数名一致再编制主函数x0=[25;45];[x,fminunc]=fminunc(@li3mubiao_fminunc,x0)保存后运行得到优化结果:x=192.995860.0005fminunc=668.56569.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)---Linprog函数使用的拓展用MATLAB优化工具箱解线性规划命令:x=linprog(c,A,b)2、模型:beqAeqXbAX..mintscXz命令:x=linprog(c,A,b,Aeq,beq)注意:若没有不等式:bAX存在,则令A=[],b=[].若没有等式约束,则令Aeq=[],beq=[].3、模型:VUBXVLBbeqAeqXbAX..mintscXz命令:[1]x=linprog(c,A,b,Aeq,beq,VLB,VUB)[2]x=linprog(c,A,b,Aeq,beq,VLB,VUB,X0)注意:[1]若没有等式约束,则令Aeq=[],beq=[].[2]其中X0表示初始点minz=cXbAXts..1、模型:例2max6543216.064.072.032.028.04.0xxxxxxz85003.003.003.001.001.001.0..654321xxxxxxts70005.002.041xx10005.002.052xx90008.003.063xx6,2,10jxj解编写M文件小xxgh1.m如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.08];b=[850;700;100;900];Aeq=[];beq=[];vlb=[0;0;0;0;0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)例3(任务分配问题)某车间有甲、乙两台机床,可用于加工三种工件。假定这两台车床的可用台时数分别为800和900,三种工件的数量分别为400、600和500,且已知用三种不同车床加工单位数量不同工件所需的台时数和加工费用如下表。问怎样分配车床的加工任务,才能既满足加工工件的要求,又使加工费用最低?解设在甲车床上加工工件1、2、3的数量分别为x1、x2、x3,在乙车床上加工工件1、2、3的数量分别为x4、x5、x6。可建立以下线性规划模型:6543218121110913minxxxxxxz6,,2,1,09003.12.15.08001.14.0500600400x..654321635241ixxxxxxxxxxxxtsi编写M文件xxgh3.m如下:f=[1391011128];A=[0.41.11000;0000.51.21.3];b=[800;900];Aeq=[100100;010010;001001];beq=[400600500];vlb=zeros(6,1);vub=[];[x,fval]=linprog(f,A,b,Aeq,beq,vlb,vub)单位工件所需加工台时数单位工件的加工费用车床类型工件1工件2工件3工件1工件2工件3可用台时数甲0.41.11.013910800乙0.51.21.311128900求解线性规划线性规划是一种优化方法,Matlab优化工具箱中有现成函数linprog对如下式描述的LP问题求解:解:编写M文件小xxgh1.m如下:c=[-0.4-0.28-0.32-0.72-0.64-0.6];A=[0.010.010.010.030.030.03;0.02000.0500;00.02000.050;000.03000.08];b=[850;700;100;900];Aeq=[];beq=[];vlb=[0;0;0;0;0;0];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)解:编写M文件xxgh2.m如下:c=[634];A=[010];b=[50];Aeq=[111];beq=[120];vlb=[30,0,20];vub=[];[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)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)例2minf(x1,x2)=-2x1-6x2+x1^2-2x1*x2+2*x2^2s.t.x1+x2≤2-x1+2x2≤2x1≥0,x2≥01、写成标准形式:21212162422-2),(21minxxxxxxzT212100222111xxxxs.t2、输入命令:H=[2-2;-24];c=[-2;-6];A=[11;-12];b=[2;2];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,z]=quadprog(H,c,A,b,Aeq,beq,VLB,VUB)3、运算结果为:x=0.66671.3333z=-8.2222例1:求解:二次规划问题
本文标题:基于MATLAB优化工具箱的优化计算
链接地址:https://www.777doc.com/doc-266446 .html