问题描述
我正在尝试使用遗传算法找到模型的最佳 5 个参数(微分方程的解)来拟合时间序列。
我使用 Scikit-Opt 遗传算法 (https://scikit-opt.github.io/scikit-opt/#/en/README) 执行此操作,如下所示:
- 定义模型 --> model(a,b,c,d,e) 拟合时间序列 --> series
(model 给出了一个微分方程的解:一个与该系列长度相同的时间序列)
def fitness_func(a,e): error = sklearn.metrics.mean_squared_error(model(a,e),series) return error
- 使用 lb(下限)和 ub(上限)等一些参数构建 GA,这两个边界通过手动拟合已知:
sko.GA.GA(func = fitness_func0,n_dim = 5,size_pop = 100,max_iter = 50,lb = [-0.5,-0.3,0.01,0.0001,0.1],ub = [-0.01,-0.01,0.5,0.0625,10],precision = 1e-4,prob_mut = 0.2)
- 运行 GA:
best_x,best_y = ga.run()
bext_x 是使均方误差最小化的 5ple 参数 (a,e) 和 best_y 是模型的 best_x 参数的均方误差值
当我运行代码时,它可以工作(我的意思是,生成 5 个参数,求解模型并计算解与 系列 之间的均方误差以找到最小化它的参数)但是它没有优化错误并且给出的参数也不适合该系列。
即使我进行手动拟合,我也发现了比遗传算法发现的最佳均方误差
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)