美文网首页
最速下降法的python实现

最速下降法的python实现

作者: zhouyelihua | 来源:发表于2018-12-17 10:25 被阅读0次

代码一:

from sympy import *
import numpy as np
def backtracking_line_search(f,df,x,x_k,p_k,alpha0):
    rho=0.5
    c=10**-4
    alpha=alpha0
    replacements1=zip(x,x_k)
    replacements2=zip(x,x_k+alpha*p_k)
    f_k=f.subs(replacements1)
    df_p=np.dot([df_.subs(replacements1) for df_ in df],p_k)
    while f.subs(replacements2)>f_k+c*alpha*df_p:
        alpha=rho*alpha
        replacements2 = zip(x, x_k +alpha * p_k)
    return alpha
def stepest_line_search(f,x,x0,alpha0):
    df = [diff(f, x_) for x_ in x]
    x_k=x0
    alpha=alpha0
    replacements=zip(x,x_k)
    len_df = sqrt(np.sum([df_.subs(replacements) ** 2 for df_ in df]))
    while len_df>1e-6:
        p_k=-1*np.array([df_.subs(replacements) for df_ in df])
        alpha = backtracking_line_search(f, df, x, x_k, p_k, alpha)
        x_k=x_k+alpha*p_k
        replacements = zip(x, x_k)
        len_df=np.sum([df_.subs(replacements)**2 for df_ in df])
    return x_k
if __name__=="__main__":
    init_printing(use_unicode=True)
    x1 = symbols("x1")
    x2 = symbols("x2")
    x = np.array([x1, x2])
    f = 100 * (x2 - x1 ** 2)**2 + (1 - x1) ** 2
    ans=stepest_line_search(f, x, np.array([1.2, 1]), 1)
    print "the minimal value in point:",ans

分析1:
这个采用的是backtracking line search来寻找alpha。

相关文章

  • 最速下降法的python实现

    代码一: 分析1:这个采用的是backtracking line search来寻找alpha。

  • Python梯度下降法

    本文主要讲解梯度下降算法,以及Python的实现一个简单的例子 梯度下降法又称为最速下降法,是 1847 年有数学...

  • 牛顿法和最速下降法的Python实现

    1 牛顿法 1.1 牛顿法的Python程序 1.2 牛顿法的结果分析     程序执行的结果如下:     经过...

  • 无约束最优化(二) 共轭方向法与共轭梯度法

    基本思想   之前文章最速下降法、Newton法、修正Newton法介绍的最速下降法存在锯齿现象,Newton法需...

  • 梯度下降训练线性回归(最优化2)

    实验目的 梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一...

  • 线性回归(机器学习4)

    实验目的 梯度下降法是一个最优化算法,通常也称为最速下降法。最速下降法是求解无约束优化问题最简单和最古老的方法之一...

  • Python数据结构-链表

    自己实现一遍果然感觉不一样 Python实现单链表 Python实现单项循环链表 Python实现双向链表

  • 快排

    python实现 java实现:

  • 2_2冒泡排序

    cpp实现 Python 实现

  • 新词发现

    python3实现互信息和左右熵的新词发现 python简单实现新词发现 用python实现新词发现程序——基于凝...

网友评论

      本文标题:最速下降法的python实现

      本文链接:https://www.haomeiwen.com/subject/kzlqkqtx.html