5.3.c 线搜索方法代码解析

category
type
status
slug
date
summary
tags
password
icon
欲说还休,欲说还休。却道天凉好个秋. — 辛弃疾
🏰代码及环境配置:请参考 环境配置和代码运行!

本节提供了 线搜索方法的代码测试:

5.3.c.1 优化问题

在中定义了一个3维空间的二次函数:
显然, 这是一个凸函数并且最小点在.
函数和函数导数如下:

5.3.c.2 Armijo准则代码解析

armijo(x, d) 函数中, 我们定义了基于Armijo准则的线搜索方法.
输入决策变量x和下降方向d, 在while 循环中, 不停的缩小

5.3.c.3 Goldstein准则代码解析

goldstein(x, d)中, 我们使用了二分的方式, 快速找到满足两个不等式要求的点.

5.3.c.3 Wolfe准则代码解析

类似的, 在wolfe(x, d)中, 也使用了二分的方式, 快速找到满足两个不等式要求的点.

5.3.c.4 不同线搜索方法测试

line_search_test() 中, 定义了初始点, 基于梯度下降法, 使用不同的线搜索方法求最优解.
测试结果如下:
  • Armijo: Step 67:[-1.77436662e-10 -5.51975406e-06]
  • Goldstein: Step 35:[-1.24015340e-05 -3.81469727e-06]
  • Wolfe: Step 35:[-1.89816443e-05 -2.27373675e-06]
notion image
可以看到Armijo方法迭代次数最多, Wolfe在前几次迭代时, 路径比Goldstein更优.
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...