如何明智地尝试排除凸度?


9

我想最小化复杂的目标函数,并且不确定它是否是凸的。是否有一个好的算法试图证明它不是凸的?当然,该算法可能无法证明这一点,在这种情况下,我将不知道它是否是凸的,这是可以的。我只是想在花大量时间试图分析确定目标函数是否为凸值之前先排除凸率,例如,尝试以已知的凸值形式重写问题。一个快速的测试是尝试从各个起点开始进行最小化,如果以此方式找到多个局部最小值,则它不是凸的。但是我想知道是否有一个针对此目标而设计的更好的算法。


目标函数是否平滑?它是一维的吗?评估二阶导数(或粗麻布)是否昂贵?如果可能的话,我想看看这个公式,或者至少对它为什么“复杂”有一个更好的理解。
hardmath 2012年

Answers:


10

对于所有凸函数,都需要满足和在定义域中。您可以简单地尝试验证大量对和两个值公式,例如。f(αx+(1α)y)αf(x)+(1α)f(y)α(0,1)x,yx,yαα={1/4,1/2,3/4}


6

有关许多实用的凸度/非凸度验证测试,请参阅(免责声明,我是本文的第三作者):

R. Fourer,C。Maheshwari,A。Neumaier,D。Orban和H. Schichl,计算图的凸度和凹度检测。《树步用于凸性评估》,INFORMS J. Computing 22(2010),26-43。

请注意,有许多功能在感兴趣的领域中是凸的,但不能轻易地“学科化”,即以结构化凸求解器所需的一种形式编写,例如CVX


这是DrAmpl,Arnold的演变吗?
迈克尔·格兰特

1
@MichaelGrant:是的,这是AMPL博士材料的正式出版物。
阿诺德·诺伊迈耶

2

一个函数可以是非凸的,而没有多个最小值。有多种优化方法可以应用(线性或非线性)共轭梯度迭代,当计算负算子范数时会被截断。负值表示负曲率的方向(凸函数不会发生)。如果很少遇到负曲率,则这些方法会收敛于少量的优化迭代中。(如果可以使用优质的预处理器,则内部步骤也应迅速收敛。)


2
为了澄清,Jed在说“是负数”时指的是该函数的二阶导数矩阵具有负特征值。
Wolfgang Bangerth
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.