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