问题标签 [mosek]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
optimization - SOCP:最小化欧几里得范数之和
考虑到投资组合过去表现的侧面约束(就风险价值而言),我需要优化投资组合。我的问题的简化版本是
其中 H1 和 H2 是协方差矩阵,w 是投资组合权重的向量。G1 和 G2 使得 H = G'G。圆点表示我为简洁起见省略的其他约束。
根据论文,这是一个二阶锥问题。我试图在 Mosek 中这样做,但我不知道如何将 (1) 写成圆锥体。如果我必须最小化方差之和,任务会很容易,但不幸的是,我必须最小化标准偏差之和。
我如何用(旋转的)二次圆锥写(1)?
c++ - 影响 Makefile 中其他库的库
我在以下 Makefile 中遇到了一个奇怪的问题:
我从MOSEK提供的示例中获得了大部分内容。Makefile 工作正常,结果符合预期。问题是,我使用的 MOSEK 版本是多线程的(MOSEK 7.1)。MOSEK 应该检测机器上的核心数量,并使用它们。当我按原样使用 Makefile 时,MOSEK 只检测到一个内核,并且只使用一个线程:
但是,当我在没有 $(LIBS) 的情况下编译时,MOSEK 确实检测到 4 个内核:
我在 lo1.c 中的代码暂时不使用 $(LIBS),但我稍后会在 lo1.c 中使用这些库。这些库是如何影响 MOSEK 的行为的?
谢谢你。
matlab - 使用 Mosek 在 Matlab 中进行并行优化
我试图通过调用 MOSEK 来解决 Matlab 中的锥形程序,同时改变其中一个约束的界限。
我想并行这样做,以利用我拥有的所有内核。这是一个修改后的例子来说明我的观点。
我试图用parfor来做到这一点,但这是不允许的。不幸的是,MOSEK 文档没有详细介绍并行化。我怎样才能并行执行上述操作?
cpu - 使用 Python API for MOSEK 的 CPU 关联性问题
我在MOSEK中遇到 CPU 亲和力和线性整数编程问题。我的程序使用 中的multiprocessing
模块并行化Python
,因此 MOSEK 在每个进程上同时运行。这台机器有 48 个内核,所以我使用Pool
该类运行 48 个并发进程。他们的文档声明API 是线程安全的。
启动程序后,以下是top
. 它表明大约 50% 的 CPU 处于空闲状态。仅显示顶部输出的前 20 行。
我检查了文档的MOSEK 参数部分,没有看到任何与 CPU 亲和性相关的内容。它们有一些与优化器中的多线程相关的标志。这些标志被设置off
为默认值,并且在冗余设置时off
没有任何变化。
我检查了正在运行的 python 作业的 cpu 亲和力,其中许多都绑定到同一个 cpu。但是,奇怪的部分是我无法设置 cpu 亲和力,或者至少在我更改它之后它似乎很快又被更改了。
我选择了其中一项工作并通过运行来设置 cpu 亲和力taskset -p 0xFFFFFFFFFFFF 115526
。我这样做了 10 次,中间间隔 1 秒。这是每次taskset
调用后的 cpu 亲和性掩码。
似乎某些东西在运行时不断改变 CPU 亲和力。
我也试过设置父进程的cpu亲和度,但效果一样。
这是我正在运行的代码。
代码解开我预先计算的数据。这些对象是线性规划的约束和系数。我有代码和这个数据文件托管在这个存储库中。
有没有其他人在 MOSEK 上遇到过这种行为?有关如何进行的任何建议?
scipy - 用于具有半定约束的非线性优化的正确软件包/软件
我正在努力解决以下(通用)形式的优化问题。
最小化 F(x)
这样:
___(1): 0 < x < 1
___(2): M(x) >= 0。
其中 M(x) 是一个矩阵,其元素是 x 的二次函数。最后一个约束意味着 M(x) 必须是一个半正定矩阵。此外,F(x) 是一个可调用函数。对于更好奇的人,这里有一个类似的最小工作示例。
我尝试了几个选项,但没有成功。
- PICOS、CVXPY和CVX——在前两种情况下,我找不到像我这样的 minimax 问题编码的方法。在 MATLAB 中实现的第三个中,涉及半定约束的矩阵必须是仿射的。所以我的问题不属于这个标准。
- fmincon -- 我们如何编码矩阵正性约束?一种方法是解析地计算矩阵 M(x) 的特征值,并将每个特征值约束为正。但是特征值的解析表达式可能是可怕的。
- MOSEK——目标函数必须是可表达的标准形式。我找不到用户定义的目标函数的示例。
- scipy.optimize——除了目标函数和约束,还需要提供这些函数的导数。特别是在我的情况下,这对于目标函数来说很好。但是,如果我用特征值的解析表达式来表达矩阵正性约束(以及它的导数),那可能会非常乏味。
我很抱歉没有提供 MWE 来说明我对上述每个软件包/软件的尝试。
谁能推荐一个对我解决优化问题有用的软件包/软件?
python - 在 anaconda (ubuntu) 中为 python 安装 mosek.fusion
我正在尝试使用(并因此安装)一个名为 mosek 的优化包,更具体地说是在 jupyter notebook 上将它与 python 一起使用。
这是一个商业包,但由于我在学术界工作,所以我有一个免费许可证。
由于 Paul 的见解,此问题已被编辑。
我的目标是能够通过 jupyter 在 python 3.5 中使用 mosek。
1° 我的问题:
当我在 jupyter notebook 中运行以下代码行时:
我有以下错误:
2° 我做了什么:
我首先下载并安装了 mosek。我还在我的文件夹 mosek 中添加了我的许可证。(我做了这里描述的所有步骤:http: //docs.mosek.com/7.1/toolsinstall/Linux_UNIX_installation_instructions.html并添加了我的学术许可证)。
然后我尝试运行代码行:
import mosek.fusion
它给出了一个错误。然后我尝试运行:
然后我没有错误。我的结论是 mosek (现在,感谢 Paul)已正确安装,但缺少 fusion 模块。
我还在我的 mosek 文件夹中搜索任何融合文件或文件夹。我没有找到。
有没有办法从 mosek 获得这个模块融合,甚至更好的是,有没有办法让它工作?
谢谢你们!
E.
c++ - Mosek C-API 使用 MinGW
我尝试为Mosek
on构建“lo1”示例MinGW
。不幸的是,它不断返回undefined reference to ...
我认为我在链接库时做错了什么。任何人都可以帮忙吗?
我的构建命令如下:
c++ - Xcode 库未加载 mosek (@loader_path)
我刚刚下载了 Mosek 库并尝试将其添加到我的项目中。我遵循了 API 中的所有步骤,并设法使用提供的 Makefile 运行了 lo1 示例
现在,当我想构建我的 Xcode 项目时,我得到了错误:
我过去已经添加了库,所以我是这样进行的:
- 在构建阶段,我将库添加到 Link Binary With Libraries
- 在 Build Settings 我添加了 Library Search Paths /Users/John/mosek/7/tools/platform/osx64x86/h 的路径
- 在 Build Settings 我添加了 Header Search Paths /Users/John/mosek/7/tools/platform/osx64x86/bin 的路径
我整天都在检查网络,我认为我缺少的是 MakeFile 中的 install_name_tool。我应该更改什么设置让 Xcode 知道库的位置?
谢谢,约翰
python - Mosek Markowitz 投资组合交易成本 - Python Fusion
我试图更好地理解 mosek 优化器的各个部分是如何工作的,并且不能完全理解以下约束等的逻辑。
我有以下代码:
结果如下:
这是正确的,但有人可以确认 l 变量的逻辑。我的理解是 long1 约束迫使 l 仅是 x0 数组中的正值,对吗?如果是这样,为什么?
根据 Mosek 网站上的示例,我从交易成本的买入/卖出约束中获取了这个逻辑。
python - 分切法
我正在实施基于 LP 松弛的算法来解决奖品收集施泰纳树问题。实际上,这个问题等价于具有指数级约束的 ILP 问题。在http://www.siam.org/meetings/alenex05/papers/06iljubic.pdf提出的算法中,它们从约束相对较少的 LP 松弛问题开始,然后在每个 CUT 步骤中引入新的。是否有任何允许在 Python 中实现它的包?