我完全意识到Convex Optimization软件包,比如Linear Algebra软件包,应该是你使用的东西,而不是实现。但是,对于纯粹的教育目的 - 是否有任何好的资源 - 链接/书籍如何实现凸优化包? (对于具有二次约束的二次规划?)
谢谢!
答案 0 :(得分:2)
任何关于凸优化的好教科书都会有你想要的东西。这里有一个免费但很好的资源:CO Book。请注意,正如您正确提到的,实现本书中提到的算法肯定需要线性代数库,您可能也可能不会选择实现这些库。
答案 1 :(得分:1)
article中有一个相关的Optima,mathematical optimization society的简报,称为“使用COIN-OR开源Minlp解算器的快速开发”。它描述了使用一些coin-or包构建非线性求解器。大多数硬币或东西都是用c ++编写的。
对于python,您可以考虑使用numpy中提供的线性代数数据结构和算法。相关的scipy包具有一些非线性优化器,但没有特定于凸优化。
最后,您可以查看Boyd的GPL基于python的凸优化器cvxopt,以了解您之前的任务类型。
答案 2 :(得分:0)
这取决于你的目标,,但你应该去教授。你大学的数学优化,你现在或你毕业,你应该直接问他。
我实现了几个问题的求解器,简化为凸优化(http://cs229.stanford.edu/proj2017/) - cvx4ml,它比SkLearn的类似解决方案更快,我通过24小时考试到Stephen Boyd,所以我可以给出建议你可以做什么并描述你的粗略计划:
所以你要创建自己的包我会写一步一步的说明:
为非负正牙锥实施自定义简单圆锥解算器。这取决于你要去做什么。 6.a - 基于内点法的写求解器。 6.b - 写支持分布式优化的求解器 6.c - 基于一些预测的次梯度方法写解算器。
改进它以支持其他视锥细胞
如果你想达到CVXPY的水平,那么
P.S。如果您对某些主题感到邋,,那么:
阅读编写教授的线性代数书。来自你的大学
使用S.Boyd,使用S.Boyd的EE364A,使用S.Boyd的EE364B,在youtube中查看EE263。