问题标签 [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.

0 投票
0 回答
4096 浏览

r - 带约束的 R 中的长/短投资组合优化

我想解决一个相当常见(且简单)的优化问题,尽管似乎没有关于此的帖子:多头/空头市场中性最小方差优化。“R伪代码”中的优化形式:

这个问题中其他问题中缺少的关键是“书本大小”约束。在长/短优化中,您需要此约束,否则您会得到无意义的结果。这是一个二次优化问题,但是由于约束中的“abs”,我们有非线性约束。有一个众所周知的(我想在某些圈子里)技巧可以将“abs”约束从非线性约束转换为线性约束。我们通过在方程中引入辅助变量来做到这一点(参见lp_solve 参考指南中的解释:绝对值)。

在给定多因素风险模型输入的情况下,我编写了这个函数来计算最小投资组合方差权重:

我用以下单元测试调用它(欺骗多因素模型输入):

这会引发以下错误:

因此,我的问题是,如何在 R 中的solve.QP 中实现长/短优化中的abs 约束?

作为进一步说明,论文Portfolio Optimization with Transaction Costs展示了如何在 Matlab 中执行此操作,但这似乎不适用于 R 中的solve.QP。

0 投票
1 回答
1405 浏览

mathematical-optimization - 在 MATLAB 中使用 Opti Toolbox 进行混合整数二次规划

我希望使用 MATLAB 中的 OPTI 工具箱求解具有线性约束的混合整数二次程序。我希望我的一些决策变量是连续的,而一些决策变量是二元的。我该如何指定?

0 投票
2 回答
1520 浏览

r - 为什么solve.QP 和portfolio.optim 不产生相同的结果?

Portfolio.optim {tseries} 的文档说solve.QP {quadprog} 用于生成解决方案,以找到使夏普比率最大化的切线投资组合。这意味着结果应该与任一函数相同。我可能忽略了一些东西,但在这个简单的例子中,我得到了类似但不完全相同的解决方案,用于使用portfolio.optim 和solve.QP 估计最优投资组合权重。结果不应该相同吗?如果是这样,我哪里错了?这是代码:

0 投票
0 回答
289 浏览

c++ - QuadProg++:对 QuadProgPP 的未定义引用;返回 1 个退出状态

我第一次尝试使用 QuadProg++ 库。我已按照所有安装说明进行操作。我的系统上也有 Boost。当我尝试编译包含解决示例二次优化问题的示例的 main.cc 文件时,我收到以下错误:

如果有人已经使用过这个库,那么如果您能给我提供任何见解,我将不胜感激。我还没有真正开始使用这个库,所以如果你能推荐一个很好的库,它提供二次编程求解器,与 C++ 兼容,那也很棒。

0 投票
0 回答
277 浏览

c++ - QuadProg++ 中的框约束

我目前正在使用 QuadProg++ 来解决对偶问题。该问题还具有一些框约束,即将变量限制在两个值之间的约束。但是,QuadProg++ 没有允许合并此类约束的规定。它只考虑等式和不等式约束。另一方面,MATLAB 中等效的二次规划工具确实提供了包含框约束的规定。

您可以查看以下链接以了解我在说什么: http: //www.mathworks.in/help/optim/ug/quadprog.html

基本上,我有一个等效于 lb < x < ub 的约束。我尝试将此添加为不等式约束,但它不起作用。它会导致错误,说约束是线性相关的。但是,我很确定我输入的约束绝不是线性相关的。

请提出一个解决方法,或者 C++ 中的其他一些二次编程工具,这对我有帮助。谢谢!

0 投票
1 回答
1931 浏览

r - 用不平等约束规范

我有 N 个股票的时间序列数据。

sample.data<-replicate(10,rnorm(1000)),其中每列显示不同股票随时间的回报。

我正在尝试构建一个投资组合权重向量以最小化收益的方差。

目标函数:

其中 w 是权重向量,\sum是协方差矩阵,e_{n}^{T}是 1 的向量,C是常数。其中第二个约束 ( \left \| w \right \|) 是不等式约束。

我使用以下代码来解决这个问题:

运行此代码时,我收到以下错误消息:

有什么想法我可能做错了吗?起始参数向量有问题x0吗?

0 投票
1 回答
371 浏览

performance - 计算 Hessian 的性能

[编辑] 关于“f”的部分已解决。这是我所做的:而不是使用:

我现在正在使用:

这将大大加快速度。不过,f 的 Hessian 矩阵的问题仍然存在。[/编辑]

因此,我在尝试在 Matlab 中解决的二次优化问题时遇到了一些严重的性能“问题”。问题不是优化本身,而是目标函数和 Hessian 的计算。现在看起来像这样(F 和 Y 根本不是随机的,并且会有真实数据,也不一定是不受约束的,因为那样的话解决方案当然是 (F'F)^-1*F'*Y ):

问题是:计算 f 和 H 需要很长时间。

我不期望有办法显着加快速度,因为 Matlab 已针对此类内容进行了优化。但也许有人知道一些开放许可软件,它几乎和 Matlab 一样快,这样我就可以在更快的机器上用那个软件计算 f 和 H(不幸的是没有 Matlab 许可......),然后让 Matlab 进行优化。

现在我有点迷失了:/

非常感谢您提前。甚至一些关键字也可以在这里帮助我,例如“寻找软件 xy”

0 投票
1 回答
1072 浏览

matlab - 谁知道MATLAB中的函数quadprog的计算复杂度?

QP 问题是凸的。对于 Wiki,问题可以在多项式时间内解决。但具体的顺序是什么?

0 投票
1 回答
2576 浏览

r - 使用 quadProg 库进行约束二次优化

我有一个A长度向量N。我也有N*N矩阵C。我想最大化以下方程:

其中w是一个长度为 的向量N,约束条件是每个w都是非负的,并且所有的总和w为 1。

我见过一个叫quadProg. 那里我需要指定:

Dmat = C, dvec = A, 和bvec = w

但不确定如何在那里应用上述约束。

我想我可以提供Amat一个单位矩阵,它将保持所有w非负数。但不确定如何保持w标准化(总和为零)。实际上我也可以稍后将它们标准化,但我仍然想知道我是否可以在这里自己做。

0 投票
2 回答
630 浏览

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 端口。

非常感谢。