我正在寻找在给定参数dim的情况下,对于哪个(x)最小的函数。
这是功能:
def func(x, dim):
return np.abs(np.abs(np.mean(np.sqrt(np.sum(np.diff(
np.random.rand(100000,dim,2)/x, axis=2)**2, axis=1))))
- 1/3)
这是它的外观:
for xx in np.arange(1,5,0.1):
plt.scatter(xx, func(xx,2), color='blue')
但是当我尝试找到应该在1.5左右的x值时,结果非常接近我的x0猜测(这里是1.0)。
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
params = minimize(func, x0=1, args=(2))
我也尝试了不同的求解器,但无法将其最小化。
答案 0 :(得分:1)
您的功能需要确定性才能发挥最大作用。因此,您需要删除对np.random.rand
的呼叫。一种解决方案是在开始时生成一次随机数,并在整个最小化过程中对其进行修正。