【问题标题】:Find maximum of a function that is a maximum of functions找到一个函数的最大值,它是函数的最大值
【发布时间】:2016-12-02 23:18:40
【问题描述】:

我想解决以下问题:

x* = argmin f(max_{j=1,...,J} g_j(x)),

其中fg_j 是已知的平滑凸函数,x 是标量。我还有fg_j 的分析梯度。是否可以使用fminunc(使用牛顿法)或 MatLab 中的其他求解器来找到解决方案?显然max_{j=1,...,J} g_j(x) 是不可微分的(除非有一个k 使得g_k(x) >= g_j(x) 对于所有j),但它是可微分的。因此,我不能直接使用fminunc,因为它要求目标函数的梯度。如果我可以使用fminunc,我将如何进行?

例如,考虑f(x) = xJ=1,2g_1(x) = (x-1)^2g_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)。

【问题讨论】:

  • 组合的最大值是单个函数之一的最大值....最小值是单个函数之一的最小值或两个相交的断点之一。跨度>
  • fminsearch 不需要目标函数的梯度。它使用 Nelder-Mead 单纯形算法
  • 额外的组合使事情变得有点复杂。
  • AVK:我想用梯度信息来加速收敛。 fminsearch 使用单纯形法是正确的。我想到了使用牛顿法的fminuncfmincon。我已经编辑了问题以反映这一点,谢谢。

标签: matlab optimization


【解决方案1】:

我有一个潜在的解决方案来解决我的问题。我们可以用平滑或软最大值替换最大值函数,请参阅this article by John Cook。特别是,我们可以用函数g(x,y;k) = log(exp(kx)+exp(ky))/y 逼近max(x,y)k 是一个调整参数)。现在目标函数是可微的,所以可以应用牛顿法(即fminunc)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多