scipy.optimize.minimize -- 如何在其中一个边界是Numpy数组时指定边界

3

我正在使用scipy.optimize.minimize来运行优化。

sig_init = 2
b_init = np.array([0.2,0.01,0.5,-0.02])
params_init = np.array([b_init, sig_init])
mle_args = (y,x)
results = opt.minimize(crit, params_init, args=(mle_args))

问题是,我需要对sig_init设置边界。但是opt.minimize()要求我针对每个输入参数指定边界。但是我的一个输入是一个numpy数组。
如何在其中一个输入是numpy数组的情况下指定边界?

crit 的定义是什么? - bnaecker
1个回答

1
首先,scipy.optimize.minimize期望其第二个参数x0为一个扁平化的数组(文档)(这意味着它要优化的函数也接受一个扁平化的数组和可选的额外参数)。因此,据我所知,您需要提供类似以下的内容:
 b_init = [0.2,0.01,0.5,-0.02]
 sig_init = [2]
 params_init = np.array(b_init + sig_init])

为了使优化工作,您需要为数组中的每个标量提供边界。例如,如果您想在sig上设置[-1,1]范围并且不想在b上设置范围,则可以使用以下基本示例:
bounds = [(-np.inf, np.inf) for _ in b_init] + [(-1, 1)]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接