【发布时间】:2016-12-02 23:18:40
【问题描述】:
我想解决以下问题:
x* = argmin f(max_{j=1,...,J} g_j(x)),
其中f 和g_j 是已知的平滑凸函数,x 是标量。我还有f 和g_j 的分析梯度。是否可以使用fminunc(使用牛顿法)或 MatLab 中的其他求解器来找到解决方案?显然max_{j=1,...,J} g_j(x) 是不可微分的(除非有一个k 使得g_k(x) >= g_j(x) 对于所有j),但它是可微分的。因此,我不能直接使用fminunc,因为它要求目标函数的梯度。如果我可以使用fminunc,我将如何进行?
例如,考虑f(x) = x、J=1,2、g_1(x) = (x-1)^2、g_j(x) = (x+1)^2。那么max g_1, g_2 是g_1 和g_2 的上层信封。最小值位于x=0。
注意:函数fminimax 接近我想要的。 fminimax解决了
x* = argmin max_{j=1,...,J} g_j(x)。
【问题讨论】:
-
组合的最大值是单个函数之一的最大值....最小值是单个函数之一的最小值或两个相交的断点之一。跨度>
-
fminsearch不需要目标函数的梯度。它使用 Nelder-Mead 单纯形算法 -
额外的组合使事情变得有点复杂。
-
AVK:我想用梯度信息来加速收敛。
fminsearch使用单纯形法是正确的。我想到了使用牛顿法的fminunc或fmincon。我已经编辑了问题以反映这一点,谢谢。
标签: matlab optimization