2016-11-29 57 views
1

我想解決以下問題:查找最大的函數是一個最大的功能

X * = argmin F(MAX_ {J = 1,...,J} G_J(X )),

其中fg_j是已知的平滑的,凸的功能,並且x是一個標量。我也有分析梯度fg_j。是否可以在MatLab中使用fminunc(使用牛頓法)或其他解算器來查找解決方案?顯然max_{j=1,...,J} g_j(x)是不可區分的(除非有k這樣g_k(x) >= g_j(x)對所有j),但它是可微分的。因此,我不能直接使用fminunc,因爲它要求目標函數的梯度。如果我可以使用fminunc,我將如何繼續?

作爲示例,考慮f(x) = xJ=1,2,g_1(x) = (x-1)^2, g_j(x) = (x+1)^2。然後max g_1, g_2g_1g_2的上部信封。最小值位於x=0

注意:功能fminimax是接近我想要的。 fminimax解決

X * = argmin MAX_ {J = 1,...,J} G_J(X)。

+0

組合的最大值是單個函數中的最大值....最小值可以是單個函數中的最小值,也可以是兩個相交處的某個斷點。 –

+1

'fminsearch'不需要目標函數的梯度。它使用Nelder-Mead單純形算法 – AVK

+0

額外的組成使事情稍微複雜一點。 –

回答

0

我有一個可能的解決方案來解決我的問題。我們可以用平滑或最大的最大值代替最大功能,請參閱this article by John Cook。特別是,我們可以使用g(x,y;k) = log(exp(kx)+exp(ky))/y功能近似max(x,y)k是一個調整參數)。目標函數是可微分的,因此可以應用牛頓法(即fminunc)。