scipy.optimize.brute函数:如何通过一组特定的测试?

时间:2017-12-04 20:13:08

标签: python scipy range brute-force

我使用scipy.optimize.brute来获取函数的最小值。 我有4个参数,如果每个参数有10个样本(10 * 10 * 10 * 10 = 10 ^ 4个排列),它的排列将是巨大的。我想把它归结为< 100个排列。 因此,我只想测试一些特定的值。

这是我现在的程序:

def f1(x,* params):
     a,b,c = params      返回x [0] + x [1] + x [2] + x [3]

  rranges =  [ slice(0, 1, 0.1),              #10 values
           slice(0, 1, 0.1),           #10 values
           slice(0, 100, 10),         #10 values
           slice(0, 100, 10) ]       #10 values

params = (1,2,3)
bruteforce = spo.brute(f1, rranges, args=params, full_output=True, finish=None)

如何修改rranges以便我只测试我想要的这些值,例如:

 rranges =  (0, 0.2, 0.9, 1.0)
            (0.3, 0.4, 0.7, 0.9)
            (10, 15, 90, 95)
            (25, 30, 75, 80)

我阅读了scipy文档(https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.optimize.brute.html

它说"范围元组的每个组件可以是切片对象或给出一系列值的二元组,例如(0,5)。如果组件是切片对象,则brute直接使用它。"

您对如何仅测试该范围的某些值有任何建议吗?

非常感谢。

0 个答案:

没有答案