如何创建具有可变变量的目标函数?
我正在尝试使用许多变量优化某个函数,所有变量都具有不同程度的不确定性。
result = opt.minimize(fObj,x0,method='nelder-mead',
options={'xtol':1e-1})
fObj 有很多变量,比如 a、b、c、d、e、f、g 等。但是,由于我的目标函数中的信息,只有同时优化 3 个变量才有意义。所以我想通过改变 a、c 和 d 以及下一个 a、d 和 f 来进行游戏。
我想创建一个只能有两个输入的函数:
- 要优化的变量(3 个字符串的数组?)
- 它们的起始值
我正在考虑的选项是通过全局变量为 fObj 提供我所有变量的默认值,并包含一个带有变量名的全局字符串以替换为 exec() 函数。
def fObj(x):
global a, b, c, d, e, f, g, h, VarList
# some hocus pocus that reads VarList
# e.g.
# VarList = ['c', 'd', 'f']
# c = x[0]
# d = x[0]
# f = x[0]
return someMathematiclOutputInvolvingAllVars
实现此目标的最佳/最 Pythonic 方式是什么?