Python illustrating Downhill simplex method for minimizing the user-supplied scalar function的代码
学习过程,把代码过程较好的代码段做个记录,如下的代码段是关于Python illustrating Downhill simplex method for minimizing the user-supplied scalar function的代码,应该能对各位朋友有较大用途。
''' x = downhill(F,xStart,side,tol=1.0e-6)
Downhill simplex method for minimizing the user-supplied
scalar function F(x) with respect to the vector x.
xStart = starting vector x.
side = side length of the starting simplex (default is 0.1)
'''
from numpy import zeros,dot,argmax,argmin,sum
from math import sqrt
def downhill(F,xStart,side=0.1,tol=1.0e-6):
n = len(xStart) # Number of variables
x = zeros((n+1,n))
f = zeros(n+1)
# Generate starting simplex
x[0] = xStart
for i in range(1,n+1):
x[i] = xStart
x[i,i-1] = xStart[i-1] + side
# Compute values of F at the vertices of the simplex
for i in range(n+1): f[i] = F(x[i])
# Main loop
for k in range(500):
# Find highest and lowest vertices
iLo = argmin(f)
iHi = argmax(f)
# Compute the move vector d
# Check for convergence
if sqrt(dot(d,d)/n) < tol: return x[iLo]
# Try reflection
fNew = F(xNew)
if fNew <= f[iLo]: # Accept reflection
x[iHi] = xNew
f[iHi] = fNew
# Try expanding the reflection
xNew = x[iHi] + d
fNew = F(xNew)
if fNew <= f[iLo]: # Accept expansion
x[iHi] = xNew
f[iHi] = fNew
else:
# Try reflection again
if fNew <= f[iHi]: # Accept reflection
x[iHi] = xNew
f[iHi] = fNew
else:
# Try contraction
fNew = F(xNew)
if fNew <= f[iHi]: # Accept contraction
x[iHi] = xNew
f[iHi] = fNew
else:
# Use shrinkage
for i in range(len(x)):
if i != iLo:
f[i] = F(x[i])
print "Too many iterations in downhill"
print "Last values of x were"
return x[iLo]
最新文章
- SQL SERVER 2012启动失败 because upgrade step 'SSIS_hotfix_install.sql' 失败
- linux时钟基本概念、CST与UTC、以及NTP简单设置
- POI-HSSF and POI-XSSF - Java API To Access Microsoft Excel Format Files
- php与ascii码
- ajax跨域请求带cookie
- bind的用处
- 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取
- 1106关于解决erp单个商品同步的问题
- <;a>;元素生成多个<;a>;的问题,元素标签结尾影响
- C# Dapper 轻量ORM调试对SQLServer
- java多线程的常见例子
- js得到规范的时间格式函数,并调用
- SpringBoot(8) SpringBoot过滤器Filter
- 编译:ffmpeg,精简ffmpeg.exe
- python - psutil 系统信息模块
- 微软Office Online服务安装部署(一)
- Alpha冲刺 - (5/10)
- 【EatBook】-NO.2.EatBook.2.JavaArchitecture.1.001-《修炼Java开发技术在架构中体验设计模式和算法之美》-
- ftp服务部署
- Linux free命令使用及解析
热门文章
- API调试工具--------Postman
- centos7安装Redis5.0.5
- 【C#】使用C# 读取Http的Post数据
- IfcMaterial
- 【GMT43智能液晶模块】例程十七:LAN_UDP实验——以太网数据传输
- kerberos相关
- 工控随笔_23_WinCC报Application CCArchiveConnMon.exe could not establish a connection to the Win CC license server
- linux 下core文件生成、路径、格式设置及调试
- iperf—流量测试
- Mysql 添加用户并授所有权