MATLAB课件第七章最优化计算方法_第1页
MATLAB课件第七章最优化计算方法_第2页
MATLAB课件第七章最优化计算方法_第3页
MATLAB课件第七章最优化计算方法_第4页
MATLAB课件第七章最优化计算方法_第5页
已阅读5页,还剩91页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章最优化计算方法第七章最优化计算方法1一、实验目的:第一节线性方程组的应用1、了解线性规划问题及可行解、最优解的概念

2、掌握Matlab软件关于求解线性规划的语句和方法。二、实验原理和方法:在生活实践中,很多重要的实际问题都是线性的(至少能够用线性函数很好的近似表示),所以我们一般把这些问题化为线性的目标函数和约束条件进行分析,通常将目标函数和约束都是线性表达式的规划问题称为线性规划。一、实验目的:第一节线性方程组的应用1、了解线性规划问题2它的一般形式是:

也可以用矩阵形式来表示:它的一般形式是:也可以用矩阵形式来表示:3线性规划的可行解是满足约束条件的解;线性规划的最优解是使目标函数达到最优的可行解。线性规划关于解的情况可以是:1、无可行解,即不存在满足约束条件的解;2、有唯一最优解,即在可行解中有唯一的最有解;4、有可行解,但由于目标函数值无界而无最优解。3、有无穷最优解,即在可行解中有无穷个解都可使目标函数达到最优;线性规划的可行解是满足约束条件的解;线性规划的最优解是使目标4一般求解线性规划的常用方法是单纯形法和改进的单纯形法,这类方法的基本思路是先求得一个可行解,检验是否为最优解;若不是,可用迭代的方法找到另一个更优的可行解,经过有限次迭代后,可以找到可行解中的最优解或者判定无最优解。一般求解线性规划的常用方法是单纯形法和改进5三、内容与步骤:在Matlab优化工具箱中,linprog函数是使用单纯形法求解下述线性规划问题的函数。三、内容与步骤:在Matlab优化工具箱中,linprog函6它的命令格式为:其中:A为约束条件矩阵,b,c分别为目标函数的系数向量和约束条件中最右边的数值向量;也可设置解向量的上界vlb和下界vub,即解向量必须满足vlb<=x<=vub;还可预先设置初始解向量x0。如没有不等式,而只有等式时,A=[],b=[];输出的结果:x表示最优解向量;fval表示最优值。它的命令格式为:其中:A为约束条件矩阵,b,c分别为目标函数7【例1】求解线性规划问题:解:考虑到linprog函数只解决形如的线性规划。所以先要将线性规划变为如下形式:【例1】求解线性规划问题:解:考虑到linprog函数只8然后建立M文件如下:c=[-3;1;1];A=[1-21;4-1-2];b=[11;-3];aeq=[20-1];beq=-1;vlb=[0;0;0];[x,fval]=linprog(c,A,b,aeq,beq,vlb)

Matlab程序:ch701.m然后建立M文件如下:c=[-3;1;1];A=[1-219以ch701作为文件名保存此M文件后,在命令窗口输入ch701后即可得到结果:x=4.00001.00009.0000同时返回fval=-2对应到原来的线性规划中即知目标函数的最大值为2,此时x1=4,x2=1,x3=9。以ch701作为文件名保存此M文件后,在命令窗口x=4.10第二节无约束规划计算方法一、实验目的1、了解无约束规划问题的求解原理与方法

2、会用Matlab软件求解无约束规划问题。

二、实验原理和方法无约束规划问题的解法一般按目标函数的形式分为两大类:一类是一元函数的一维搜索法,如黄金分割法、插值法等;另一类是求解多元函数的下降迭代法。第二节无约束规划计算方法一、实验目的1、了解无约束规划问题11迭代的基本思想和步骤大致可分为以下四步:

迭代的基本思想和步骤大致可分为以下四步:

12三、实验内容与步骤在Matlab软件中,求解无约束规划的常用命令是:

x=fminunc(‘fun’,x0)其中,fun函数应预先定义到M文件中,并设置初始解向量为x0。三、实验内容与步骤在Matlab软件中,求解无约束规划的常用13【例2】求解取解:首先建立函数文件fun702.m【例2】求解取解:首先建立函数文件fun702.m14以fun702为文件名保存此函数文件。

在命令窗口输入:

x0=[-2;4];x=fminunc('fun702',x0)结果显示:f=-1.0000x=1.00001.0000即极小值为-1,是x1=1,x2=1时取得。Matlab程序:ch702.m以fun702为文件名保存此函数文件。在命令窗口输入:15【例3】解非线性方程组解:解此非线性方程组等价于求解无约束非线性规划问题:然后建立函数文件fun703.m【例3】解非线性方程组解:解此非线性方程组等价于求解无约束16在命令窗口输入:x0=[0;0];x=fminunc(‘fun703’,x0)结果显示:f=5.2979e-011x=1.06730.1392则非线性方程组的解为x1=1.0673,x2=0.1392。

Matlab程序:ch703.m在命令窗口输入:x0=[0;0];结果显示:f=5.217第三节约束非线性规划计算方法

一、实验目的1、了解约束非线性规划问题的求解原理与方法;

2、会用Matlab软件求解约束非线性规划问题。

二、实验原理和方法对于约束非线性规划,随着目标函数和约束条件的不同,解法也不同,一般来说,有两类方法:(1)、将约束问题化为无约束问题的求解方法;(2)、用线性规划来逼近非线性规划;第三节约束非线性规划计算方法一、实验目的1、了解约束非18三、实验内容与步骤

约束非线性规划的一般形式为:其中,f(x)为多元实值函数;g(x)为向量函数,并且f(x),g(x)中至少有一个函数是非线性函数的(否则成为线性规划问题)。三、实验内容与步骤约束非线性规划的一般形式为:其中,f(19x=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)在Matlab优化工具箱中,fmincon函数是用SQP算法来解决一般的约束非线性规划的函数,它的命令格式为:x=fmincon(‘fun’,x0,A,b)在Matlab20【例4】求解约束非线性规划:

(初值为[1;1])解:首先建立一个m文件fun7041.mfunctiony=fun7041(x)y=-exp(x(1))*x(2)^2*(3-exp(x(1))-x(2)^2);存储为fun7041.m首先将问题转化为matlab要求的格式;即求出fun,A,b,Aeq,Beq,X0,Lb,Ub【例4】求解约束非线性规划:(初值为[1;1])解:首先21然后建立一个m文件fun7042.mfunction[c,cep]=fun7042(x)c=[];%c为非线性不等式,且为c<=0cep=exp(x(1))+x(2)^2-3;%cep为非线性等式然后存储为fun7042.m最后在命令窗口中输入:A=[];b=[];Aeq=[];Beq=[];Lb=[];Ub=[];[x,f]=fmincon(‘fun7041’,[1;1],[],[],[],[],[],[],’fun7042’)-f因题目中有非线性约束条件,所以建立非线性约束m-文件。Matlab程序:ch704.m然后建立一个m文件fun7042.m最后在命令窗口中输入22结果为:x=0.88520.7592f=6.2043e-016ans=-6.2043e-016最后的结果为:-6.2043e-016结果为:x=0.8852最后的结果为:-623【例5】求解约束非线性规划:

解:首先建立一个m文件fun705.mfunctiony=fun705(x)y=(x(1)-1)^2+(x(2)-2)^2+(x(3)-3)^2+(x(4)-4)^2;存储为fun705.m文件.【例5】求解约束非线性规划:解:首先建立一个m文件fu24x0=[1;1;1;1];A=[1111;3321];B=[5;10];Aeq=[];Beq=[];Lb=[0;0;0;0];[x,g]=fmincon(‘fun705’,x0,A,B,Aeq,Beq,Lb)答案为:x=0.00000.66671.66652.6668g=6.3333Matlab程序:ch705.mx0=[1;1;1;1];A=[1111;33225非现性规划的基本概念定义

如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.

一般形式:

(1)其中,是定义在En上的实值函数,简记:

其它情况:求目标函数的最大值或约束条件为小于等于零的情况,都可通过取其相反数化为上述一般形式.非现性规划的基本概念定义如果目标函数26用MATLAB软件求解,其输入格式如下:

1. x=quadprog(H,C,A,b);2. x=quadprog(H,C,A,b,Aeq,beq);3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);4. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0);5. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0,options);6. [x,fval]=quaprog(...);7. [x,fval,exitflag]=quaprog(...);8. [x,fval,exitflag,output]=quaprog(...);1、二次规划用MATLAB软件求解,其输入格式如下:1、二次规划27例1

minf(x1,x2)=-2x1-6x2+x12-2x1x2+2x22s.t.x1+x2≤2-x1+2x2≤2x1≥0,x2≥01、写成标准形式:2、输入命令:

H=[1-1;-12];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.2222s.t.例1minf(x1,x2)=-2x1-6x2+x128

1.首先建立M文件fun.m,定义目标函数F(X):functionf=fun(X);f=F(X);2、一般非线性规划

其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步:1.首先建立M文件fun.m,定义目标函数F(X):2、293.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:

(1)x=fmincon(‘fun’,X0,A,b)

(2)x=fmincon(‘fun’,X0,A,b,Aeq,beq)

(3)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB)

(4)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)(5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)

(6)[x,fval]=fmincon(...)

(7)[x,fval,exitflag]=fmincon(...)(8)[x,fval,exitflag,output]=fmincon(...)输出极值点M文件迭代的初值参数说明变量上下限3.建立主程序.非线性规划求解的函数是fmincon,命令30注意:[1]fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为’on’),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。[2]fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。[3]fmincon函数可能会给出局部最优解,这与初值X0的选取有关。注意:311、写成标准形式:

s.t.

2x1+3x26s.tx1+4x25x1,x20例21、写成标准形式:2x1+3x2322、先建立M-文件fun3.m:

functionf=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^23、再建立主程序youh2.m:x0=[1;1];A=[23;14];b=[6;5];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB)4、运算结果为:x=0.76471.0588fval=-2.02942、先建立M-文件fun3.m:3、再建立主程序youh2331.先建立M文件fun4.m,定义目标函数:

functionf=fun4(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);x1+x2=0s.t.1.5+x1x2-x1-x20-x1x2–10

0例32.再建立M文件mycon.m定义非线性约束:function[g,ceq]=mycon(x)g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];1.先建立M文件fun4.m,定义目标函数:343.主程序youh3.m为:x0=[-1;1];A=[];b=[];Aeq=[11];beq=[0];vlb=[];vub=[];[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,vub,'mycon')3.运算结果为:

x=-1.22501.2250fval=1.89513.主程序youh3.m为:3.运算结果为:35例4

1.先建立M-文件fun.m定义目标函数:functionf=fun(x);f=-2*x(1)-x(2);2.再建立M文件mycon2.m定义非线性约束:function[g,ceq]=mycon2(x)g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7];例41.先建立M-文件363.主程序fxx.m为:x0=[3;2.5];VLB=[00];VUB=[510];[x,fval,exitflag,output]=fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2')3.主程序fxx.m为:374.运算结果为:x=4.00003.0000fval=-11.0000exitflag=1output=iterations:4funcCount:17stepsize:1algorithm:[1x44char]firstorderopt:[]cgiterations:[]4.运算结果为:38应用实例:供应与选址

某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米)及水泥日用量d(吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从料场到工地之间均有直线道路相连。(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。(2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?应用实例:供应与选址某公司有6个建筑工地要开39(一)、建立模型

记工地的位置为(ai,bi),水泥日用量为di,i=1,…,6;料场位置为(xj,yj),日储量为ej,j=1,2;从料场j向工地i的运送量为Xij。当用临时料场时决策变量为:Xij,当不用临时料场时决策变量为:Xij,xj,yj。(一)、建立模型记工地的位置为(ai,bi),水泥日用40(二)使用临时料场的情形

使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量为Xij,在各工地用量必须满足和各料场运送量不超过日储量的条件下,使总的吨千米数最小,这是线性规划问题.线性规划模型为:设X11=X1,X21=X2,,X31=X3,X41=X4,X51=X5,,X61=X6X12=X7,X22=X8,,X32=X9,X42=X10,X52=X11,,X62=X12

编写程序gying1.m(二)使用临时料场的情形使用两个临时料场A(5,41计算结果为:x=[3.00005.00000.00007.00000.00001.00000.00000.00004.00000.00006.000010.0000]’fval=136.2275计算结果为:x=[3.00005.00000.042(三)改建两个新料场的情形

改建两个新料场,要同时确定料场的位置(xj,yj)和运送量Xij,在同样条件下使总吨千米数最小。这是非线性规划问题。非线性规划模型为:(三)改建两个新料场的情形改建两个新料场,要同时确定料43设X11=X1,X21=X2,,X31=X3,X41=X4,X51=X5,,X61=X6X12=X7,X22=X8,,X32=X9,X42=X10,X52=X11,,X62=X12

x1=X13,y1=X14,x2=X15,y2=X16

(1)先编写M文件liaoch.m定义目标函数。(2)取初值为线性规划的计算结果及临时料场的坐标:x0=[35070100406105127]';编写主程序gying2.m.设X11=X1,X21=X2,,X31=X344(3)计算结果为:x=[3.00005.00000.07077.000000.9293003.929306.000010.07076.38754.39435.75117.1867]’fval=105.4626exitflag=1(3)计算结果为:x=[3.00005.000045(4)若修改主程序gying2.m,取初值为上面的计算结果:x0=[3.00005.00000.07077.000000.9293003.929306.000010.07076.38754.39435.75117.1867]’得结果为:x=[3.00005.00000.30947.00000.01080.6798003.690605.989210.32025.53694.91945.82917.2852]’fval=103.4760exitflag=1总的吨千米数比上面结果略优.(5)若再取刚得出的结果为初值,却计算不出最优解.(4)若修改主程序gying2.m,取初值为上面的计算46(6)若取初值为:x0=[35471000005115.63484.86877.24797.7499]',则计算结果为:x=[3.00005.00004.00007.00001.0000000005.000011.00005.69594.92857.25007.7500]’fval=89.8835exitflag=1总的吨千米数89.8835比上面结果更好.通过此例可看出fmincon函数在选取初值上的重要性.(6)若取初值为:通过此例可看出fmincon函数在选取47

某厂向用户提供发动机,合同规定,第一、二、三季度末分别交货40台、60台、80台.每季度的生产费用为(元),其中x是该季生产的台数.若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c元.已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a=50、b=0.2、c=4,问工厂应如何安排生产计划,才能既满足合同又使总费用最低.讨论a、b、c变化对计划的影响,并作出合理的解释.练习某厂向用户提供发动机,合同规定,第一、二、48第七章最优化计算方法第七章最优化计算方法49一、实验目的:第一节线性方程组的应用1、了解线性规划问题及可行解、最优解的概念

2、掌握Matlab软件关于求解线性规划的语句和方法。二、实验原理和方法:在生活实践中,很多重要的实际问题都是线性的(至少能够用线性函数很好的近似表示),所以我们一般把这些问题化为线性的目标函数和约束条件进行分析,通常将目标函数和约束都是线性表达式的规划问题称为线性规划。一、实验目的:第一节线性方程组的应用1、了解线性规划问题50它的一般形式是:

也可以用矩阵形式来表示:它的一般形式是:也可以用矩阵形式来表示:51线性规划的可行解是满足约束条件的解;线性规划的最优解是使目标函数达到最优的可行解。线性规划关于解的情况可以是:1、无可行解,即不存在满足约束条件的解;2、有唯一最优解,即在可行解中有唯一的最有解;4、有可行解,但由于目标函数值无界而无最优解。3、有无穷最优解,即在可行解中有无穷个解都可使目标函数达到最优;线性规划的可行解是满足约束条件的解;线性规划的最优解是使目标52一般求解线性规划的常用方法是单纯形法和改进的单纯形法,这类方法的基本思路是先求得一个可行解,检验是否为最优解;若不是,可用迭代的方法找到另一个更优的可行解,经过有限次迭代后,可以找到可行解中的最优解或者判定无最优解。一般求解线性规划的常用方法是单纯形法和改进53三、内容与步骤:在Matlab优化工具箱中,linprog函数是使用单纯形法求解下述线性规划问题的函数。三、内容与步骤:在Matlab优化工具箱中,linprog函54它的命令格式为:其中:A为约束条件矩阵,b,c分别为目标函数的系数向量和约束条件中最右边的数值向量;也可设置解向量的上界vlb和下界vub,即解向量必须满足vlb<=x<=vub;还可预先设置初始解向量x0。如没有不等式,而只有等式时,A=[],b=[];输出的结果:x表示最优解向量;fval表示最优值。它的命令格式为:其中:A为约束条件矩阵,b,c分别为目标函数55【例1】求解线性规划问题:解:考虑到linprog函数只解决形如的线性规划。所以先要将线性规划变为如下形式:【例1】求解线性规划问题:解:考虑到linprog函数只56然后建立M文件如下:c=[-3;1;1];A=[1-21;4-1-2];b=[11;-3];aeq=[20-1];beq=-1;vlb=[0;0;0];[x,fval]=linprog(c,A,b,aeq,beq,vlb)

Matlab程序:ch701.m然后建立M文件如下:c=[-3;1;1];A=[1-2157以ch701作为文件名保存此M文件后,在命令窗口输入ch701后即可得到结果:x=4.00001.00009.0000同时返回fval=-2对应到原来的线性规划中即知目标函数的最大值为2,此时x1=4,x2=1,x3=9。以ch701作为文件名保存此M文件后,在命令窗口x=4.58第二节无约束规划计算方法一、实验目的1、了解无约束规划问题的求解原理与方法

2、会用Matlab软件求解无约束规划问题。

二、实验原理和方法无约束规划问题的解法一般按目标函数的形式分为两大类:一类是一元函数的一维搜索法,如黄金分割法、插值法等;另一类是求解多元函数的下降迭代法。第二节无约束规划计算方法一、实验目的1、了解无约束规划问题59迭代的基本思想和步骤大致可分为以下四步:

迭代的基本思想和步骤大致可分为以下四步:

60三、实验内容与步骤在Matlab软件中,求解无约束规划的常用命令是:

x=fminunc(‘fun’,x0)其中,fun函数应预先定义到M文件中,并设置初始解向量为x0。三、实验内容与步骤在Matlab软件中,求解无约束规划的常用61【例2】求解取解:首先建立函数文件fun702.m【例2】求解取解:首先建立函数文件fun702.m62以fun702为文件名保存此函数文件。

在命令窗口输入:

x0=[-2;4];x=fminunc('fun702',x0)结果显示:f=-1.0000x=1.00001.0000即极小值为-1,是x1=1,x2=1时取得。Matlab程序:ch702.m以fun702为文件名保存此函数文件。在命令窗口输入:63【例3】解非线性方程组解:解此非线性方程组等价于求解无约束非线性规划问题:然后建立函数文件fun703.m【例3】解非线性方程组解:解此非线性方程组等价于求解无约束64在命令窗口输入:x0=[0;0];x=fminunc(‘fun703’,x0)结果显示:f=5.2979e-011x=1.06730.1392则非线性方程组的解为x1=1.0673,x2=0.1392。

Matlab程序:ch703.m在命令窗口输入:x0=[0;0];结果显示:f=5.265第三节约束非线性规划计算方法

一、实验目的1、了解约束非线性规划问题的求解原理与方法;

2、会用Matlab软件求解约束非线性规划问题。

二、实验原理和方法对于约束非线性规划,随着目标函数和约束条件的不同,解法也不同,一般来说,有两类方法:(1)、将约束问题化为无约束问题的求解方法;(2)、用线性规划来逼近非线性规划;第三节约束非线性规划计算方法一、实验目的1、了解约束非66三、实验内容与步骤

约束非线性规划的一般形式为:其中,f(x)为多元实值函数;g(x)为向量函数,并且f(x),g(x)中至少有一个函数是非线性函数的(否则成为线性规划问题)。三、实验内容与步骤约束非线性规划的一般形式为:其中,f(67x=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)在Matlab优化工具箱中,fmincon函数是用SQP算法来解决一般的约束非线性规划的函数,它的命令格式为:x=fmincon(‘fun’,x0,A,b)在Matlab68【例4】求解约束非线性规划:

(初值为[1;1])解:首先建立一个m文件fun7041.mfunctiony=fun7041(x)y=-exp(x(1))*x(2)^2*(3-exp(x(1))-x(2)^2);存储为fun7041.m首先将问题转化为matlab要求的格式;即求出fun,A,b,Aeq,Beq,X0,Lb,Ub【例4】求解约束非线性规划:(初值为[1;1])解:首先69然后建立一个m文件fun7042.mfunction[c,cep]=fun7042(x)c=[];%c为非线性不等式,且为c<=0cep=exp(x(1))+x(2)^2-3;%cep为非线性等式然后存储为fun7042.m最后在命令窗口中输入:A=[];b=[];Aeq=[];Beq=[];Lb=[];Ub=[];[x,f]=fmincon(‘fun7041’,[1;1],[],[],[],[],[],[],’fun7042’)-f因题目中有非线性约束条件,所以建立非线性约束m-文件。Matlab程序:ch704.m然后建立一个m文件fun7042.m最后在命令窗口中输入70结果为:x=0.88520.7592f=6.2043e-016ans=-6.2043e-016最后的结果为:-6.2043e-016结果为:x=0.8852最后的结果为:-671【例5】求解约束非线性规划:

解:首先建立一个m文件fun705.mfunctiony=fun705(x)y=(x(1)-1)^2+(x(2)-2)^2+(x(3)-3)^2+(x(4)-4)^2;存储为fun705.m文件.【例5】求解约束非线性规划:解:首先建立一个m文件fu72x0=[1;1;1;1];A=[1111;3321];B=[5;10];Aeq=[];Beq=[];Lb=[0;0;0;0];[x,g]=fmincon(‘fun705’,x0,A,B,Aeq,Beq,Lb)答案为:x=0.00000.66671.66652.6668g=6.3333Matlab程序:ch705.mx0=[1;1;1;1];A=[1111;33273非现性规划的基本概念定义

如果目标函数或约束条件中至少有一个是非线性函数时的最优化问题就叫做非线性规划问题.

一般形式:

(1)其中,是定义在En上的实值函数,简记:

其它情况:求目标函数的最大值或约束条件为小于等于零的情况,都可通过取其相反数化为上述一般形式.非现性规划的基本概念定义如果目标函数74用MATLAB软件求解,其输入格式如下:

1. x=quadprog(H,C,A,b);2. x=quadprog(H,C,A,b,Aeq,beq);3. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB);4. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0);5. x=quadprog(H,C,A,b,Aeq,beq,VLB,VUB,X0,options);6. [x,fval]=quaprog(...);7. [x,fval,exitflag]=quaprog(...);8. [x,fval,exitflag,output]=quaprog(...);1、二次规划用MATLAB软件求解,其输入格式如下:1、二次规划75例1

minf(x1,x2)=-2x1-6x2+x12-2x1x2+2x22s.t.x1+x2≤2-x1+2x2≤2x1≥0,x2≥01、写成标准形式:2、输入命令:

H=[1-1;-12];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.2222s.t.例1minf(x1,x2)=-2x1-6x2+x176

1.首先建立M文件fun.m,定义目标函数F(X):functionf=fun(X);f=F(X);2、一般非线性规划

其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其它变量的含义与线性规划、二次规划中相同.用Matlab求解上述问题,基本步骤分三步:1.首先建立M文件fun.m,定义目标函数F(X):2、773.建立主程序.非线性规划求解的函数是fmincon,命令的基本格式如下:

(1)x=fmincon(‘fun’,X0,A,b)

(2)x=fmincon(‘fun’,X0,A,b,Aeq,beq)

(3)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB)

(4)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’)(5)x=fmincon(‘fun’,X0,A,b,Aeq,beq,VLB,VUB,’nonlcon’,options)

(6)[x,fval]=fmincon(...)

(7)[x,fval,exitflag]=fmincon(...)(8)[x,fval,exitflag,output]=fmincon(...)输出极值点M文件迭代的初值参数说明变量上下限3.建立主程序.非线性规划求解的函数是fmincon,命令78注意:[1]fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为’on’),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。[2]fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。[3]fmincon函数可能会给出局部最优解,这与初值X0的选取有关。注意:791、写成标准形式:

s.t.

2x1+3x26s.tx1+4x25x1,x20例21、写成标准形式:2x1+3x2802、先建立M-文件fun3.m:

functionf=fun3(x);f=-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^23、再建立主程序youh2.m:x0=[1;1];A=[23;14];b=[6;5];Aeq=[];beq=[];VLB=[0;0];VUB=[];[x,fval]=fmincon('fun3',x0,A,b,Aeq,beq,VLB,VUB)4、运算结果为:x=0.76471.0588fval=-2.02942、先建立M-文件fun3.m:3、再建立主程序youh2811.先建立M文件fun4.m,定义目标函数:

functionf=fun4(x);f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);x1+x2=0s.t.1.5+x1x2-x1-x20-x1x2–10

0例32.再建立M文件mycon.m定义非线性约束:function[g,ceq]=mycon(x)g=[x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];1.先建立M文件fun4.m,定义目标函数:823.主程序youh3.m为:x0=[-1;1];A=[];b=[];Aeq=[11];beq=[0];vlb=[];vub=[];[x,fval]=fmincon('fun4',x0,A,b,Aeq,beq,vlb,vub,'mycon')3.运算结果为:

x=-1.22501.2250fval=1.89513.主程序youh3.m为:3.运算结果为:83例4

1.先建立M-文件fun.m定义目标函数:functionf=fun(x);f=-2*x(1)-x(2);2.再建立M文件mycon2.m定义非线性约束:function[g,ceq]=mycon2(x)g=[x(1)^2+x(2)^2-25;x(1)^2-x(2)^2-7];例41.先建立M-文件843.主程序fxx.m为:x0=[3;2.5];VLB=[00];VUB=[510];[x,fval,exitflag,output]=fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2')3.主程序fxx.m为:854.运算结果为:x=4.00003.0000fval=-11.0000exitflag=1output=iterations:4funcCount:17stepsize:1algorithm:[1x44char]firstorderopt:[]cgiterations:[]4.运算结果为:86应用实例:供应与选址

某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米)及水泥日用量d(吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从料场到工地之间均有直线道路相连。(1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。(2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?应用实例:供应与选址某公司有6个建筑工地要开87(一)、建立模型

记工地的位置为(ai,bi),水泥日用量为di,i=1,…,6;料场位置为(xj,yj),日储量为ej,j=1,2;从料场j向工地i的运送量为Xij。当用临时料场时决策变量为:Xij,当不用临时料场时决策变量为:Xij,xj,yj。(一)、建立模型记工地的位置为(ai,bi),水泥日用88(二)使用临时料场的情形

使用两个临时料场A(5,1),B(2,7).求从料场j向工地i的运送量为Xij,在各工地用量必须满足和各料场运送量不超过日储量的条

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论