鉴于模型蛮力的参数数量是不可能的,我正在尝试使模拟适合经验数据。有哪些资源可用于模拟? 模拟是输出列表的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
我希望这种拟合的输出是模拟的最佳参数的列表。
答案 0 :(得分:1)
当然,您可以使用scipy优化,实际上还可以使用比其他答案中提到的库强得多的其他库,例如Mystic(https://github.com/uqfoundation/mystic)或lmfit(https://github.com/lmfit/lmfit-py)。一对。
您的目标函数是数学函数,模拟结果,外部程序的输出还是炸薯条制造机的结果均无关紧要。您应该问自己的唯一问题是:
这两个问题的答案可能会将您引向一组特定的求解器:即,局部优化(速度更快,但您冒着获得局部最小值的风险)或全局优化(进行更多的功能评估以探索搜索空间,但是可能会更适合您。)
也就是说,您的目标函数可以轻松地重写为优化算法的目标:
go.mod
安德里亚。
答案 1 :(得分:0)
您可以使用随机方法:
无论如何,您都需要一个参数模型。当您将其写入问题时,对您有帮助。