第四章 无约束方法详解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[tt,ff]=opt_step_quad(xk1',dirk, th,epsx,epsf,maxiter); xk1=xk1+tt*dirk'; end xk0=xk1; xn=xk1; fn=ffx(xn); aa=norm(dir); if(aa<1e-30) aa=1e-30; end end
xn ]T
使目标函数 f ( x) min
min f ( x) x Rn
目前已研究出很多种无约束优化方法,它们的 主要不同点在于构造搜索方向上的差别。
(1)间接法(导数法)——确定搜索方向时用到一 阶或(和)二阶导数的方法。如梯度法、(阻尼) 牛顿法、变尺度法、共轭梯度法等。
(2)直接法——其搜索方向直接取定或由计算目标 函数值所得的信息来确定;即不使用导数信息,如 坐标轮换法、鲍威尔法等。
2020/9/23
5
无约束优化直接解法
坐标轮换法 鲍维尔(Powell)法 鲍维尔(Powell)修正算法
2020/9/23
6
§4-2 坐标轮换法(无约束优化直接解法)
一)搜索方向
依次沿n个正交坐标轴的方向搜索:
ee12
[1 [0
0 1
... ...
0]T 0]T
...
en [0 0 ... 1]T
坐标轮换法的Matlab程序由三部分组成。第一部分为坐标 轮换法计算函数coordinat(xk0,th,epsx, epsf,maxiter),函数引用 变量说明见程序注释。最优步长采用二次插值法计算,函数名 为opt_step_quad(xk0,dir0, th,TolX, TolFun,maxiter),该函数调 用区间搜索函数opt_range_serach(xk0,dir0,th)得出二次差值需 要的三个坐标点,区间搜索函数采用进退法。 第二部分为用户应用程序; 第三部分为定义目标函数,调用方式为fn=ffx(x)。 下面是坐标轮换法的Matlab计算程序:
二)迭代步骤
1)几何描述(以二维问题为例)
2020/9/23
7
2) 坐标轮换法流程图
给定 X 0 , n,
k 1
i 1
从X
出发沿
i1
ei方向进行一维搜索得i :
X i X i1 iei
F F(Xi)
i i 1
否
in
是
否
Xn X0
X0 Xn
是
k k 1
X Xn F F
结束
2020/9/23
2
(4)对于多维无约束问题来说,古典极值理论中令 一阶导数为零,但要求二阶可微,且要判断海赛矩 阵为正定才能求得极小点,这种方法有理论意义, 但无实用价值。和一维问题一样,若多元函数F(X) 不可微,亦无法求解。但古典极值理论是无约束优 化方法发展的基础。
2020/9/23
3
无约束优化问题是:
求n维设计变量 x [x1 x2
2020/9/23
4
用直接法寻找极小点时,不必求函数的导数,只要计 算目标函数值。这类方法较适用于解决变量个数较少的 (n ≤20)问题,一般情况下比间接法效率低。
间接法除要计算目标函数值外,还要计算目标函数 的梯度,有的还要计算其海赛矩阵。
xk1 xk k sk (k 0,1,2, )
搜索方向的构成问题乃是无约束优化方法的关键。
为什么要研究无约束优化问题? (1)有些实际问题,其数学模型本身就是一个无约 束优化问题。 (2)通过熟悉它的解法可以为研究约束优化问题打 下良好的基础。 (3)约束优化问题的求解可以通过一系列无约束优 化方法来达到。所以无约束优化问题的解法是优化 设计方法的基本组成部分,也是优化方法的基础。
2020/9/23
function [xn fn]=coordinate(xk0,th,epsx,epsf,maxiter) %coordinate.m %xk0:变量初值 %th:二次插值搜索步长 %epsx,epsf:设计变量及函数误差限 %maxiter:最大迭代次数 n=length(xk0);
xk00=xk0; f00=ffx(xk0); fn=1000; xn=100*eye(1,n); dir=eye(n,n); while norm(xnxk00)>epsx&abs(fn-f00)>epsf xk1=xk0; xk00=xk0; f00=ffx(xk00); for k=1:n dirk=dir(:,k);
%th:quadratic interpolation %epsx,epsf:tolerance limit
最优步长计算函数: function [xo,fo] = opt_step_quad(xk0,dir0,th,TolX,TolFun,maxiter) [t012,fo] = opt_range_serach(xk0,dir0,th); …… End 区间搜索函数: function [xo,fo] = opt_range_serach(xk0,dir0,th) %xk0:initial points %th:marching step t1=0;t2=th;
xk1=xk0;xk2=xk1+t2*dir0; x0=xk1; f1=ffx(x0); …… end
例: 应用坐标轮换法的Matlab计算程序计算函数极小值
function opt_coordinate_test1 坐标轮换法计算函数
%xk0:initial values of variable;
第四章 无约束优化方法
1) 坐标轮换法;
无约束优化直接解法
2) 鲍威尔(powell)法;
3) 梯度法;
4) 共轭梯度法; 5) 牛顿法;
无
§4-1 概 述
研究无约束优化方法的意义
第1章所列举的机械优化设计问题,都是在一定 的限制条件下追求某一指标为最小,它们都属于约 束优化问题。工程问题大都如此。
8
三.算法特点
1)编程简单,容易掌握; 2)收敛速度通常较低(其有效性取决于目 标函数的性态),仅适于低维的情况。
如:(1)等值线为椭圆,且长短轴分别平行于坐标轴时--高效
x2
o
x1
x2
(2)等值线为如图脊线时--无效
(3)一般情况--低效
o
x1
2020/9/23
9
四、坐标轮换法的Matlab计算程序