我使用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直接使用它。"
您对如何仅测试该范围的某些值有任何建议吗?
非常感谢。