我正在寻找正确的方法来使用可变数量的参数作为 scipy 中优化器的输入。
我有一组输入参数 p1,...,pn,并使用函数 func(p1,...,pn) 计算质量标准。我想最小化这个值。
输入参数为 0 或 1,表示是否应该使用它们。我不能简单地从参数列表中删除所有未使用的项,因为我的质量标准函数要求它们为“0”以从方程中删除未使用的项。
def func(parameters):
...calculate one scalar as quality criteria...
solution = optimize.fmin_l_bfgs_b(func,parameters,approx_grad=1,bounds=((0.0, 5.0),...,(0.0,5.0)) # This will vary all parameters
在我的代码中,优化器运行没有错误,但当然所有给定的参数都会更改以实现最佳解决方案。
有没有办法让 func 有 10 个输入参数,但优化器中只使用了 5 个?
到目前为止,我只能考虑以一种不需要未使用参数的“0”输入的方式更改我的 func 定义。我会很感激任何如何避免这种情况的想法。
非常感谢您的帮助!