optimization - 如何在 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
解决方案
推荐阅读
- uitableview - 在swift 4中的单元格中发送消息后滚动到tableview的底部
- wordpress - nginx 重定向返回 301 代码而不是最后一页
- scope - 通过 sub 中的名称获取符号的值
- php - 从 PHP 发送 SMTP 电子邮件
- sql - 'DefaultCatalog' 未声明。由于其保护级别,它可能无法访问。加上几个类似的错误
- javascript - 如何创建一个简单的解决方案来绕过声音而不是自动播放?
- android - Android 解析设置
- unit-testing - 如何用 axios 测试异步功能?
- jenkins - 如何检查 Jenkins 构建是否正在等待输入?
- python - 将步长添加到线性优化