Python中的数值多元优化

时间:2018-07-25 02:26:42

标签: python optimization numerical-methods

我有一个(辅助)功能F,

def F(P, t, r, param):
     '''Parameters of my problem are stored in "param" list. Other inputs of 
       F: 
       - P: an input vector
       - t: current observation index
       - r: a fixed scalar parameter.'''

     ... #Some operations using the data list Y

     return f, P_updated 
给出数据列表Y = [y_t],t = 1、2,... T的

可以迭代地用于计算目标函数obj_fun,如下所示:

给出一组参数值和P的初始值P_0,该函数迭代地计算输出值f,并更新P的值:

P = P_0
obj_fun = 1
for t in range(1,T):
     f, P = F(P, t, r, param)
     obj_fun *= f

不用说obj_fun的最终值取决于param中的特定参数值。我的目的是针对(多维)参数优化obj_fun的最终值。

我认为在使用任何优化程序包或方法之前,最好通过定义另一个函数来将问题转换为更简单且非迭代的形式,该函数将F和上述循环嵌入到程序中,并最终生成目标函数;像这样的东西:

def Obj_Fun(P_0, param):
     P = P_0
     obj_fun = 1
     for t in range(1,T):
          f, P = F(P, t, r, param)
          obj_fun *= f
     return obj_fun

由于维数的诅咒,在多维参数网格上搜索效率很低。我没有Obj_Fun的函数形式,因此没有基于解析导数的算法是可行的。我想知道是否有适合这种优化的Python包?

0 个答案:

没有答案