全局最优 & 局部最优

定义

任何优化问题都像在“可行区域”里找一个点,让目标函数(误差/能量/花费)尽可能小。

可行区域:满足约束的那些点;目标函数:你想压低的那个量。

举个例子:

把目标函数想成“海拔”,可行区域就是你能走的地。

全局最优:整张地图里海拔最低的点。

局部最优:只在你脚边一小圈范围内最低,但地图别处可能更低。

凸问题的地形像一个大碗,只有一个底;非凸问题像群山起伏,到处是小洼地。

区别几个概念

全局最优:拿它和所有可行点比,谁都不比它更小。

严格全局最优:拿它和所有其他可行点比,别人都更大。

局部最优:只在它周围“足够小的一圈”里,别人都不更小。

严格局部最优:在那一小圈里,别人都更大。

注意边界点:比较的是“那一圈”与可行区域的交集。

无约束时:

一阶导为零(坡度为零)是必须的;

二阶导“非负”表示那是个凹下去的形状;若“严格正”,就是严格局部最小。

凸目标 + 凸可行域:任何局部最优自动就是全局最优。

分析APGD

APGD 流程在当前建模下求的是凸问题的解 —— 因此得到的是全局最优解

可行集 𝐾 是凸集(区间/半空间 + 二阶锥都凸) + 目标函数是个凸函数

\[f(\gamma)=\tfrac12\,\gamma^\top A\gamma - r^\top\gamma,\quad \nabla f(\gamma)=A\gamma-r.\]

行域投影(盒约束 + 摩擦圆锥):

\[\gamma\leftarrow \Pi_{\mathcal K}\big(\gamma - t\nabla f(\gamma)\big),\quad \|\gamma_T\|\le \mu\,\gamma_N.\]

ChSolverMulticoreAPGD.cpp