预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共44页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数学建模与数学试验试验目标*非线性规划基本解法定义假如目标函数或约束条件中最少有一个是非线性函数,则最优化问题就叫做非线性规划问题.定义1把满足问题(1)中条件解称为可行解(或可行点),全部可行点集合称为可行集(或可行域).记为D.即问题(1)可简记为.非线性规划基本解法罚函数法其中T(X,M)称为罚函数,M称为罚因子,带M项称为罚项,这里罚函数只对不满足约束条件点实施处罚:当时,满足各,故罚项为0,不受处罚.当时,必有约束条件,故罚项大于0,要受处罚.罚函数法缺点:每个近似最优解Xk往往不是允许解,而只能近似满足约束,在实际问题中这种结果可能不能使用;在解一系列无约束问题中,计算量太大,尤其是伴随Mk增大,可能造成错误.SUTM内点法(障碍函数法)内点法迭代步骤近似规划法基本思想:将问题(3)中目标函数和约束条件近似为线性函数,并对变量取值范围加以限制,从而得到一个近似线性规划问题,再用单纯形法求解之,把其符合原始条件最优解作为(3)解近似.近似规划法算法步骤以下:返回用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(…);例1minf(x1,x2)=-2x1-6x2+x12-2x1x2+2x22s.t.x1+x2≤2-x1+2x2≤2x1≥0,x2≥01.首先建立M文件fun.m,用来定义目标函数F(X):functionf=fun(X);f=F(X);3.建立主程序.求解非线性规划函数是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(…)注意:[1]fmincon函数提供了大型优化算法和中型优化算法.默认时:若在fun函数中提供了梯度(options参数GradObj设置为’on’),而且只有上下界存在或只有等式约束,fmincon函数将选择大型算法.当现有等式约束又有梯度约束时,使用中型算法.[2]fmincon函数中型算法使用是序列二次规划法.在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hesse矩阵.[3]fmincon函数可能会给出局部最优解,这与初值X0选取相关.例43.主程序fxx.m为:x0=[3;2.5];VLB=[00];VUB=[510];[x,fval,exitflag,output]=fmincon('fun',x0,[],[],[],[],VLB,VUB,'mycon2')4.运算结果为:x=4.00003.0000fval=-11.0000exitflag=1output=iterations:4funcCount:17stepsize:1algorithm:[1x44char]firstorderopt:[]cgiterations:[]应用实例:供给与选址(一)建立模型(二)使用暂时料场情形计算结果为:(三)改建两个新料场情形设X11=X1,X21=X2,X31=X3,X41=X4,X51=X5,,X61=X6X12=X7,X22=X8,X32=X9,X42=X10,X52=X11,X62=X12x1=X13,y1=X14,x2=X15,y2=X16(3)计算结果为:(4)若修改主程序gying2.m,取初值为上面计算结果:x0=[3.00005.00000.07077.000000.9293003.929306.000010.07076.38754.39435.75117.1867]’(6)若取初值为:x0=[35471000005115.63484.86877.24797.