我正在研究一个涉及半定规划(相当大的正定矩阵的约束优化)的问题。该软件是用C++编写的,调用DSDP 5.8来解决SDP问题。它在中小型测试问题(最多 200 x 200 矩阵,约约束)上工作,但由于大型任务的索引错误而死。原因当然是,作者使用变量作为索引(和-s 用于索引数组)而不是 eg or和更大的问题,4 字节-s 最终溢出。DSDPintint[]size_tlongint
在我开始修改自 2006 年以来未更新的 C 源代码之前,我想我可能会在这里问社区:是否有人有机会DSDP使用size_t或long用于索引(以及size_t[]用于索引数组)的修改版本?在现代 64 位平台上,这些类型通常为 8 字节长。
我的另一个选择是换掉DSDP并使用另一个 SDP 求解器。请理解我不愿意这样做,因为我必须使我的软件适应新的 API。话虽如此,请随意推荐开源 SDP 求解器,用于可以处理大问题的一阶锥编程。我知道CVXOPT但那是用 Python 编写的;据我所知,MOSEK不是 FOSS。