首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mosek矢量化,缓慢添加约束

Mosek矢量化,缓慢添加约束
EN

Stack Overflow用户
提问于 2022-01-27 16:13:24
回答 1查看 83关注 0票数 0

我试图在Mosek中求解一个带有形式约束的C++融合的半正定程序。

i \forall,$$ (链接到方程的图片)

其中每个M_j是一个半正定矩阵。目前,我正在创建约束,使用for循环在A_{i,j} M_j上求和,使用另一个for循环来添加所有约束。然而,约束的数量相当大,并且使用M->约束(.)到目前为止,这是我节目中最慢的部分。我正在查看Mosek文档,似乎矢量化可以加快程序的速度。但是,我正在为求和A_{i,j} M_j而进行矢量化。每个变量的数据类型如下:

代码语言:javascript
复制
A: vector < vector < Matrix::t > > 
M: vector < Variable::t >
c: vector < shared_ptr < ndarray < int,1 > > >
y: Variable::t
x: Variable::t
b: vector < int >  

我试过在A和M上使用new_array_ptr,然后使用Expr::add和Expr::dot,但这两种方法都不起作用。对矢量化或加速M->约束的任何帮助(.)我会非常感激的!

EN

回答 1

Stack Overflow用户

发布于 2022-01-28 07:57:08

这有点棘手。由于您的每个约束都涉及到矩阵的乘积,进一步将其矢量化将需要增加高维对象(张量?)的能力。而且融合没有一个接口。

您可以做的一件事是确保您的A表示为稀疏矩阵,如果它们确实是稀疏的。

另一种解决方案是使用C重写所有内容。您的数据似乎已经采用了一种允许相对轻松地进行翻译的格式。

最后但同样重要的是,如果您可以将您的代码打包到一个可复制的示例中,并发送到MOSEK支持(电子邮件这里是https://www.mosek.com/support/),那么我可以在那里更具体地检查在Mosek中是否存在一些效率低下的问题,或者您的代码中是否有任何改进之处。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70881947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档