搜索给定单峰区间的极值问题,一般对凸优化问题比较适用。 有些人经过我身旁 ——五月天(一颗苹果)——算法适用问题
python实现
# ******************************** 无约束一维极值——黄金分割法 ******************************** import pandas as pd import numpy as np from advance_retreat_method import advance_retreat_method class Minimize_Golden(object): """ func:为目标函数,必传参数 eps:迭代精度 默认1e-6 x0:初始区间。若不传这个参数, 则会调用进退法求取一个单峰区间。 from advance_retreat_method import advance_retreat_method 这个模块在本人博客优化版块的第一篇文章 """ 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-6 self.r1 = self.x0[0] + 0.382*(self.x0[1]-self.x0[0]) self.r2 = self.x0[0] + 0.618*(self.x0[1]-self.x0[0]) def run(self): if self.func(self.r1) < self.func(self.r2): self.x0[1] = self.r2 self.r2 = self.r1 self.r1 = self.x0[0] + 0.382*(self.x0[1]-self.x0[0]) else: self.x0[0] = self.r1 self.r1 = self.r2 self.r2 = self.x0[0] + 0.618*(self.x0[1]-self.x0[0]) if np.abs(self.x0[0]-self.x0[1]) < self.eps : return ((self.x0[0]+self.x0[1])/2,self.func((self.x0[0]+self.x0[1])/2)) else: return self.run() if __name__ == "__main__": result = Minimize_Golden(func = lambda x:x**2+2*x-150).run() print(result)
示例运行结果
by CyrusMay 2020 05 01
住在我脑中
在我心里钻洞
有些人变成相片
堆在角落
灰尘像雪一般冰冻
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算