【问题标题】:Finding optimal input variabels for a function (Python寻找函数的最佳输入变量(Python
【发布时间】:2021-07-26 17:41:12
【问题描述】:

我有一段代码可以做一件事。在该代码中,我有多个变量,我可以更改这些变量以获得最佳的最终结果。

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 秒来计算)并找到可以产生最佳结果或至少达到最小值的那个结果。

例如测试:函数(-1,-3,0),函数(-2,-3,0),...,函数(2,3,9),函数(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()

【问题讨论】:

  • 多重处理应该像下面的答案一样,真正帮助你的事业。也就是说,如果您确实需要所有可能输入变量的结果,那么除了计算它们之外,您无能为力。也许您可以尝试解释您要完成的工作。对于您的用例,可能有更智能的解决方案。目前它太笼统,无法深入思考您的问题。
  • 计算一堆东西,每个变量代表计算的权重,这些变量的总和将决定是否执行某个动作。例如``` while i in range(0,len(data)): if x[i] > y[i]: sum += inputVariable1 if x[i] 5: doAction() 其他: doOtherAction() ```

标签: python-3.x loops scipy-optimize


【解决方案1】:

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

【讨论】:

  • 谢谢,但是上面的例子被大大简化了,实际代码使用了大约 20 个输入变量,可以从几个值中选择。我已经花了几天时间手动寻找更好的结果,但这是一个非常乏味和缓慢的过程。但是多处理或类似的东西可能是一个不错的尝试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2013-03-31
  • 2011-12-31
  • 2017-05-18
相关资源
最近更新 更多