6

1 つの変数で単純な非線形最小化問題を解こうとしています。

from scipy.optimize import minimize
import math

alpha = 0.05
waiting = 50
mean_period = 50
neighborhood_size = 5

def my_func(w):
    return -(2/(w+1) + alpha*math.floor(waiting/mean_period))*(1-(2/(w+1) + alpha*math.floor(waiting/mean_period)))**(neighborhood_size-1)

print minimize(my_func, mean_period, bounds=(2,200))

それは私に与えます

ValueError: length of x0 != length of bounds

入力を間違えていませんか?どのようにフォーマットすればよいですか?

境界を削除すると、次のようになります。

status: 2
  success: False
     njev: 19
     nfev: 69
 hess_inv: array([[1]])
      fun: array([-0.04072531])
        x: array([50])
  message: 'Desired error not necessarily achieved due to precision loss.'
      jac: array([-1386838.30676792])

関数はそのように見えるため、関心のある極大値で解を制限する境界が必要です。

4

1 に答える 1