一维搜索之黄金分割法
黄金分割法(0.618法)优化的原理
例题
这里用黄金分割法求解 y=x2−7x+10y = x^2-7x+10y=x2−7x+10 的最优解,,初始区间 [a,b]=[2,8][a,b]=[2,8][a,b]=[2,8], 收敛精度为 0.001。
kkk | aaa | xk1x_{k}^{1}xk1 | xk2x_{k}^{2}xk2 | bbb | f(xk1)f(x_{k}^{1})f(xk1) | f(xk2)f(x_{k}^{2})f(xk2) | [a,b][a,b][a,b] | b-a |
---|---|---|---|---|---|---|---|---|
1 | 2 | – | – | 8 | – | – | [2,8][2,8][2,8] | 6 |
222 | 222 | 4.2924.2924.292 | 5.7085.7085.708 | 888 | −1.6227359999999997-1.6227359999999997−1.6227359999999997 | 2.62526400000000142.62526400000000142.6252640000000014 | [2,5.708][2, 5.708][2,5.708] | 3.7083.7083.708 |
333 | 222 | 3.4164563.4164563.416456 | 4.2915444.2915444.291544 | 5.7085.7085.708 | −2.2430204000639993-2.2430204000639993−2.2430204000639993 | −1.6234580960639988-1.6234580960639988−1.6234580960639988 | [2,4.291544][2, 4.291544 ][2,4.291544] | 2.2915442.2915442.291544 |
4 | 2.8753698082.8753698082.875369808 | 3.4163483493443.4163483493443.416348349344 | 3.7505654586563.7505654586563.750565458656 | 4.2915444.2915444.291544 | −2.243002401342528-2.243002401342528−2.243002401342528 | −2.2429843830315406-2.2429843830315406−2.2429843830315406 | [2.875369808,3.750565458656][ 2.875369808 , 3.750565458656][2.875369808,3.750565458656] | 0.87519565065600040.87519565065600040.8751956506560004 |
– | – | – | – | – | – | – | – | – |
18 | 3.4989636647843513.4989636647843513.498963664784351 | 3.49960490195589863.49960490195589863.4996049019558986 | 3.50000105895193333.50000105895193333.5000010589519333 | 3.5006422961234813.5006422961234813.500642296123481 | −2.2499998438975357-2.2499998438975357−2.2499998438975357 | −2.2499999999988773-2.2499999999988773−2.2499999999988773 | [3.4996049019558986,3.500642296123481][ 3.4996049019558986 , 3.500642296123481 ][3.4996049019558986,3.500642296123481] | 0.00103739416758230620.00103739416758230620.0010373941675823062 |
19 | 3.49960490195589863.49960490195589863.4996049019558986 | 3.5000011865279153.5000011865279153.500001186527915 | 3.50024601155146443.50024601155146443.5002460115514644 | 3.5006422961234813.5006422961234813.500642296123481 | −2.249999999998593-2.249999999998593−2.249999999998593 | −2.2499999394783163-2.2499999394783163−2.2499999394783163 | [3.4996049019558986,3.5002460115514644][ 3.4996049019558986 , 3.5002460115514644 ][3.4996049019558986,3.5002460115514644] | 0.0043951973144658040.0043951973144658040.004395197314465804 |
代码实现
import matplotlib.pyplot as plt
import numpy as np
from pylab import *#目标函数
def function(x):y = x**2 - 7 * x + 10return y
#黄金分割法
def GoldenBorder(a, b, accuracy):x1 = a + 0.382*(b - a)x2 = a + 0.618*(b - a)fx1 = function(x1)fx2 = function(x2)print( "a=", a,"x1=", x1, "x2=", x2 , ",b=", b,",f(x1)=",fx1, ",f(x2)=", fx2, )if fx1 < fx2:a = ab = x2else:a = x1b = baccuracy = b - aprint("NewRange[", a, ", ",b,"]","accuracy=", b-a)return a, b ,accuracya = 2
b = 8
value = []
accuracy = b - a
epoch = 0
accuracies = []
ys = []
epoches=[]
xs = []
while accuracy > 0.001:epoch += 1print("-"*100)print("Epoch:",epoch)a, b, accuracy = GoldenBorder(a, b, accuracy)accuracies.append(accuracy)ys.append(function( a + (b - a) / 2 ))epoches.append(epoch)xs.append(a + (b - a) / 2)
x = a + (b - a) / 2
y = function(x)
print("-"*100)
print("最优点:x*=", x,",f(x*)=", y)
plt.title(' Golden Section Search ')plt.subplot(2,1,1)
plt.plot(epoches,accuracies, ":o", label = 'accuracy', color="blue")
xticks(np.linspace(0,19,20,endpoint=True))
plt.ylabel('f(x)')
plt.legend()plt.subplot(2,1,2)
plt.plot(ys, "-.o", label = 'f(x)', color="red")
xticks(np.linspace(0,19,20,endpoint=True))
plt.xlabel('epoch')
plt.ylabel('accuracy')
plt.legend()
plt.show()
X = np.linspace(3, 4, 20)
Epoch = np.linspace(0, 19,20)
X, Epoch= np.meshgrid(X, Epoch)
Y = X**2 - X * 7 + 10
fig = plt.figure(figsize = ((8,6)))
ax = fig.gca(projection='3d')
ax.plot_surface(Epoch ,X , Y, color="yellow", alpha=0.5)
ax.plot(epoches ,xs , ys,"-.o",color="blue")
xticks(np.linspace(0,19,20,endpoint=True))
ax.set_xlabel('epoch') #设置坐标轴标签
ax.set_ylabel('x')
ax.set_zlabel(' f(x) ')
plt.show()
!
一维搜索之黄金分割法相关推荐
- 一维搜索方法/黄金分割法(附matlab代码)
一维搜索方法中的黄金分割法(附matlab代码) 一维搜索方法:一维搜索,又称一维优化,是指求解一维目标函数 f(X) 最优解的过程,分为试探法和插值法. 黄金分割法:属于一维搜索方法中的试探法,适用 ...
- 黄金分割法_python
新手,求大佬指正 我的问题: fx=str_fx.replace("x","%(x)f") # 所有的"x"换为"%(x)func ...
- 斐波那契法(Faboncci Method)求函数最大值的Python程序
斐波那契法(Fibonacci method)又称斐波那契分数法,是一种一维搜索的区间消去法(区间消去法(interval elimination method)求单变量函数无约束极值的较实用的一类直 ...
- matlab三点确定抛物线,[转]matlab编写的进退法,黄金分割法,抛物线法(二次插值法),wolfe不精确一维搜索...
这是我最优化方法课程的编程作业,贴来和大家分享,后续会继续发来一些最优化的程序.. 以下程序由matlab编写 程序简介 jintuifa.m 进退法,用于确定下单峰区间.根据最优化方法(天津大学出版 ...
- 一维搜索-黄金分割法matlab实现
一维搜索-黄金分割法matlab实现 前言 1.黄金分割法 1.1 黄金分割法的定义 1.2 黄金分割法的搜索过程 2.黄金分割matlab实现 2.1 求f(x)=x^2-7*x+10的极值 2.2 ...
- matlab用进退法写程序,matlab编写的进退法,黄金分割法,抛物线法(二次插值法),wolfe不精确一维搜索...
这是我最优化方法课程的编程作业,贴来和大家分享,后续会继续发来一些最优化的程序.. 以下程序由matlab编写 程序简介 jintuifa.m 进退法,用于确定下单峰区间.根据最优化方法(天津大学出版 ...
- 精确一维搜索——黄金分割法(0.618)
文章内容摘自UESTC最优化张老师的PPT 代码:https://github.com/LHesperus/optimization-algorithm/tree/master/unconstrain ...
- 最优化课堂笔记05——一维最优化方法(含重点:黄金分割法)
5-1 一维搜索区间的确定 搜索区间只是适用于单峰区间 . 例子 5.2 黄金分割法(重点) 上面的a与b都会跟着计算的推进而变化的 例子重点 5.3二次插值法 总结: 5.4 切线法(牛顿法) 5. ...
- c语言张振国实验报告,基于VisualC的黄金分割法程序设计实验报告.doc
基于VisualC的黄金分割法程序设计实验报告 新疆农业大学机械交通学院 实验报告 基于Visual C 的黄金分割法程序设计 一 .实验目的 1. 加深对机械优化设计方法的基本理论和算法步骤的理解: ...
- 【最优化导论】一维搜索方法案例
案例1--一维搜索方法 函数为: f(x)=8e1−x+7log(x)f(x)=8e^{1-x}+7log(x)f(x)=8e1−x+7log(x), log为自然对数. 利用MATLAB绘制函数在区 ...
最新文章
- python实训项目-Python开发基础-项目实训-在线投票系统.pptx
- WinSocket简单编程实验
- 各地实时摄像头_智能摄像头——城市治安防控的“天眼”
- 机器学习-算法背后的理论与优化(part4)--结构风险最小(上)
- python序列类型举例说明_Python(第八课,序列类型)
- 解剖SQLSERVER 第六篇 对OrcaMDF的系统测试里避免regressions(译)
- js f12就关闭标签、禁止右击,感兴趣的可以看一下
- mysql show status 过滤_在线更改复制过滤选项的方法
- Linux 禁止和开启 ping 的方法
- 博客园自定义样式(标题 h1 h2 h3)
- centos7安装lnmp
- 前端项目总结与分享(PPT整理)
- orcad导出BOM
- ElasticSearch使用入门及拼音搜索介绍
- 短视频运营小技巧,掌握推荐机制很重要,吸粉引流也不难
- win10 图形驱动安装失败解决方法
- 【ASML】EUV光刻技术PPT
- 【MatLab】矩阵for循环与矩阵乘法运算速度对比
- js数组遍历方法总结与对比
- 仙剑五手游服务器维护,仙剑奇侠传五手游进不去怎么办 仙剑奇侠传五黑屏闪退解决方法...
热门文章
- 微信开放平台开发第三方授权登陆(一):开发前期准备
- Android微信页面缓存清理,安卓用户如何彻底清理微信大量缓存?4招让你彻底解决内存烦恼...
- 安徽财贸职业学院计算机信息管理怎么样,让别人看看安徽财贸职业学院计算机系汪永涛辅导员如何对待我的!!...
- html自动改成繁体怎么做,如何将繁体字转换成简体字,繁体字转换器在线转换,简体字转换为繁体字...
- python抢购软件/插件/脚本附完整源码
- 硬件电路学习之开尔文电桥双臂讲解
- 修改ubuntu终端显示目录和计算机名称(转)
- css向右箭头形状按钮,详解Bootstrap的纯CSS3箭头按钮样式
- 人工智能神经网络概念股,神经网络芯片概念股
- 微信小程序Cede获取 PC电脑版微信实现Code的获取