首页 > 解决方案 > 寻找函数的最佳输入变量(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()

标签: python-3.xloopsscipy-optimize

解决方案


一个想法是使用类似于人工智能中使用的优化器的东西,这基本上意味着你尝试一个,记录结果,然后尝试另一个,看看它是如何变化的。如果第二个更好,例如,您将变量 1 设为更大的数字,您可以继续这样做。所有其他变量都相同,直到找到局部最小值。这可能不会完美地找到它,但通常它会,特别是在你拥有的参数很少的情况下,我怀疑它应该是一个问题。一个更简单的解决方案是使用线程或多处理来加速暴力破解的过程


推荐阅读