最小化最小化界限

时间:2014-09-28 14:57:57

标签: python numpy scipy bounds minimization

我使用最小二乘最小化以适应大量参数,但是,结果并不令人惊讶,我认为这可能是由于最小化。 实际上,当我修改初始化术语时,结果是不同的......

我第一次尝试使用命令" xtol"来调整参数的初始值。它指定了近似解中所需的误差,但结果并不是更好,所以我想知道是否可以为每个参数指定边界。最后一个解决方案可能更准确吗?

此外,我需要拟合的术语是一系列的参数,或许有一种解决这个问题的最佳方法,而不是通过编写2个命令...

def residual_V2will2(vars, XA, YA, x0, y0, A2, donnees):
    aI = vars[0]
    aII = vars[1]
    modeleV2 = ma.masked_invalid(np.sqrt((XA-x0)**2 + (YA-y0)**2)**(1/2)*aI/(2*G)*((Kappa - 1/2. + \
    1)*np.sin(np.arctan(((YA-y0)/(XA-x0)))/2) + \
    1/2.*np.sin(np.arctan(((YA-y0)/(XA-x0)))*(-3/2.))) + np.sqrt((XA-x0)**2 + \
    (YA-y0)**2)*aII/(2*G)*((Kappa - 2)*np.sin(np.arctan(((YA-y0)/(XA-x0)))) + \
    np.sin(np.arctan(((YA-y0)/(XA-x0)))*(-1))) + A2) 
    return (donnees-modeleV2)

from scipy.optimize import leastsq
vars = [KI, A2, x0, y0]
out_V_west = sco.leastsq(residual_V2west, vars, args=(XAvect, YAvect, Vmvect))
print out_V_west

所以如果我跟着你,我必须有类似的东西:

def residual_V2west(vars, XA, YA, donnees):
    KI = vars[0]
    A2 = vars[1]
    x0 = vars[2]
    y0 = vars[3]
    modeleV2 =  ...
    penalization = abs(2.-modeleV2)*10000
    return (donnees-modeleV2 - penalization)

但似乎没有好转:(虽然我尝试玩惩罚的价值......

0 个答案:

没有答案