使用Nelder-Mead方法从scipy.optimiz公司

2024-09-30 08:17:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用时遇到问题scipy.optimize.minimize.最小化从Python2.7。我要打印的是每个函数求值的x值。但是,它返回的结果只给出了与迭代相对应的x值。有办法吗?谢谢!在

这是密码

import math
import sys
from scipy import optimize
f_NMO=open('output_NMO.txt','w')

def rosenbr(x):
    x1 = x[0]
    x2 = x[1]
    f = pow((x2-pow(x1,2)),2)/0.01+pow((x1-1),2)
    return f

xi2 = [5,5]
def cb1(r1):
    f_val1=rosenbr(r1)
    global best1
    best1 = 300
    global ctn1
    ctn1 += 1
    if f_val1 < best1:
        best1 = f_val1
    f_NMO.write("%.0f" % ctn1 + " , fun=" + "%.8f" % f_val1  + " , best=" + "%.8f" % best1  + " , xa=" + "%.8f" % r1[0] + " , xb=" + "%.8f" % r1[1] + '\n')

r1=optimize.minimize(rosenbr, xi2, method='Nelder-Mead', tol=1e-6, callback=cb1, options={'maxfev': 5000, 'disp': True, 'return_all': True})

Tags: importreturndefscipyoptimizex1x2r1

热门问题