簡體   English   中英

為什么 scipy.optimize.minimize 找不到最小值?

[英]Why does scipy.optimize.minimize not find the minimum?

在給定參數dim的情況下,我正在尋找以下function最小的(x)。
這是 function:

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))

我也嘗試了不同的求解器,但我無法將其最小化。

您的 function 需要確定性才能使最小化起作用。 因此,您需要刪除對np.random.rand的調用。 曾經的解決方案可能是在開始時生成這些隨機數並在整個最小化過程中修復它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM