- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
最优化问题的计算机求解
7.1 无约束最优化问题求解
无约束最优化问题是最简单的一类最优化问题,其一般数学描述为
(7-1-1)
其中,称为优化变量,函数称为目标函数,该数学表示的含义亦即求取一组向量,使得最优化目标函数为最小,故这样的问题又称为最小化问题。其实,最小化是最优化问题的通用描述,它不失普遍性。如果要想解最大化问题,那么只需给目标函数乘一个负号就能立即将最大化问题转换成最小化问题。所以本书中描述的全部问题都是最小化问题。
7.1.1 解析解法和图解法
无约束最优化问题的最优点处,目标函数对各个分量的一阶导数为0,从而可以列出下面的方程:
(7-1-2)
求解这些方程构成的联立方程可以得出极值点。其实,解出的一阶导数均为0的极值点不一定都是极小值的点,其中有的还可能是极大值点。极小值问题还应该有正的二阶导数。对于单变量的最优化问题可以考虑采用解析解的方法进行来解。然而多变量最优化问题因为需要将其转换成求解多元非线性方程,其难度也不低于直接采取最优化问题,所以没有必要采用解析解方法求解。
一元函数最优化问题的图解法也是很直观的,应绘制出该函数的曲线,在曲线上就能看出其最优值点。二元函数的最优化也可以通过图解法求出。但三元或多元函数,由于用图形没有办法表示,所以不适合用图解法来解。
【例7-1】函数,试用解析求解和图形求解的方法研究该函数的最优性。
【求解】可以先表示该函数,并解析地求解该函数的一阶导教,用ezplot()函数可以给制出区间内一阶导函数的曲线,如图7-1a所示。
syms t; y=exp(-3*t)*sin(4*t+2)+4*exp(-0.5*t)*cos(2*t)-0.5;
y1=diff(y,t); %求取一阶导数
ezplot(y1,[0,4]) 绘制出选定区间内一阶导函数的曲线
其实求解导数等于0的方程不比直接求解其最优值简单。用图解法可以看出,在这个区域内有两点:,使得它们的一阶导数为0,但从其一阶导数走向看,点对应负的二阶导数值,所以该点对应于极大值点,而点对应于正的二阶导数值,故为极小值点。点的值可以由下面的语句直接解出。
t0=solve(y1),ezplot(y,[0,4]) %求出一阶导数等于零的点
t0 =
1.4528424981725411893375778048840
y2=diff(y1); b=subs(y2,t,t0) %并验证二阶导数为正
b =
7.8553420253333601379464405534590
这样,就可以求出函数的最小值。还可以用图形绘制的方法进一步验证得出的结果.如图7-1b所示,可见, 为最小值点,为最大值点。
然而因为给定的函数是非线性函数.所以用解析法或类似的方法求解最小值问题一点都不比直接求解最优化问题简单。因此.除演示之外,不建议用这样的方法求解该问题,而直接采用最优化问题求解程序得出问题的解。
图7-1 联立方程图解法示意图
7.1.2 基于 MATLAB 的数值解法
MATLAB语言中提供了求解无约束最优化的函数fminsearch(),其最优化工具箱中还提供了函数fminunc(),二者的调用格式完全一致,为
x=fminunc(Fun,x0) 最简求解语句
[x,f,flag,out]=fminunc(Fun,x0,opt,p1,p2,……) 一般求解格式
opt为控制参数。该函数主要采用了单纯形算法。下面将通过例子来演示无约束最优化问题的数值解法。
【例7-2】已知二元函数,试用MATLAB提供的求解函数求出其最小值.并用图形方法表示其求解过程。
【求解】因为函数中给出的自变量是,而最优化函数需要求取的是自变量向量。故在求解前应该先进行变量替换,如令,这样就可以用下面的语句由inline()形式定义出目标函数f,然后将求解控制变量中的Display属性设置为‘iter’,这样可以显示中间的搜索结果。用下面的语句求解出最优解。
f=inline((x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2)),x);
x0=[0; 0]; ff=optimset; ff.Display=iter;
x=fminsearch(f,x0,ff)
Iteration Func-count min f(x) Procedure
0 1 0
1 3 -0.000499937 initial simplex
2
文档评论(0)