这是作者研究生课程“凸优化”第 7 讲的直播博客。目录在这里。
开始讲 dreaded 线性代数,数值计算中最重要的矩阵是半正定矩阵,对称方阵若其所有特征值都大于等于 0 则为半正定矩阵。今天课程将描述 Boyd 和 Vandenberghe 书中几乎所有问题都可表示为:
此处插入一个图片链接,其中 Ai 是 n x n 矩阵,n 可随意取整数,但建模时应尽量取小,此问题称为半定规划(SDP),它将线性规划推广到半正定锥,约束“Ax≥b”在 SDP 中可替换为:
此处插入另一个图片链接,即把线性规划中的非负向量替换为半正定矩阵。
可写为 SDP 的问题范围很惊人,任何线性规划或凸二次规划都可归于此,在单位区间上最小化一元多项式可表示为 SDP,甚至普通最小二乘法也可表示为 SDP,但不建议这样做。
作者认为了解 SDP 及其一般性和与凸规划的关系很重要,但一般建议尽量避免使用 SDP,课程结束时会介绍求解 SDP 的通用算法,技术上运行时间为多项式,但多项式很大(O(m^6)等,作者已遗忘具体大小),若用 SDP 求解所有问题会等待很久。
优化研究的一个乌托邦想法是开发能将从业者提出的高级模型解析为优化求解器可高效执行代码的建模语言,从 20 世纪 70 年代起人们就提出了不同的代数建模系统,但从未真正实现,应写篇文章研究这些语言的历史及未被广泛采用的原因,这对优化社区有重要教训,比如理解 PyTorch 为何超级流行而GAMS50 年仍小众。作者猜测针对多个求解器有问题,优化方法多样,求解器会限制问题的表述方式,不同求解器对等价问题的求解效率和准确性不同,即使只有线性规划求解器也如此,软件求解两个等价线性规划时间差异很大,这会导致模型编写晦涩,违背让建模者用自然语言建模的理想。在方程求解中匹配数值求解器到问题实例也是问题,即使只是求解 Ax = b 也有多种可能,还有条件问题,半正定矩阵的最大特征值与最小特征值差异大时求解器会陷入收敛和数值误差问题,即病态问题,未来帖子会继续探讨建模语言乌托邦为何未实现,最后以 Steve Wright 的观点结尾,即优化应像车库里的旧工具箱,有各种表述和方法,要了解它们的用途和适用情况,不是每个项目都需要复杂工具。1,作者能想象到 Jeff Linderoth 已在抱怨。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。