问题标签 [quadprog]
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.
c++ - 巨大的矩阵 (C++) (Visual Studio 2015) (QuadProg 库)
我正在尝试使用 QuadProg++ 库。问题是我的 CI 变量很大。高达 40,000 * 20,000。使用这个大小,它会占用太多内存(至少 12GB ......)。我有 2 个问题: 1.- 有什么方法可以给“solve_quadprog”函数提供不同的数据类型,而不是矩阵的 double 类型?我尝试了short,但它不允许我。2.- 有人知道如何解决这个尺寸问题吗?这个CI变量其实很简单,只有一条对角线全为1,另一条对角线全为-1(其他全为0)
如果可以使用另一个库(解决二次规划问题)解决这些问题也不是问题。任何解决方案将不胜感激在此先感谢
r - 如何在 QuadProg 中实现框约束
我想知道 R 'Quadprog' 包是否能够合并以下形式的框约束:-L*1 <= v <= L*1
其中 1 是 1 的向量,L 是常数。要优化的变量是 v。基本上 v 的所有单个元素都必须在 –lambda 和 lambda 之间。
如果没有,是否有其他软件包可以解决此问题?
非常感谢您的帮助
r - 如何使用 R 包 Quadprog 解决 SVM?
我想知道实施 Quadprog 来解决二次规划的正确方法是什么。
我有以下问题(从互联网上摘录)并且还在查看以下http://cbio.ensmp.fr/~thocking/mines-course/2011-04-01-svm/svm-qp.pdf
解决这个问题的正确方法是什么?如果我遇到上述问题,本教程对解决有用吗? http://www.r-bloggers.com/solving-quadratic-progams-with-rs-quadprog-package/
multithreading - MATLAB 的 quadprog 在我强大的本地机器与另一台远程机器上非常慢
我正在使用 MATLAB quadprog
,它在我的本地机器上运行非常慢。
当我在远程机器上运行确切的代码时,它会在 10 分钟内完成。当我在本地机器上运行它时,即使 24 小时后它也不会终止(我有时会杀死它)。
当代码运行时,我的本地机器上的内存使用量为 ~10GB RAM(而我的本地机器有 ~100GB 的可用 RAM)。远程机器上的使用量是 20-30GB RAM。
关于如何使它在我的本地机器上运行得更快的任何想法?
重要编辑 10 月 18 日:我在两台机器上都执行了一个较小规模的问题。在本地机器上需要 1900 秒,在远程机器上需要 8 秒,增益约为 240。这两台机器也有多个多核处理器。这次我注意到htop
,远程机器使用它的所有处理器,而本地机器只使用一个处理器(尽管所有其他处理器都可用)。关于如何让 MATLAB 使用本地机器上的所有处理器的任何想法?
一些旁注:
1:nnz 代表 H,Aeq =~ 10e6,尺寸约为 11e6 x 11e6
2:只有等式约束的四边形编程有一个封闭形式的解决方案(参见Boyd)。当我使用封闭形式的解决方案解决它时,在我的本地机器上大约需要 10 分钟,而在远程机器上需要 5 分钟。虽然两者都消耗约 20-30GB 的内存。由于我想添加不等式约束,我希望能够在我的本地机器上快速运行 quadprog。
3:下面是cat /proc/cpuinfo
我的机器vs远程机器(远程机器更强,但本地机器也很强):14核vs 4核是〜x3.5的增益(不考虑多线程开销),并且AVX 与 SSE 最大〜x2。所以它不能解释我看到的 240 的增益。此外,当我使用封闭形式的解决方案(而不是 quadprog)时,远程机器与本地机器相比只有 x2 的增益。
4:我确定我运行的是64位版本,因为我看到内存消耗是10-15GB。
5:本地系统运行RHEL,远程运行ubuntu。
本地uname -a
结果:
远程uname -a
结果:
6:机器上启用了超线程。我用这个脚本检查了它。
7:按照某人的建议启动并行池无济于事。
谢谢!
单个处理器的本地机器 cpu 信息(在许多中)
单个处理器的远程机器 cpu 信息(在许多中)
r - 用 R 求解约束二次规划
我真的很喜欢R,但有时它真的让我头疼……
我有以下简单的二次最小化问题,可以在 Excel 中立即制定和解决(点击图片放大):
和
问题本身非常简单:我想(w1^2+w2^2)/2
通过找到 的最佳组合w1
来最小w2
化b
Y*(w1*X1+w2*X2+b) >= 1
我知道有quadprog
解决这类问题的包,但我发现它太不直观了,我无法正确指定问题:-( 我不想这么说,但 Excel 似乎更适合指定像这些优化问题:-(((
我的问题
如何正确制定上述问题,以便可以用 R (无论哪个包)解决,并且程序得出正确的值w1
,w2
和b
(如上图所示)。请不要只发布链接,但请提供有效的实际代码。如果您可以评论您的代码,那就太好了,这样您就可以清楚地知道您为什么要做这些事情。谢谢!
必要的数据在这里:
附录
有些人对我提供代码(而不仅仅是链接)的要求感到不快。我为此道歉并给出了我的理由,即到目前为止我在 SO 的答案中没有找到任何好的方法。更深层次的原因是这个问题在某种意义上是不寻常的,b
它只存在于约束中而不存在于目标函数中。所以我仍然认为这个问题很适合SO。
r - 最小化受范数不等式约束的二次函数
我正在尝试解决以下不等式约束:
给定 N 个股票的时间序列数据,我试图构建一个投资组合权重向量以最小化收益的方差。
目标函数:
其中w
是权重向量,\sum
是协方差矩阵,e_{n}^{T}
是 1 的向量,C
是常数。其中第二个约束 ( \left \| w \right \|
) 是不等式约束(权重的 2 范数)。
我尝试使用该nloptr()
函数,但它给了我一个错误:提供的算法不正确。我不确定如何选择正确的算法,也不确定这是否是解决此不等式约束的正确方法。
只要能解决这个限制,我也愿意使用其他功能。
这是我尝试的解决方案:
r - R二次规划
我有一个想在 R 中解决的问题。
我看到我可以使用lsei
包中的函数limSolve
来最小化以矩阵形式写成 Ax=b 的线性方程组,受等式约束 Ex=f 和不等式约束 Gx>=h 的约束。
然而,我现在拥有的不是一个线性方程组,而是一个二次方程组,可以写成 t(x)Ax=b。
我看到有quadprog
二次案例的包,但它似乎不允许一组二次方程,只有一个方程。
有谁知道在等式和不等式约束下我可以用什么来最小化二次方程组?
这是我的例子。我正在尝试组合 3 个概率 P(A)、P(B)、P(C) - 这会创建 7 个段 v1 到 v7,其中 v1 是 P(A solus) 等... v4 是 P((A AND B) 不是 C) 等等。而 v7 是 P(A AND B AND C)。
我试图最小化的功能是:
我的平等约束是:
我的不等式约束是 Vi 必须介于 0 和 1 之间,并且它们的总和不能超过 1。
r - 在 R for MAC 中安装 quadprog 包时出错
我正在尝试在 Mac 的 R 中安装 quadprog 包,但它一直显示此按摩:
- 安装源包'quadprog' ... ** 包'quadprog' 成功解包并检查MD5 和 ** libs gfortran-4.8 -fPIC -g -O2 -c aind.f -o aind.o make: gfortran-4.8: No这样的文件或目录 make: *** [aind.o] 错误 1 错误: 包 'quadprog' 编译失败</li>
- 删除 '/Library/Frameworks/R.framework/Versions/3.2/Resources/library/quadprog'</li>
有人知道我应该怎么做才能安装它吗?
r - 关于 quadprog, R 中solve.qp 输出中“值”分量的定义或算法
我正在使用solve.QP
Rquadprog
包来解决经典的均值方差优化问题。在我的理解中,输出分量“值”是指优化投资组合的方差,网上发布的许多均值方差优化代码也表明这sqrt(sol$value)
是优化投资组合的标准差。
但是,当我solve.QP
用来解决简单的均值方差优化时,sol$value
给我提供了一个负值,它也不同于使用投资组合方差函数计算的值:w%*%covariance%*%t(w)
. 我试图在网上搜索定义或算法,sol$value
但不幸的是我找不到详细的描述。R文档quadprog
仅声明“值”是“标量,解处的二次函数的值”。
因此,任何熟悉的人都solve.QP
可以告诉我 . 的确切定义或算法sol$value
。如果我对它的理解是正确的,即优化投资组合的方差,那么solve.QP
为我提供负值的可能原因是什么sol$value
。
r - 权重约束下的投资组合优化
在 StackOverflow 贡献者的大力帮助下,我设法组合了一个函数来推导 2 资产投资组合的权重,从而使夏普比率最大化。不允许卖空并且权重总和为 1。我现在想做的是限制资产 A 与用户定义的权重相差不超过或少于 10%。例如,我想将资产 A 的权重限制为不小于 54% 或大于 66%(即 60% +/- 10%)。所以在下面的例子中,我最终会得到 (0.54,0.66) 而不是不受约束的 (0.243,0.7570) 的权重。我认为这可以通过调整 bVect 来完成,但我不太确定如何去做。任何帮助,将不胜感激。