学习过程,把代码过程较好的代码段做个记录,如下的代码段是关于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]

最新文章

  1. SQL SERVER 2012启动失败 because upgrade step 'SSIS_hotfix_install.sql' 失败
  2. linux时钟基本概念、CST与UTC、以及NTP简单设置
  3. POI-HSSF and POI-XSSF - Java API To Access Microsoft Excel Format Files
  4. php与ascii码
  5. ajax跨域请求带cookie
  6. bind的用处
  7. 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取
  8. 1106关于解决erp单个商品同步的问题
  9. &lt;a&gt;元素生成多个&lt;a&gt;的问题,元素标签结尾影响
  10. C# Dapper 轻量ORM调试对SQLServer
  11. java多线程的常见例子
  12. js得到规范的时间格式函数,并调用
  13. SpringBoot(8) SpringBoot过滤器Filter
  14. 编译:ffmpeg,精简ffmpeg.exe
  15. python - psutil 系统信息模块
  16. 微软Office Online服务安装部署(一)
  17. Alpha冲刺 - (5/10)
  18. 【EatBook】-NO.2.EatBook.2.JavaArchitecture.1.001-《修炼Java开发技术在架构中体验设计模式和算法之美》-
  19. ftp服务部署
  20. Linux free命令使用及解析

热门文章

  1. API调试工具--------Postman
  2. centos7安装Redis5.0.5
  3. 【C#】使用C# 读取Http的Post数据
  4. IfcMaterial
  5. 【GMT43智能液晶模块】例程十七:LAN_UDP实验——以太网数据传输
  6. kerberos相关
  7. 工控随笔_23_WinCC报Application CCArchiveConnMon.exe could not establish a connection to the Win CC license server
  8. linux 下core文件生成、路径、格式设置及调试
  9. iperf—流量测试
  10. Mysql 添加用户并授所有权