1、MATLAB教程(2),一 、MATLAB优化简介,二、线性规划问题,六、二次规划问题,三、无约束优化问题,四、约束优化问题,五、多目标优化问题,一)常用的优化功能函数求解线性规划问题的主要函数是linprog。求解无约束非线性规划问题的主要函数是fminbnd、fminunc和fminsearch。求解约束非线性规划问题的主要函数是fgoalattain和fminimax。求解二次规划问题的主要函数是quadprog。,一 、MATLAB 优化简介,二)一般步骤,建立目标函数文件,针对具体工程问题建立优化设计的数学模型,不等式约束条件表示成g(X) 0的形式,建立调用优化工具函数的命令文件,
2、文件内容:必须的输入参数、描述标函数表达式等存储:以自定义的目标函数文件名存储在文件夹中,建立约束函数文件,文件内容:必须的输入参数、约束函数表达式等存储:以自定义的约束函数文件名存储在文件夹中,将优化设计的命令文件复制到MATLAB命令窗口中进行运算求解。,分析优化设计数学模型,选择适用的优化工具函数文件内容:初始点,设计变量的边界约束条件, 运算结果输出等内容存储:以自定义的命令文件名存储于文件夹中。,二、线性规划,1.数学模型形式: min f=C TX s.t. AXb (线性不等式约束条件) AeqX=beq (线性等式约束条件) lb X ub (边界约束条件),约束条件,决策变量
3、,目标函数,非负数,线性,2.MATLAB中函数调用格式 xopt, fopt=linprog( C, A, b, Aeq, beq, lb, ub, x0, options),最优解,最优值,目标函数各维变量系数向量,初始点,可选项,二、例题,生产规划问题:某厂利用a,b,c三种原料生产A,B,C三种产品,已知生产每种产品在消耗原料方面的各项指标和单位产品的利润,以及可利用的数量,试制定适当的生产规划使得该工厂的总利润最大。,x1,x2,x3,2x1,4x2,3x3,3x1,4x2,2x3,2x1,x1,x2,3x2,2x3,2x3,+,+,+,+,+,+,+,+,3.确定约束条件:,X=x
4、1,x2,x3T,解: 1.确定决策变量:,Max 2x1+4x2+3x3,3x1+4x2+2x3600,2x1+x2+2x3400,x1+3x2+2x3800,设生产A、B、C三种产品的数量分别是x1,x2,x3,决策变量:,根据三种单位产品的利润情况,按照实现总的利润最大化,建立关于决策变量的函数:,2.建立目标函数:,根据三种资料数量限制,建立三个线性不等式约束条件,x1,x2,x30,4.编制线性规划计算的M文件C=-2, -4, -3A=3,4,2;2,1,2;1,3,2;b=600;400;800;Aeq=;beq=;lb=zeros(3,1);xopt,fopt=linprog(
5、C,A,b,Aeq,beq,lb),5.M文件运行结果:Optimization terminated successfully.xopt =0.0000 66.6667 166.6667fopt=-766.6667,xopt, fopt=linprog( C, A, b, Aeq, beq, lb, ub, x0, options),三、无约束优化问题,fminbnd,要求目标函数为连续函数,只求解单变量问题,fminunc,可求解单变量和多变量问题,适用于简单优化问题,可求解复杂优化问题,fminsearch,1.使用格式: xopt,fopt=fminbnd(fun,x1,x2,opti
6、ons),3.1函数fminbnd,设置优化选项参数,迭代搜索区间,目标函数,返回目标函数的最优值,返回目标函数的最优解,2.例题: 求解一维无约束优化问题f(x)=(x3+cosx+xlogx/ex) 在区间0,1中的极小值。解:(1)编制求解优化问题的M文件。 %求解一维优化问题 fun=inline(x3+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(x3+cosx+xlogx)/ex) grid on
7、,运行结果:xopt = 0.5223fopt = 0.3974,1.使用格式: xopt,fopt=fminsearch(fun,x0,options),3.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,
8、fopt=fminsearch(fun,x0) (2)另一种方法: 将目标函数写成函数文件的形式: %目标函数文件search.m function f=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.m x0=0,0; %初始点 xopt,fopt=fminsearch(search,x0),运行结果:xopt = 1.0000 2.0000fopt = 4.0000,1.使用格式: x,fval,exitflag,output,grad,hessian=fminunc(
9、fun,x0,options,P1,P2),3.3函数fminunc,设置优化选项参数,初始点,调用目标函数的函数文件名,目标函数在最优解的海赛矩阵,返回目标函数在最优解的梯度,优化算法信息的一个数据结构,返回算法的终止标志,返回目标函数的最优值,返回目标函数的最优解,附加参数,管道截面积:,2.例题: 已知梯形截面管道的参数是:底边长度c,高度h,面积A=64516mm2,斜边与底边夹角为。管道内液体的流速与管道截面的周长s的倒数成比例关系。试按照使液体流速最大确定该管道的参数。解:(1)建立优化设计数学模型 管道截面周长,min,目标函数的文件(sc.m):function f=sc(x)
10、 %定义目标函数调用格式a=64516;hd=pi/180;f=a/x(1)-x(1)/tan(x(2)*hd)+2*x(1)/sin(x(2)*hd); %定义目标函数,3.3函数fminunc,2.例题:解:(1)建立优化设计数学模型 (2)编写求解无约束非线性优化问题的M文件,x,fval,exitflag,output,grad,hessian=fminbnd(fun,x0,options,P1,P2),求最优化解时的命令程序:x0=25,45; %初始点x,Fmin=fminunc(sc,x0); %求优语句fprintf(1,截面高度h x(1)=%3.4fmmn,x(1)fpri
11、ntf(1,斜边夹角 x(2)=%3.4f度n,x(2)fprintf(1,截面周长s f=%3.4fmmn,Fmin),计算结果x(1)=192.9958mmx(2)=60.0005度f=668.5656mm,xx1=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
12、)xlabel(高度 h/mm)ylabel(倾斜角theta/(。),3.3函数fminunc,2.例题:解:(1)建立优化设计数学模型 (2)编写求解无约束非线性优化问题的M文件 (3)编写绘制一维函数图形的M文件,title(目标函数等值线)subplot(1,2,2);meshc(x1,x2,f);axis(100,300,30,120,600,1200)title(目标函数网格曲面图),1. 数学模型形式: min f (X) s.t. AXb (线性不等式约束) AeqX=beq (线性等式约束) C(X)0 (非线性不等式约束条件) Ceq(X)=0 (非线性等式约束) Lb X
13、 Ub (边界约束条件),约束条件,四、约束优化问题,2.使用格式: x,fval,exitflag,output, grad,hessian= fmincon(fun,x0,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),设置优化选项参数,初始点,调用目标函数的函数文件名,目标函数在最优解的海赛矩阵,返回目标函数在最优解的梯度,优化算法信息的一个数据结构,返回算法的终止标志,返回目标函数的最优值,返回目标函数的最优解,附加参数,非线性约束条件的函数名,设计变量的下界和上界,线性等式约束的常数向量,线性等式约束的系数矩阵,线性不等式约束的常数向量,线性不等式约束的系数
14、矩阵,无定义时以空矩阵符号“ ”代替,控制参数options,控制参数options,例 1,某二级斜齿圆柱齿轮减速器,高速级输入功率P1=6.2kW,转速n1=1450r/min;总传动比i=31.5,齿轮宽度系数a=0.4,齿轮材料和热处理:大齿轮45号钢正火187207HB,小齿轮45号钢调质228255HB,工作寿命10年以上。要求按照总中心距a最小来确定齿轮传动方案。 解:(1)建立优化设计的数学模型 设计变量: 将涉及总中心距a齿轮传动方案的6个独立参数作为设计变量 X=mn1,mn2,z1,z3,i1,T=x1,x2,x3,x4,x5,x6T 目标函数: 减速器总中心距a最小为目
15、标函数,约束条件:含性能约束和边界约束,高速级齿轮接触强度条件,低速级齿轮接触强度条件,高速级大齿轮弯曲强度条件,低速级大齿轮弯曲强度条件,大齿轮与轴不干涉,低速级齿轮副模数的下限和上限,高速级小齿轮齿数的下限和上限,高速级小齿轮齿数的下限和上限,低速级小齿轮齿数的下限和上限,高速级传动比的下限和上限,齿轮副螺旋角的下限和上限,性 能 约 束,边 界 约 束,二、例题,(2)编制优化设计的M文件,x,fval,exitflag,output, grad,hessian= fmincon(fun,x0,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),%两级斜齿轮减速器总
16、中心距目标函数function f=jsqyh_f(x);hd=pi/180;a1=x(1)*x(3)*(1+x(5);a2=x(2)*x(4)*(1+31.5/x(5);cb=2*cos(x(6)*hd);f=(a1+a2)/cb;,%两级斜齿轮减速器优化设计的非线性不等式约束函数functiong,ceq=jsqyh_g(x);hd=pi/180;g(1)=cos(x(6)*hd)3-3.079e-6*x(1)3*x(3)3*x(5);g(2)=x(5)2*cos(x(6)*hd)3-1.701e-4*x(2)3*x(4)3;g(3)=cos(x(6)*hd)2-9.939e-5*(1+x
17、(5)*x(1)3*x(3)2;g(4)=x(5)2.*cos(x(6)*hd)2-1.076e-4*(31.5+x(5)*x(2)3*x(4)2;g(5)=x(5)*(2*(x(1)+50)*cos(x(6)*hd)+x(1)*x(2)*x(3)-x(2)*x(4)*(31.5+x(5);ceq=;, ,文件名为:Jsqyh_g.m,文件名为:Jsqyh_f.m,(2)编制优化设计的M文件,x,fval,exitflag,output, grad,hessian= fmincon(fun,x0,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),x0=2;4;18;20
18、;6.4;10;%设计变量的初始值lb=2;3.5;14;16;5.8;8;%设计变量的下限ub=5;6;22;22;7;15;%设计变量的上限x,fn=fmincon(jsqyh_f,x0,lb,ub,jsqyh_g);disp *两级斜齿轮传动中心距优化设计最优解*fprintf(1, 高速级齿轮副模数 Mn1=%3.4fmmn,x(1)fprintf(1, 低速级齿轮副模数 Mn2=%3.4fmmn,x(2)fprintf(1, 高速级小齿轮齿数 z1=%3.4fmmn,x(3)fprintf(1, 低速级小齿轮齿数 z2=%3.4fmmn,x(4)fprintf(1, 高速级齿轮副传动
19、比 i1=%3.4fmmn,x(5)fprintf(1, 齿轮副螺旋角 beta=%3.4fmmn,x(6)fprintf(1, 减速器总中心距 a12=%3.4fmmn,fn) g=jsqyh_g(x); disp =最优点的性能约束函数值=fprintf(1, 高速级齿轮副接触疲劳强度约束函数值 g1=%3.4fmmn,g(1)fprintf(1, 低速级齿轮副接触疲劳强度约束函数值 g2=%3.4fmmn,g(2)fprintf(1, 高速级大齿轮齿根弯曲强度约束函数值 g3=%3.4fmmn,g(3)fprintf(1, 低速级大齿轮齿根弯曲强度约束函数值 g4=%3.4fmmn,g(
20、4)fprintf(1, 大齿轮顶圆与轴不干涉几何约束函数值 g5=%3.4fmmn,g(5), , , , ,文件名为eg9_6.m,(3) M文件运行结果,*两级斜齿轮传动中心距优化设计最优解* 高速级齿轮副模数 Mn1=2.0461mm 低速级齿轮副模数 Mn2=3.6059mm 高速级小齿轮齿数 z1=18.5156mm 低速级小齿轮齿数 z2=16.0000mm 高速级齿轮副传动比 i1=5.8000mm 齿轮副螺旋角 beta=8.0000 减速器总中心距 a12=317.4186mm =最优点的性能约束函数值= 高速级齿轮副接触疲劳强度约束函数值 g1=0.0000mm 低速级齿
21、轮副接触疲劳强度约束函数值 g2=0.0000mm 高速级大齿轮齿根弯曲强度约束函数值 g3=-1.0042mm 低速级大齿轮齿根弯曲强度约束函数值 g4=-15.1854mm 大齿轮顶圆与轴不干涉几何约束函数值 g5=-761.8043mm,2mm,4mm,19,16,5.8,8,338.292mm,340mm,9.838,(4) 优化结果处理,fgoalattain,需确定各分目标的加权系数,需知各分目标的单个最优值,目标函数的最大值逐次减小,fminimax,五、多目标优化问题,1 函数fgoalattain,min v s.t. fi(X)-wiv goali i=1,2,t AXb
22、(线性不等式约束) AeqX=beq (线性等式约束) C(X)0 (非线性不等式约束条件) Ceq(X)=0 (非线性等式约束) Lb X Ub (边界约束条件),一、多目标优化问题数学模型,标量变量,各分目标函数,分目标函数的权重,各分目标函数的目标值,二、优化函数使用格式 x,fval,exitflag,output, grad,hessian= fgoalattain(fun,x0,goal,w,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),设置优化选项参数,各分目标权重,各分目标期望值,目标函数在最优解的海赛矩阵,返回目标函数在最优解的梯度,优化算法信息的
23、一个数据结构,返回算法的终止标志,返回目标函数的最优值,返回目标函数的最优解,附加参数,非线性约束条件的函数名,设计变量的下界和上界,线性等式约束的常数向量,线性等式约束的系数矩阵,线性不等式约束的常数向量,线性不等式约束的系数矩阵,无定义时以空矩阵符号“ ”代替,初始点,目标函数文件名,三、例题,设计带式输送机传动装置上的普通V带传动。已知电机额定功率P=4kW,转速n1=1440r/min,传动比i=3,采用A型V带,每天工作不超过10小时。要求传动结构紧凑(带的根数尽量少,带轮直径和中心距尽量小)。 解:(1)建立优化设计的数学模型 设计变量: V带传动的独立设计变量是小带轮直径dd1和
24、带的基准长度Ld X=dd1,LdT=x1,x2T 目标函数:小带轮直径:中心距:带的根数:,1.1,拟合直线,P0=(0.02424dd1-1.112879)(kW),0.17kW,KL=0.20639Ld0.211806,拟合幂函数方程,拟合双曲线方程,minf1(X)=dd1=x1,约束条件:含性能约束和边界约束,小带轮直径=推荐的A型带轮最小直径,最大带速120,带传动的中心距要求,小带轮基准直径的下限和上限,带基准长度的下限和上限,性 能 约 束,边 界 约 束,三、例题,解:(1)建立优化设计的数学模型 设计变量: X=dd1,LdT=x1,x2T 目标函数:小带轮直径:中心距:带
25、的根数:,minf1(X)=dd1=x1,80100mm,320400mm,14,按容限值确定权重,以使目标函数值在数量级上统一,约束条件:(2)确定分目标和它们的权重,(3)编制优化设计的M文件,x,fval,exitflag,output, grad,hessian= fgoalattain(fun,x0,goal,w,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),%V带传动多目标优化设计的目标函数文件function f=VDCD_3mb_MB(x)P=4;i=3;KA=1.1; %已知条件:功率,传动比,工况系数f(1)=x(1); %f1-小带轮基准直径:
26、目标函数1a1=x(2)/4-pi*x(1)*(i+1)/8;a2=x(1)2*(i-1)2/8;a=a1+sqrt(a12-a2);f(2)=a; %f2,中心距:目标函数2P0=0.02424*x(1)-1.1128789; %单根带额定功率DP0=0.17; %功率增量alpha=180-180*x(1)*(i-1)/pi/a; %小带轮包角Kalp=alpha/(0.549636*alpha+80.396114); %包角系数KL=0.20639*x(2)0.211806; %长度系数f(3)=KA*P/(P0+DP0)/Kalp/KL; %f3-V带根数:目标函数3,(3)编制优化设
27、计的M文件 %V带传动多目标优化设计的约束函数文件 functiong,ceq=VDCD_3mb_YS(x) i=3;n1=1440; %已知条件:传动比,转速 g(1)=100-x(1); %小带轮直径=Ddmin g(2)=pi*x(1)*n1/6e4-25 %带速范围V=alpmin g(4)=0.7*x(1)*(i+1)-a; %中心距范围a=amin ceq=;,x,fval,exitflag,output, grad,hessian= fgoalattain(fun,x0,goal,w,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),(3)编制优化设计的M
28、文件,%V带传动多目标优化设计的调用命令P=4;i=3;n1=1440;KA=1.1; %已知条件:功率,传动比,转速,工况系数x0=100;1250; %初始点(小带轮直径,V带基准长度)goal=75,280,2; %分目标w=10(-2),40(-2),1.5(-2); %分目标加权系数lb=80,630; %最小带轮直径和A型V带的基准长度ub=100;4000; %最大带轮直径和A型V带基准长度xopt,fopt=fgoalattain(VDCD_3mb_MB,x0,goal,w,lb,ub,VDCD_3mb_YS),x,fval,exitflag,output, grad,hess
29、ian= fgoalattain(fun,x0,goal,w,A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2), , , , ,Optimization terminated successfully: Search direction less than 2*options.xopt = 1.0e+003 * 0.1000 1.2269fopt = 100.0000 281.5296 3.5957,(4) M文件运算结果,(5) 优化结果处理,dd1,100mm,1227mm,Ld,小带轮基准直径,带传动中心距,带的根数,1250mm,圆整,4,圆整,%优化结果数据处
30、理后部分参数计算Dd1=100;Dd2=Dd1*i;z=4;Ld=1250;v=pi*Dd1*n1/6e4;a1=Ld/4-pi*Dd1*(i+1)/8;a2=Dd12*(i-1)2/8;a=a1+sqrt(a12-a2);alpha=180-180*Dd1*(i-1)/pi/a;disp disp *计算结果*fprintf(1, 小带轮基准直径 Dd1=%3.0fmmn,Dd1);fprintf(1, 大带轮基准直径 Dd2=%3.0fmmn,Dd2);fprintf(1, V带基准长度 Ld=%3.0fmmn,Ld);fprintf(1, 传动中心距 a=%3.2fmmn,a);fpri
31、ntf(1, 小带轮包角 alpha=%3.2f度n,alpha);fprintf(1, V带根数 z=%3.0fmmn,z);,(4) M文件运算结果,(5) 优化结果处理,*计算结果* 小带轮基准直径 Dd1=100mm 大带轮基准直径 Dd2=300mm V带基准长度 Ld=1250mm 传动中心距 a=293.82mm 小带轮包角 alpha=141.00度 V带根数 z= 4mm,(6) 最终方案,2 函数fminimax,min max f1,f2,f3 s.t. AXb (线性不等式约束) AeqX=beq (线性等式约束) C(X)0 (非线性不等式约束条件) Ceq(X)=0
32、 (非线性等式约束) Lb X Ub (边界约束条件),一、多目标优化问题数学模型,各分目标函数,二、优化函数使用格式 x,fval,exitflag,output, grad,hessian= fminimax(fun,x0, A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),设置优化选项参数,目标函数在最优解的海色矩阵,返回目标函数在最优解的梯度,优化算法信息的一个数据结构,返回算法的终止标志,返回目标函数的最优值,返回目标函数的最优解,附加参数,非线性约束条件的函数名,设计变量的下界和上界,线性等式约束的常数向量,线性等式约束的系数矩阵,线性不等式约束的常数向量,
33、线性不等式约束的系数矩阵,无定义时以空矩阵符号“ ”代替,2 函数fminimax,初始点,目标函数文件名,三、例题,已知直径为1单位长度的圆柱梁,要求将它制成矩形截面梁,满足重量最轻和强度最大的条件,试确定矩形截面尺寸。 解:(1)建立优化设计的数学模型 设计变量: 矩形截面的宽和高 X=x1,x2T 目标函数:重量截面积:弯曲强度 矩形截面矩量:,minf1(X)=x1x2,r =1,x1,x2,约束条件:含性能约束和边界约束,变量x1的上下限,变量x2的上下限,等式约束,性 能 约 束,边 界 约 束,(2)编制优化设计的M文件,x,fval,exitflag,output, grad,
34、hessian= fminimax(fun,x0, A,b,Aeq,beq,Lb,Ub,Nlc,options,P1,P2),%矩形截面梁两目标优化设计的目标函数文件function f=JXL_2mb_MB(x)f(1)=x(1)*x(2); %f1:梁的截面积f(2)=-x(1)*x(2)2/6; %f2:梁的截面矩量,%矩形截面梁两目标优化设计的约束函数文件function c,ceq=JXL_2mb_YS(x)ceq=x(1)2+x(2)2-1; %非线性等式约束c=; %所有非线性不等式约束,%矩形截面梁两目标优化设计x0=1;1;lb=0;0;ub=1;1;xopt,fopt=fm
35、inimax(JXL_2mb_MB,x0,lb,ub,JXL_2mb_YS),(3)运行结果,Optimization terminated successfully:xopt = 0.7071 0.7071fopt = 0.5000 -0.0589, , , , ,1.研究意义:(1)最简单的非线性规划问题;(2)求解方法比较成熟。2.数学模型形式: s.t. AXb (线性不等式约束条件) AeqX=beq (线性等式约束条件) lb X ub (边界约束条件),约束条件,决策变量,目标函数,二次函数,3.MATLAB中函数调用格式 xopt, fopt=quadprog(H,C, A,
36、b, Aeq, beq, lb, ub, x0, options),最优解,最优值,目标函数的海赛矩阵,初始点,可选项,目标函数的一次项系数向量,六、二次规划问题,结果xopt=2.571,1.143,0.000fopt=-16.4898,二、例题,求解约束优化问题,s.t.,解:(1)将目标函数写成二次函数的形式,,其中:,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),本章结束,Thank You!,