如何找到求解微分方程的最佳参数?

数据挖掘 Python 优化 执行 参数估计 范围
2022-02-28 16:06:43

我有一个微分方程:

def func(Y, t, r, p, K, alpha):
    return r * (Y ** p) * (1 - (Y / K) ** alpha)

我想找到适合(r,p,K,alpha)的最佳参数。我尝试使用曲线拟合,但太糟糕了,这是我的代码

# I chose the value of maxfev randomly
popt, pcov = curve_fit(func, df.index, df.Value,method='lm',maxfev = 8000)

t = np.linspace(0, len(df), len(df))
y0 = popt[0]
params = (popt[1], popt[2], popt[3], popt[4]) # r, p, K, alpha
sol = odeint(func, y0, t, args=params)

这是情节:

在此处输入图像描述

注意:这是我的真实数据的样子:

在此处输入图像描述

我在寻找什么(r、p、K 和 alpha)的最佳值,如何找到它们?

1个回答

如果没有其他可能,您可以尝试使用遗传算法。