GitHub - 2020init/Optimization: 数值最优化求解,用python实现阻尼牛顿法,修正牛顿法,拟牛顿法 · GitHub
Skip to content

2020init/Optimization

 
 

Folders and files

Repository files navigation

Optimization

数值最优化求解

该项目为大学时数值最优化课程的作业,所用的教材是北京大学出版的数值最优化方法(高立)

题目要求:

使用不同Newton型算法、不同的线搜索策略、不同求步长方法计算Watson函数(课本P93的2(1))的极小值(初值为0向量,m=31,2<=n<=31),分析比较算法的优劣:

  1. 阻尼Netown法、修正Netown法、拟Newton法(SR1法、BFGS法、DFP法)。
  2. 线搜索策略包括:精确搜索、满足Goldstein准则和Wolfe准则。
  3. 求步长方法包括:二分法、插值法。
  4. 从迭代次数、函数调用次数、导数次数、CPU时间四个角度分析不同方法的有效性(效率)。
  5. 程序使用Python语言实现(3.6以上版本),数值计算可以使用numpy库,符号计算可以使用sympy库,CPU时间可以使用time库time.process_time(),禁用其它库。
  6. 需提交程序源代码和分析报告(包含程序运行结果和分析结论)。 评分标准:
  7. 基础部分:60。完成阻尼Netown法、修正Netown法和一种拟Newton法每种方法都用二分法搜索满足三种搜索策略的步长。
  8. 延申部分:20。在1的基础上进一步实现剩余两种拟Newton法同样用用二分法搜索满足三种搜索策略的步长。
  9. 提高部分:20。在1和2的基础上进一步对上述Newton型算法都使用插值法搜索满足三种搜索策略的步长。 该项目仅完成了前两部分,分别实现阻尼牛顿法,修正牛顿法,DFP法,BFPS法,SR1法。

运行需知

因作业需要,所以该项目在调用不同方法时,未写相应的调用程序,所以在调用相应方法时需要手动控制,将需要运行的方法注释去掉 例如调用DFP方法如下:

#Damped_netwon(x0, 1e-5) # 阻尼牛顿法
#Modified_newton(x0, 1e-5) # 修正牛顿法
DFP(x0, 1e-5) # DFP法
#BFGS(x0, 1e-5) # BFPS法
#SR1(x0, 1e-5) # SR1法

About

数值最优化求解,用python实现阻尼牛顿法,修正牛顿法,拟牛顿法

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

Languages

  • Python 100.0%