问题标签 [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.
r - 带约束的 R 中的长/短投资组合优化
我想解决一个相当常见(且简单)的优化问题,尽管似乎没有关于此的帖子:多头/空头市场中性最小方差优化。“R伪代码”中的优化形式:
这个问题中其他问题中缺少的关键是“书本大小”约束。在长/短优化中,您需要此约束,否则您会得到无意义的结果。这是一个二次优化问题,但是由于约束中的“abs”,我们有非线性约束。有一个众所周知的(我想在某些圈子里)技巧可以将“abs”约束从非线性约束转换为线性约束。我们通过在方程中引入辅助变量来做到这一点(参见lp_solve 参考指南中的解释:绝对值)。
在给定多因素风险模型输入的情况下,我编写了这个函数来计算最小投资组合方差权重:
我用以下单元测试调用它(欺骗多因素模型输入):
这会引发以下错误:
因此,我的问题是,如何在 R 中的solve.QP 中实现长/短优化中的abs 约束?
作为进一步说明,论文Portfolio Optimization with Transaction Costs展示了如何在 Matlab 中执行此操作,但这似乎不适用于 R 中的solve.QP。
mathematical-optimization - 在 MATLAB 中使用 Opti Toolbox 进行混合整数二次规划
我希望使用 MATLAB 中的 OPTI 工具箱求解具有线性约束的混合整数二次程序。我希望我的一些决策变量是连续的,而一些决策变量是二元的。我该如何指定?
r - 为什么solve.QP 和portfolio.optim 不产生相同的结果?
Portfolio.optim {tseries} 的文档说solve.QP {quadprog} 用于生成解决方案,以找到使夏普比率最大化的切线投资组合。这意味着结果应该与任一函数相同。我可能忽略了一些东西,但在这个简单的例子中,我得到了类似但不完全相同的解决方案,用于使用portfolio.optim 和solve.QP 估计最优投资组合权重。结果不应该相同吗?如果是这样,我哪里错了?这是代码:
c++ - QuadProg++:对 QuadProgPP 的未定义引用;返回 1 个退出状态
我第一次尝试使用 QuadProg++ 库。我已按照所有安装说明进行操作。我的系统上也有 Boost。当我尝试编译包含解决示例二次优化问题的示例的 main.cc 文件时,我收到以下错误:
如果有人已经使用过这个库,那么如果您能给我提供任何见解,我将不胜感激。我还没有真正开始使用这个库,所以如果你能推荐一个很好的库,它提供二次编程求解器,与 C++ 兼容,那也很棒。
c++ - QuadProg++ 中的框约束
我目前正在使用 QuadProg++ 来解决对偶问题。该问题还具有一些框约束,即将变量限制在两个值之间的约束。但是,QuadProg++ 没有允许合并此类约束的规定。它只考虑等式和不等式约束。另一方面,MATLAB 中等效的二次规划工具确实提供了包含框约束的规定。
您可以查看以下链接以了解我在说什么: http: //www.mathworks.in/help/optim/ug/quadprog.html
基本上,我有一个等效于 lb < x < ub 的约束。我尝试将此添加为不等式约束,但它不起作用。它会导致错误,说约束是线性相关的。但是,我很确定我输入的约束绝不是线性相关的。
请提出一个解决方法,或者 C++ 中的其他一些二次编程工具,这对我有帮助。谢谢!
r - 用不平等约束规范
我有 N 个股票的时间序列数据。
sample.data<-replicate(10,rnorm(1000))
,其中每列显示不同股票随时间的回报。
我正在尝试构建一个投资组合权重向量以最小化收益的方差。
目标函数:
其中 w 是权重向量,\sum
是协方差矩阵,e_{n}^{T}
是 1 的向量,C
是常数。其中第二个约束 ( \left \| w \right \|
) 是不等式约束。
我使用以下代码来解决这个问题:
运行此代码时,我收到以下错误消息:
有什么想法我可能做错了吗?起始参数向量有问题x0
吗?
performance - 计算 Hessian 的性能
[编辑] 关于“f”的部分已解决。这是我所做的:而不是使用:
我现在正在使用:
这将大大加快速度。不过,f 的 Hessian 矩阵的问题仍然存在。[/编辑]
因此,我在尝试在 Matlab 中解决的二次优化问题时遇到了一些严重的性能“问题”。问题不是优化本身,而是目标函数和 Hessian 的计算。现在看起来像这样(F 和 Y 根本不是随机的,并且会有真实数据,也不一定是不受约束的,因为那样的话解决方案当然是 (F'F)^-1*F'*Y ):
问题是:计算 f 和 H 需要很长时间。
我不期望有办法显着加快速度,因为 Matlab 已针对此类内容进行了优化。但也许有人知道一些开放许可软件,它几乎和 Matlab 一样快,这样我就可以在更快的机器上用那个软件计算 f 和 H(不幸的是没有 Matlab 许可......),然后让 Matlab 进行优化。
现在我有点迷失了:/
非常感谢您提前。甚至一些关键字也可以在这里帮助我,例如“寻找软件 xy”
matlab - 谁知道MATLAB中的函数quadprog的计算复杂度?
QP 问题是凸的。对于 Wiki,问题可以在多项式时间内解决。但具体的顺序是什么?
r - 使用 quadProg 库进行约束二次优化
我有一个A
长度向量N
。我也有N*N
矩阵C
。我想最大化以下方程:
其中w
是一个长度为 的向量N
,约束条件是每个w
都是非负的,并且所有的总和w
为 1。
我见过一个叫quadProg
. 那里我需要指定:
Dmat = C
, dvec = A
, 和bvec = w
但不确定如何在那里应用上述约束。
我想我可以提供Amat
一个单位矩阵,它将保持所有w
非负数。但不确定如何保持w
标准化(总和为零)。实际上我也可以稍后将它们标准化,但我仍然想知道我是否可以在这里自己做。
r - quadprog 找不到解决方案
我正在尝试优化一组盒子的布局 wrt 他们的衣架位置 st 盒子与他们的衣架最对齐并且不会相互排挤。使用四驱。
吉文斯:
我们可以看到所需的总 x-spread 为 sum(W) + 3G = 2060 + 150 = 2210,而可用的 x-spread 为 S[2] - S 1 = 2240。因此,应该存在解决方案。
分钟:
(1) X[i+i] – X[i] >= G + ½ ( W[i+1] + W[i] ); i = 1..(K-1),即盒子不会互相排挤
(2) X 1 >= S[left] + ½ W 1和 (3) X[K] <= S[right] – ½ W[K],即盒子在给定的 x-spread 内
总共有 5 个约束 - 3 个用于跨箱传播,2 个用于四肢。
在 R 中:
很明显我错过或错误指定了问题(包'quadprog')!我正在使用 quadprog,因为我找到了它的 JavaScript 端口。
非常感谢。