问题标签 [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 - quadprog::solve.QP 参数的使用和确定
quadprog 的功能如下所示:solve.QP(Dmat, dvec, Amat, bvec, meq=0, factorized=FALSE)
我的目标函数是:
我的两个限制是:
现在我的目标是确定单个参数。
1)第一个论点 Dmat
:
在一般的符号是:
计算矩阵D是Dmat
:
因为D是对称的,所以解是
2)第二个参数 dvec
:目标函数的线性部分
3)第三个参数 Amat
:这是约束的左侧
4)第四个参数 bvec
:这是约束的右侧
5)第五个参数 meq
为零,因为只有不等式约束
6)第六个论点 factorized
:见问题
现在我必须将这六个参数放入函数中solve.QP()
。但在这里我确信需要进一步的“转型”......
- 当您查看包装说明时,二次部分乘以 0.5,线性部分为负
- 约束的定义也不同 - >= 符号
问题:
- 我必须如何“转换”前四个参数
solve.QP()
- 最后一个参数有什么
factorized
影响 - 如何最大化功能
solve.QP()
提前谢谢了!
编辑:我现在已经完成了我的“转换”,就像 G. Grothendieck 的链接中建议的那样——我希望我做的一切都正确?!
当我改变参数时factorized=TRUE
,我得到了 x1=2 和 x2=4 的预期解决方案。
在帮助中提到了 R^-1。但遗憾的是,我不知道这意味着什么......任何提示都表示赞赏。
r - Quadprog 用于带约束的投资组合优化
首先让我说我是 Stack Exchange 网站的新手,如果这是一个低质量的问题,我深表歉意。
我正在尝试使用 R 中的 Solve.QP 运行平均方差投资组合优化,并在 Stack Overflow 上查看了有关此问题的几个先前问题,以找出如何正确执行此操作但没有运气。
我想要的约束如下:
- 多头/空头组合:权重可能为负
- 市场中性:权重之和 = 0
- 无杠杆:每个权重都在 -1 和 1 之间 + 所有正权重之和 = 1,所有负权重之和 = -1
我正在运行这个优化。100 个资产,因此出于演示目的,我用 5 个资产(使用假数据)复制了代码的优化部分。完整代码见文末。
假设我的 5 个资产有以下 5 个预期回报
预计有两种资产表现不佳,而预计有 3 种资产会产生正回报。
Amat 和 bvec 然后看起来像这样
- 第一行表示市场中性约束
- 第二行表示投资组合的长边必须有权重加到 1
- 第三行表示短腿的权重必须加到 -1
- 接下来的 5 行表示每个单独的权重必须 >= -1
- 最后 5 行表示每个单独的权重必须 <= 1
优化运行不会引发错误,但(并非总是)强制执行杠杆约束
其中w_opt
包含优化的权重。
我已经设置meq=3
指定三个第一个约束是相等的。
gurobi - 如何使用求解器 Gurobi 进行优化?
我想用 Gurobi 求解器优化一个二次问题。这些矩阵是我已经建模的,它与其他求解器配合得很好。我的 Gurobi 代码如下所示:
在示例中,仅存在不存在实值 c(在我的情况下为 q)的情况。所以,我在表格中设定了目标,x @ Q @ x + q @ x
但答案是
障碍解决模型在 0 次迭代和 0.01 秒内。模型不可行
我该如何解决这个问题?为什么它不能与 gurobi 一起使用,但这些矩阵与其他求解器(例如 osqp、cvxopt..
python - 找到最适合目标向量的向量的线性组合
我试图在多个预测中找到权重,以给出尽可能接近已知目标的结果(例如,均方误差)。
这是一个简化的示例,显示了跨四个数据点的三种不同类型的预测:
其中一个预测总是大约 0.9,一个总是大约 1.1,一个总是大约 1.2。
我想要一种自动查找[0.5, 0.5, 0.0]
三个预测的权重的方法,因为平均前两个预测并忽略第三个预测非常接近目标。理想情况下,权重将被限制为非负且总和为 1。
我想我需要使用某种形式的线性规划或二次规划来做到这一点。我已经安装了 Python quadprog 库,但我不确定如何将这个问题转换为像这样的求解器所需的形式。谁能指出我正确的方向?
python - 使用 cvxopt 函数时如何摆脱“ValueError:除连接轴之外的所有输入数组维度必须完全匹配”错误?
首先,我以适当的形状定义了一些矩阵和向量。
初始化
定义目标函数矩阵
Q 和 C 分别是目标函数 1/2 x^TQ x +C^T x 的矩阵和向量。
##创建平等主题
在我的问题中,我只有相等的约束以及定义自爆的上限和下限。
##创建形状的上限和下限(1,96)
##错误
如果有人可以帮助我,我很高兴。
python - 在 Python 中安装/使用 quadprog
以前有人在 Python 中使用过 quadprog 吗?我尝试安装和导入它,它是成功的,但是当我尝试使用它时,我收到以下消息:
安装:
r - 将 Solve.QP 代码更改为最大从最小方差返回给定约束
我在寻找类似问题的解决方案时发现了以下代码,在这里:r - Portfolio Optimization -solve.QP - Constraints are Inconsistent
请注意,在上面的代码中,我已将目标回报率从 5.2% 更改为 6.6%,因为考虑到限制,5.2% 是不可行的。
您如何更改上述代码以最大化投资组合方差 <= 140 的预期回报。投资组合方差:wgts%*%Cov%*%t(wgts)
所有权重 >=0 和 <=50% 的约束仍然存在。
quadprog - 错误:quadprog(Ubuntu,python)的构建轮失败
在 macos 中我没有收到该错误,在 Windows 中我必须安装 Microsoft Visual Studio,但在 Linux 上我不知道如何解决这个问题。
在我输入终端后显示错误:
我尝试了很多方法并寻求帮助。