最优化算法python实现篇(2)—无约束一维极值(二分法)
生活随笔
收集整理的這篇文章主要介紹了
最优化算法python实现篇(2)—无约束一维极值(二分法)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
最優(yōu)化算法python實(shí)現(xiàn)篇(2)——無約束一維極值(二分法)
- 算法適用問題
- python實(shí)現(xiàn)
- 示例運(yùn)行結(jié)果
算法適用問題
搜索給定單峰區(qū)間的極值問題,一般對凸優(yōu)化問題比較適用。
python實(shí)現(xiàn)
# # ******************************** 無約束一維極值——二分法 ******************************** import pandas as pd import numpy as np from advance_retreat_method import advance_retreat_method from scipy.misc import derivative class Minimize_Dichotomy(object):"""func:為目標(biāo)函數(shù),必傳參數(shù)eps:迭代精度 默認(rèn)1e-6x0:初始區(qū)間。若不傳這個參數(shù),則會調(diào)用進(jìn)退法求取一個單峰區(qū)間。from advance_retreat_method import advance_retreat_method 這個模塊在本人博客優(yōu)化版塊的第一篇文章 """def __init__(self,**kargs):self.func = kargs["func"]if "x0" in kargs.keys():self.x0 = np.array(kargs["x0"])else:self.x0 = np.array(advance_retreat_method(kargs["func"]).run())if "eps" in kargs.keys():self.eps = kargs["eps"]else:self.eps = 1e-6def run(self):x_mean = np.mean(self.x0)y_mean = derivative(self.func,x_mean,dx = 1e-6)if derivative(self.func,self.x0[0],dx = 1e-6)*y_mean < 0:self.x0[1] = x_meanelse:self.x0[0] = x_meanif np.abs(self.x0[0]-self.x0[1]) < self.eps or y_mean == 0:return ((x_mean,self.func((self.x0[0]+self.x0[1])/2)))else:return self.run() if __name__ == "__main__":result = Minimize_Dichotomy(func = lambda x:x**2+2*x-150).run()print(result)示例運(yùn)行結(jié)果
by CyrusMay 2020 05 01
幸福不是多而是遺忘
能遺忘生命的煩惱憂傷
——五月天(Enrich your life)——
總結(jié)
以上是生活随笔為你收集整理的最优化算法python实现篇(2)—无约束一维极值(二分法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爬虫篇——代理IP爬取备用及存储
- 下一篇: 最优化算法python实现篇(3)——无