【发布时间】:2013-09-20 12:02:20
【问题描述】:
如何创建具有可变变量的目标函数?
我正在尝试优化具有许多变量的某个函数,所有变量都具有不同程度的不确定性。
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 方式是什么?
【问题讨论】:
-
对于初学者来说,使用
exec可能从来都不是最好的或最 Python 的方式。 -
那么你最后是怎么做的?
标签: python function variables python-2.7 dictionary