python-3.x - 寻找函数的最佳输入变量(Python
问题描述
我有一段代码可以做一件事。在该代码中,我有多个变量,我可以更改这些变量以获得最佳的最终结果。
inputVariable1 = [-1,-2,0,1,2] # All the possible input variablels in can go over
inputVariable2 = [-3,-1,-2,0,1,2,3]
inputVariable3 = [0,1,2,3,4,5,6,7,8,9,10]
def Function(inputVariable1,inputVariable2,inputVariable3):
# doing some stuff with those variabels, in this simplified case I want to find the biggest
# possible sum of those numbers (real code is a bit more complex)
endResult = inputVariable1 + inputVariable2 + inputVariable3
return endResult
因此,我想检查这些 inputVariabels 的所有可能组合(我的代码中有 20 个,并且代码每次需要 10 秒来计算)并找到可以产生最佳结果或至少达到最小结果的组合。
例如测试:Function(-1,-3,0), Function(-2,-3,0),...,Function(2,3,9),Function(2,3,10) 但循环遍历每个可能的组合似乎真的效率低下,有没有更好的解决方案?
我一直在环顾四周,真的可以找到任何我可以使用或理解的东西(仍在学习)。
我看过循环等,但是有 8 个变量,每 6 个可能的值可供选择,计算每种可能性大约需要 194 天,我认为并希望可以更有效地完成。
提前谢谢。
编辑1:计算了一堆东西,每个变量代表计算的权重,这些变量的总和将决定是否执行某个动作。
例如
while i in range(0,len(data)):
if x[i] > y[i]:
sum += inputVariable1
if x[i] < z[i]:
sum += inputVariable2
...
if sum > 5:
doAction()
else:
doOtherAction()
解决方案
一个想法是使用类似于人工智能中使用的优化器的东西,这基本上意味着你尝试一个,记录结果,然后尝试另一个,看看它是如何变化的。如果第二个更好,例如,您将变量 1 设为更大的数字,您可以继续这样做。所有其他变量都相同,直到找到局部最小值。这可能不会完美地找到它,但通常它会,特别是在你拥有的参数很少的情况下,我怀疑它应该是一个问题。一个更简单的解决方案是使用线程或多处理来加速暴力破解的过程
推荐阅读
- mql4 - 如何编写一个 mt4 指标,在每小时蜡烛的前 6 小时绘制矩形和水平线
- android - Xamarin android过滤recyclerview数据
- tabulator - 如何在单元格中编辑制表日期?
- angular - 通过服务将参数传递给 ngOnInit
- typescript - 如何获取 tsc 将编译的 Typescript 文件列表?
- sqlite - SQL 数据库加密
- html - 重新设置样式使其无用
- r - 运行决策树时 RStudio 出错(mac)
- c# - 如何在 xamarin 表单中显示条目警报
- c++ - 我有一个游戏的主要内容,我正在尝试使用 .go() 方法