拟合模拟python

时间:2019-07-31 17:58:30

标签: python list optimization simulation

鉴于模型蛮力的参数数量是不可能的,我正在尝试使模拟适合经验数据。有哪些资源可用于模拟? 模拟是输出列表的python函数(不要误认为数学函数)。我希望此列表尽可能与其他列表(经验数据)接近。

我认为scipy.optimize不能很好地工作,因为它不是数学函数,而是模拟(不可能提供它的函数)。蛮力将需要大约5000次模拟,这是不切实际的。

def sim(conta = 0.2, recov = 0.01, D = 600, sig = 3, risk_aversion = 0.05, over_conf = 0.05, power_narr = 5, length = 125, n_k = 0.997, shocks = [8]+[0]*5+[8]+[0]*5+[15]+[0]*5+[40]+[0]*5+[40]+[0]*5, no_len = 25, u = [0.35,0.35,0.15,0.15], w = [1,1,0.1,0.1], ø = 0.9 ):


"""those are the parameters of the simulation, some are floats, others lists"""

"""
simulation going on here
"""

return my_list

我想通过更改参数使此列表适合另一个列表

我希望这种拟合的输出是模拟的最佳参数的列表。

2 个答案:

答案 0 :(得分:1)

当然,您可以使用scipy优化,实际上还可以使用比其他答案中提到的库强得多的其他库,例如Mystic(https://github.com/uqfoundation/mystic)或lmfit(https://github.com/lmfit/lmfit-py)。一对。

您的目标函数是数学函数,模拟结果,外部程序的输出还是炸薯条制造机的结果均无关紧要。您应该问自己的唯一问题是:

  1. 评估目标函数是否昂贵?如果需要半秒钟,那么即使蛮力也可以。我已经针对外部程序(水库模拟器)运行了scipy和Mystic,并且每次功能评估都很容易需要几个小时。
  2. 您的目标函数有很多本地最优值的可能性有多大?

这两个问题的答案可能会将您引向一组特定的求解器:即,局部优化(速度更快,但您冒着获得局部最小值的风险)或全局优化(进行更多的功能评估以探索搜索空间,但是可能会更适合您。)

也就是说,您的目标函数可以轻松地重写为优化算法的目标:

go.mod

安德里亚。

答案 1 :(得分:0)

您可以使用随机方法:

无论如何,您都需要一个参数模型。当您将其写入问题时,对您有帮助。

相关问题