第一范文网 - 专业文章范例文档资料分享平台

第九章 最优化方法要点

来源:用户分享 时间:2025/5/31 9:10:28 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

lower upper ineqlin ineqnonlin 2 x = 24.0000 12.0000 12.0000 fval =

-3.4560e+003

例9 求表面积为36而体积最大的长方体的体积。

解 设长方体的三个棱长分别为x1,x2,x3,则体积v=x1*x2*x3,且满足约束条件2(x1*x2+x2*x3+x3*x1)=36。

首先建立目标函数的M文件myopt1.m,内容如下: function f = myopt1(x)

f =-x(1)*x(2)*x(3); % 负号表示最小值,即x(1)*x(2)*x(3)的最大值 再建立非线性约束函数的M文件mycon.m,内容如下: function [C,Ceq] = mycon(x) C = [];

Ceq = x(1)*x(2)+x(2)*x(3)+x(3)*x(1)-18; 由于没有非线性不等式,故C为[]。

在命令窗口输入:

>> [x,fval] = fmincon('myopt1',[1 1 1],[],[],[],[],[0 0 0],[],'mycon') 输出结果为:

x =

2.4495 2.4495 2.4495 fval = -14.6969

结果表明当x1=x2=x3=2.4495时,体积最大值为14.6969。该问题的精确解为x1=x2=x3=6时最大体积为66。

9.4 二次规划

二次规划问题(quadratic programming)的标准形式为:

min1xⅱHx+fx 2ìA祝xb???sub.to íAeq?xbeq

?????lb#xub其中,H、A、Aeq为矩阵,f、b、beq、lb、ub、x为向量。其它形式的二次规划问题都可转化为标准形式。

MATLAB中使用quadprog函数求解二次规划,其调用格式有: x = quadprog(H,f,A,b) x = quadprog(H,f,A,b,Aeq,beq) x = quadprog(H,f,A,b,Aeq,beq,lb,ub) x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0) x = quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options) [x,fval] = quadprog(…) [x,fval,exitflag] = quadprog(…) [x,fval,exitflag,output] = quadprog(…) [x,fval,exitflag,output,lambda] = quadprog(…) 例10 求解下面二次规划问题

122x1+x2-x1x2-2x1-6x2 2ìx1+x2?2?????-x1+2x2?2s.. t í?2x1+x2?3??????0#x1,0x21Hx+fx 解:f(x)=xⅱ2minf(x)=骣骣1-1÷-2÷??则H=?,x=?,f=??÷÷?÷÷?-12-6桫桫在命令窗口中输入:

>> H = [1 -1; -1 2] ; f = [-2; -6]; A = [1 1; -1 2; 2 1]; b = [2; 2; 3]; lb = zeros(2,1);

骣x1÷? ?÷÷?x2÷桫[x,fval,exitflag,output,lambda] = quadprog(H,f,A,b,[ ],[ ],lb) 输出结果为:

x = %最优解 0.6667 1.3333 fval = %最优值 -8.2222

exitflag = %收敛 1 output =

iterations: 3

algorithm: 'medium-scale: active-set' firstorderopt: [ ] cgiterations: [ ] lambda =

lower: [2x1 double] upper: [2x1 double] eqlin: [0x1 double] ineqlin: [3x1 double] >> lambda.ineqlin ans = 3.1111 0.4444 0 >> lambda.lower ans = 0 0

此结果说明第1、2个约束条件有效,其余无效。

9.5 多目标规划

多目标规划是指在一组约束下,对多个不同目标函数进行优化。它的一般形式为

min[f1(x),f2(x),,fm(x)]

goalìF(x)-weight祝g????C(x)£0???Ceq(x)=0??s.. tí?A祝xb???Aeq?xbeq??????lb#xub

其中:x、b、beq、lb、ub是向量;A、Aeq为矩阵;C(x)、Ceq(x)和F(x)是返回向量的函数;F(x)、C(x)、Ceq(x)可以是非线性函数;weight为权值系数向量,用于控制对应的目标函数与用户定义的目标函数值的接近程度;goal为用户设计的与目标函数相应的目标函数值向量;g为一个松弛因子标量;F(x)为多目标规划中的目标函数向量。

MATLAB中求解多目标规划的函数为fgoalattain,其调用格式有: x = fgoalattain(fun,x0,goal,weight) x = fgoalattain(fun,x0,goal,weight,A,b) x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq) x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub) x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon) x = fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub,nonlcon,options) [x,fval] = fgoalattain(…)

[x,fval,attainfactor] = fgoalattain(…) [x,fval,attainfactor,exitflag] = fgoalattain(…) [x,fval,attainfactor,exitflag,output] = fgoalattain(…) [x,fval,attainfactor,exitflag,output,lambda] = fgoalattain(…)

输入参数x0为初始解向量;fun为多目标函数的文件名字符串,其定义方式与前fun的定义方式相同;goal为用户设计的目标函数值向量;weight权值系数向量,用于控制目标函数与用户自定义目标值的接近程度;A、b满足线性不等

搜索更多关于: 第九章 最优化方法要点 的文档
第九章 最优化方法要点.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c5adbf2cr9u38ccg96mxg8n6j4879hw00bys_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top