0.618法
来源:互联网 发布:上古卷轴5捏脸数据ece 编辑:程序博客网 时间:2024/06/07 10:40
一、简介
0.618法又称黄金分割法,是优选法的一种。是在优选时把尝试点放在黄金分割点上来寻找最优选择。0.618法是根据黄金分割原理设计的,所以又称之为黄金分割法。优选法是一种求最优化问题的方法。
二、实现
# -*- coding: utf-8 -*-"""Created on Tue May 23 13:10:17 2017 0.618法 @author: Administrator"""import numpy as npimport matplotlib.pyplot as pltepsilon = 1e-3alpha = 0.618# -2 - 3def f(x): return np.e**(-x) + x**2def solve(a,b): count = 0 while b - a > 0: lam = a + (1 - alpha) * (b - a) mu = a + alpha * (b - a) print 'count: %d' % count print 'a: %f' % a print 'b: %f' % b print 'b-a: %f' % (b-a) print 'lambda: %f' % lam print 'mu: %f' % mu print '---------------------' if b - a < epsilon: return (a + b) / 2,f((a + b) / 2) elif f(lam) > f(mu): a = lam lam = mu mu = a + alpha * (b - a) elif f(lam) <= f(mu): b = mu mu = lam lam = a + (1 - alpha) * (b - a) count += 1def draw(ans): x = np.linspace(-2,3,1000) y = f(x) fig = plt.figure(figsize=(8,4)) ax = fig.add_subplot(111) ax.set_xlabel('x') ax.set_ylabel('y') ax.plot(x,y,color='r',linestyle='-.',label='f(x)') ax.scatter(ans[0],ans[1]) ax.legend(loc='upper right') fig.show() fig.savefig('a.png')def main(): ans = solve(-2.0,3.0) draw(ans) print ansif __name__ == '__main__': main()
阅读全文
0 0
- 0.618法
- 0.618法(golden ratio search)
- 【MATLAB】一维搜索之0.618法
- 非线性规划 黄金分割法(0.618法) MATLAB程序
- 精确线搜索之黄金分割法(0.618法)
- 优化方法(C++)——0.618法、平均值法、单纯形法
- 成功—失败法和0.618法结合求出局部极小值的C语言实现
- 0.618網絡空間
- 黄金分割数0.618
- 0.618最优分治
- 0.618 与 1.414
- 黄金分割数0.618
- 0.618算法的c++实现
- 黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处
- 黄金队列(黄金分割数0.618与美学有重要的关系。舞台上报幕员所站的位置大约就是舞台宽度的0.618处)
- 法
- 为什么Fibonacci数列相邻两项之比会趋于0.618?
- 选择排序法法
- 25.七-计算器类
- 关于JAVA中怎么读取和修改.properties文件中的值
- 舞动海报
- mybatis中 #$ 注入参数的不同
- 解决Android Studio运行编译时间久的最有效方案
- 0.618法
- maven多模块项目部署
- imcrop
- UML类图与类的关系
- 利用localtime_s函数格式化输出当地日期与时间
- socket client 使用特定网卡
- JAVA-17.1-反射
- Python3.5 + django1.10.+ 安装mysql失败解决方案:Error loading MySQLdb module: No module named 'MySQLdb'
- Docker基础入门及示例