optimize.leastsq忽略函数内的条件

时间:2017-12-08 10:49:53

标签: python scipy least-squares

我尝试使用optimize.leastsq来查找2个参数,但我有条件 所以我将条件添加到计算我的模型的函数中,如果条件被破坏,将返回一个非常大的答案,因此MSE将是巨大的。 但它不起作用:

data是我的实际数据集,p0是2个参数列表:

p1, success = optimize.leastsq(errfunc, p0[:], args=(data))
errfunc = lambda p, y: (season1(p[0],p[1]) - y)**2

def season1(a, b, i=range(1, 150)):
    temp=[0.1875-0.1875*0.01, 0.1875+0.1875*0.01]
    S=0.999
    I=0.001
    R=0
    r=[0]
    for t in i:  
        S -= b*S*I             #Update S by the new t
        I = I+b*S*I-a*I    #Update I by the new t
        R += a*I  
        r.append(R)
    if R <= temp[1] and R >= temp[0]:
        print(R, a, b)
        return r
    return [1]*len(r)

0 个答案:

没有答案