大学数学实验七_无约束优化
1 表示收敛
迭代次数:4 目标函数调用次数:18
5、搜索方向:DFP;搜索步长:三次插值
输出结果如下 6
x5 =
0.4185 0.0000
v5 =
5.9198e-015
exit5 =
1
out5 =
iterations: 4
funcCount: 18
stepsize: 1
firstorderopt: 2.2075e-008
funcCount: 18
stepsize: 1
firstorderopt: 2.2209e-008
algorithm:
'medium-scale:
Quasi-Newton line search'
message: [1x468 char]
最优解 x1=0.4185 最优解 x2=0.0000
最优值=5.9926e-015
输出结果如下。
x6 =
0.4189 0.0000
v6 =
9.6391e-012
exit6 =
1
out6 =
iterations: 18
funcCount: 111
stepsize: 10
firstorderopt: 8.7861e-007
algorithm:
'medium-scale:
Quasi-Newton line search'
i
i
i
1
0.844
12
0.718
23
0.478
2
0.908
13
0.685
24
0.467
3
0.932
14
0.658
25
0.457
4
0.936
15
0.628
26
0.448
5
0.925
16
0.603
27
0.438
6
0.908
17
0.580
28
0.431
7
0.881
18
0.558
29
0.424
8
0.850
19
大学数学实验七 无约束优化 实验报告
【实验目的】 1、掌握 MATLAB 优化工具箱的基本用法,对不同算法进行初步分析、比较。 2、练习用无约束优化方法建立和求解实际问题的模型(包括非线性最小二
乘拟合)。 【实验内容】
2 取不同的初值计算下列非线性规划,尽可能求出所有局部极小点,进而找出全局极小点, 并对不同算法(搜索方向、搜索步长、数值梯度与分析梯度等)的结果进行分析、比较。 (1)
-0.8468
0.08596
1.9026e-010
3
-0.7043
0.1185
2.9597e-009
4
-0.5373
0.179
3.4633e-009
5
-0.4258
0.242
5.7723e-010
6
-0.3158
0.3336
3.6726e-011
7
-0.2145
0.4596
1.0024e-010
8
-0.1114
上面的程序中,x 和 y 分别表示 和 ,z 表示 f(x1, x2)的值。自变量的范围均取在[-2, 2] 上,根据输出的图像进一步缩小范围。
输出的三维图像如下。
1
图 1.1 三维图像
图 1.2 等高线
第一幅图中,最大的函数值的数量级已到 107,说明画图范围取得过大,函数值为 0 的 电在该图中均呈现一平面,故需要缩小自变量的范围再绘图。修改程序如下。
ቤተ መጻሕፍቲ ባይዱ
表 1.1 数值方法计算梯度得到的结果
迭代 次数
4 4 18 4 4 18
目标函数引 用次数
18 18 111 18 18 111
从上表可以看出,无论选择什么搜索方向和搜索步长,都能得到比较准确的结果(x2=0)。 但是从最优值、迭代次数和目标函数引用次数 4 个参数来看,BFGS 和 DFP 明显比最速下 降得到的结果要好。搜索步长的选择对这个问题没有影响。
message: [1x468 char]
最优解 x1=0.4189 最优解 x2=0.0000
最优值=9.6391e-012
1 表示收敛
迭代次数:18 目标函数调用次数:111
7
程序运行结果整理在下表中。
情况
1 2 3 4 5 6
搜索方向
BFGS DFP 最速下降 BFGS DFP 最速下降
最优解 步长搜索
v3 =
9.6391e-012
exit3 =
1
out3 =
iterations: 18
funcCount: 111
stepsize: 10
firstorderopt: 8.7861e-007
algorithm:
'medium-scale:
Quasi-Newton line search'
message: [1x468 char]
Quasi-Newton line search' message: [1x468 char]
最优解 x1=0.4185 最优解 x2=0.0000
最优值=5.9198e-015
1 表示收敛
迭代次数:4 目标函数调用次数:18
3、搜索方向:最速下降法;搜索步长:混合二三次插值
输出结果如下。
x3 =
0.4189 0.0000
10
牛顿法的迭代公式如下:
初值依旧取
。
编写计算程序如下。
11
这个程序中设置的停止迭代的条件也是
,认为此时得到的解是局部
极小点。输出的结果是(1.0000, 0.0000)。虽然根据理论分析可知这点是全局极小点,可是由
于初值给的是(0.4, 0.2),输出的结果和用其他方法得到的结果非常不同,可能是由于 f(x)的
最优解 x1=0.4185 最优解 x2=0.0000
最优值=5.9926e-015
1 表示收敛
迭代次数:4 目标函数调用次数:18
2、搜索方向:DFP;搜索步长:混合二三次插值
4
输出结果如下。
x2 = 0.4185 0.0000
v2 = 5.9198e-015
exit2 = 1
out2 = iterations: 4 funcCount: 18 stepsize: 1 firstorderopt: 2.2075e-008 algorithm: 'medium-scale:
x1
最优解 x2
最优值
混合二三 次插值
0.4185 0.4185 0.4189
0.0000 0.0000 0.0000
5.9926e-015 5.9198e-015 9.6391e-012
0.4185 三次插值 0.4185
0.0000 5.9926e-015 0.0000 5.9198e-015
0.4189 0.0000 9.6391e-012
输出结果如下。
x1 = 0.4185 0.0000
v1 = 5.9926e-015
exit1 = 1
out1 = iterations: 4 funcCount: 18 stepsize: 1 firstorderopt: 2.2209e-008 algorithm: 'medium-scale:
Quasi-Newton line search' message: [1x468 char]
设
函数 是一个二变量的、乘积形式的函数,而且可以预见,其梯度向量和 Hessian 矩
阵的表达式比较复杂,故若通过求梯度的方法求解本题会十分麻烦。
从这个函数表达式可以看出
恒
故若某个 能使
,应该就是最优解。从表达式容易观察得,当
或
或
时,
。
下面用 MATLAB 求解这个问题。 一、输出三维图像和等高线,直观观察最优解所在位置 首先,先让 MATLAB 输出 的三维图像,直观地观察最优解的大致范围。程序如下。
四、自编程序实现用最速下降法和牛顿法进行计算
最速下降法的迭代公式如下:
初值依旧取
。之前也已经求出了 。编写计算程序如下。
9
上面的程序中设置的停止迭代的条件是
,认为此时得到的解是局部
极小点。输出的结果是(0.4194, 0.0000),和用 MATLAB 自带命令求解出来的结果很接近。
观察其收敛过程(部分):
利用之前绘三维图像和等高线的程序,在
和
上画出三
维图像和等高线。
输出结果如下。
图 1.6 部分局部极小点分布三维图
图 1.7 部分局部极小点分布等高线
从上图可以看出,在第二象限的确存在一条由局部极小点构成的线。根据 f(x)的表达式: 当
时, 也=0。故上式也是本题的一个最优解。 14
下面在图 1.5 的基础上,绘出 输出图像如下。
0.6555
1.2704e-010
9
-0.04218
0.8477
1.3768e-012
10
-0.02059
0.9218
3.6449e-012
表 1.3 第二象限中形似双曲线一支的曲线上的局部最小点对应的函数值
13
观察上表数据,发现这些点的最优解都已经十分靠近 0,很有可能也是全局极小点。需
要利用 MATLAB 进行进一步判断。
0.4228 0.0000 1.1436e-011
表 1.2 分析方法计算梯度得到的结果
迭代 次数