0
假设我有一个函数,其行为与数据值的行为不同(即:使用条件)。是否可以使用fmin
来优化此功能,以便找到最大化输出的值?Scipy fmin使用条件优化函数
这就是为什么我目前有:
def bogus_function(x):
if x[0] > 5 or x[1] > 5:
return 20
elif x[1] > 2:
return x[0]*x[1]
else:
return -1
test = lambda x: -bogus_function(x)
results = fmin(test,[0,0])
这是它被“卡住”,因为印刷的结果来看,在优化过程中,该算法尝试相同的初始猜测不改变的值。
Optimization terminated successfully.
Current function value: 1.000000
Iterations: 16
Function evaluations: 63
>>> results
(array([ 0., 0.]),
[array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.]),
array([ 0., 0.])])
在这种情况下,最佳bogus_function
值为:[5,5],这使得等于25.任何想法,如果那种优化是可能的最终最大值?谢谢!
谢谢你,我改变了函数,使它是连续的,并且使用SLSQP方法最小化以在输入上放置边界。 – romsearcher