首页 > 解决方案 > 如何在 Python 中探索不同的参数值以最大化函数返回的值

问题描述

如果我有一个函数返回一个浮点数,表示例如交易股票产生的利润(尽管我在各种任务中遇到过这样的问题),并且利润根据传递给函数的各种参数而变化,是否有一个 Python 库可以用来有效地探索参数空间吗?

我可以采用一种简单的方法,尝试每个参数值,但这可能需要很长时间,具体取决于参数的数量和值的范围。

我听说过 MCMC 以及通过多个步骤探索参数的想法,其中可能会尝试极端值,并且可以反转回更好的值,但我不知道它是否适用于 MCMC似乎涉及概率(和贝叶斯统计) - 如果存在,我正在寻找相当简单的东西。

我在想像下面这样的东西,其中参数具有一系列可能的值,并且有一个函数以比尝试每个组合更有效的方式尝试参数值。这可能使用相当简单的 Python 库吗?

# define a range of possible values for parameters
a = [2.0,2.1,2.2,2.3,2.4]
b = [1.2,1.3,2.4]
c = [float(x) for x in range(1,1000)]
d = [112.0,113.0,114.0]
e = [3.0,3.1]
f = [9.0,10.0,11.0,12.0]
g = [float(x) for x in range(5,36)]


def profit(a,b,c,d,e,f,g):
    # carry out calculations using parameters
    return profit

n_steps = 1000

def optimize(n_steps,a,b,c,d,e,f,g):
    for x in range(0,n_steps):
        # try profit() using different values within the range of each parameter a-g in attempt to find those that produce largest profit
        # i.e. for each step in n_step call profit() with one float value for each of a-g
    return a,b,c,d,e,f,g # return set of parameters producing largest profit within n_steps 

标签: optimizationparameters

解决方案


推荐阅读