问题标签 [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 回答
359 浏览

r - 二次规划最大化——矩阵不是正定的

我正在尝试使用 R 中的 quadprog 程序优化以下简单的目标函数:

最大_{x} x' A x

我看到的大多数优化问题都使用最小化,但如果我简单地使用 -A 而不是 A,我会得到一个错误,即 A 不再是正定的。我对这种事情很陌生。有谁知道如何解决一个简单的二次最大化问题?

这是重现错误的示例代码:

这是产生的错误:

solve.QP(Dmat = -mat, dvec = rep(0, 5), Amat = diag(5), bvec = rep(0, : 二次函数中的矩阵 D 不是正定的!

0 投票
1 回答
117 浏览

r - R中的二次规划,参数(约束)多于观察值

我想运行一个受约束的线性回归,使得系数是非负的并且总和为 1。通常这可以通过二次规划来完成,但是,我的参数(约束)比观察值(p > n)更多。我怎样才能做到这一点?

此 quadprog 解决方案仅适用于 n > p 的问题:

0 投票
0 回答
27 浏览

r - 使用 quadprog 包签署错误/反转结果

我正在使用quadprog两个约束(资产权重之和等于 1)进行优化,资产权重在 0 到 10% 之间。一切正常,但我不明白的结果与我的结果相反。当TAU(我的风险承受能力)最低(= 0)时,我的结果矩阵中的值应该最低。这就是说,在我最低的风险承受能力下,我将获得最低的回报。这遵循现代投资组合理论。同样,当TAU我的返回向量最高时,我的返回向量也应该最高。我知道发生了一些逆或符号错误。有人可以解释吗?

0 投票
0 回答
67 浏览

python - Mpmath:quadprog 或 lsei 等价物?

我想以 mpmath 精度求解一个二次程序。该问题可以表示为具有线性等式和不等式约束的最小二乘,或具有线性等式和不等式约束的二次规划。

我知道LSEIfortran 例程,可以从Rpython和其他软件访问。solve.QPfromR quadprog包也非常适合这项任务。最后,SLSQPfortran 例程也能正确完成这项工作。

但是我需要任意精度,为此我正在使用mpmathpyhton 库。你知道这些算法之一的一些实现mpmath吗?

0 投票
1 回答
199 浏览

r - R最小方差投资组合:求解不可逆矩阵

我想解决有关使用 R 的最小方差投资组合的优化问题,如本网站所述:http ://enricoschumann.net/R/minvar.htm

问题是:我要使用的矩阵的列 (=assets) 比行 (=observations) 多,这就是为什么它不是正定且不可逆的。

您可以通过使用与网站上的变量相反的值来重新创建此问题,这会导致以下结果:

这导致以下错误

有没有人知道其他函数来解决 mData 的优化问题使 mData 可逆而不丢失信息的方法?

期望的结果是最小方差投资组合中每种资产的权重。

0 投票
1 回答
1152 浏览

least-squares - CVXPY 在二次规划优化问题上返回不可行/不准确

我正在尝试使用 CVXPY 来解决非负最小二乘问题(附加约束是解向量中的条目之和必须等于 1)。但是,当我使用 SCS 求解器在这个简单的二次程序上运行 CVXPY 时,我让求解器运行最多 100000 次迭代,最后我遇到了一个错误,说二次程序不可行/不准确。但是,我非常有信心二次规划的数学设置是正确的(因此问题的约束不应该是不可行的)。此外,当我在较小的 A 矩阵和较小的 b 向量(只有前几行)上运行该程序时,求解器运行良好。这是我的代码和当前错误输出的快照:

下面是输出:

有谁知道为什么:(1) CVXPY 可能无法解决我的问题?这只是需要更多求解器迭代的问题吗?如果有,有多少?(2) 列名“pri res”、“dua res”、“rel gap”等是什么意思?我正在尝试按照这些列中的值来了解求解过程中发生的情况。

此外,对于那些想要跟随我正在使用的数据集的人,这里是一个包含我的 A 矩阵(维度 278481x61)的 CSV 文件,是一个包含我的 b 向量(维度 278481x1)的 CSV 文件。提前致谢!

0 投票
1 回答
111 浏览

python - Octave 无法识别 Matlab 的 quadprog 函数

今天我第一次使用 Octave 作为 Matlab 的替代品,尝试从我的 Python 脚本中调用它,而不是使用 matlab.engine。根据我的发现,这两者是兼容的,因此在 Octave 中运行 Matlab 文件并不复杂。但是,我的一个 Matlab 脚本包含函数“quadprog”,当在我的 Octave 命令提示符中调用它时会产生以下错误:

我怎么解决这个问题?另外,我在我的 Octave 脚本中加载了 optim 包.. 没有用,当使用这个命令检查它是否已经安装时pkg list,它后面跟着一个星号(当它发生时optim*)这应该是什么意思?

问候。

0 投票
1 回答
241 浏览

python - 在 Linux Mint 20 上安装 quadprog 失败

有人在Python 3.8Linux Mint 20上安装了这个quadprog库吗?我正在尝试安装并出现以下错误:

0 投票
0 回答
115 浏览

numpy - 由于 Buffer 在 quadprog SVM 实现中的尺寸错误,我该如何纠正此值错误?

我正在使用 quadprog 模块来设置用于语音识别的 SVM。我从这里获取了一个 QP 实现:https ://github.com/stephane-caron/qpsolvers/blob/master/qpsolvers/quadprog_.py

这是他们的实现:

形状:

我也有它qp_b最初被分配给hstack一个数组arr = array([0])h但形状为:(1,)防止 numpy 连接数组。我通过插入[0] 来修复此错误。

当我尝试时,quadprog_solve_qp(P, q, G, h, A)我得到:

而且我不知道它来自哪里,也不知道我能做什么。如果有人知道 quadprog 模块是如何工作的,或者只是我可能做错了什么,我会很高兴听到。

0 投票
0 回答
28 浏览

matlab - 为什么带有 fitcsvm 的 SMO 求解器需要比 L1-QP 求解器更长的时间才能收敛到 MATLAB 中较大的 BoxConstraint (C) 值?

我正在为一个班级做一个迷你项目,我们被要求在 fitcsvm 中实现 L1-QP(求解器)和 SMO(求解器),并将它们的收敛时间与越来越多的示例进行比较。问题本身不是线性可分的,但我们使用的是 Soft Margin SVM,因此它确实会收敛到 fitcsvm 的解决方案。

下面是我得到的结果: Y 轴是每种方法(绿线、蓝线和红线中的 3 种方法)收敛到解决方案所需的平均时间。

X 轴是样本数,从 100-1000 开始,以 100 为增量(100,200,300,...,1000)。我们从相同的分布中采样以增加数据集的大小。

蓝线是 fitcsvm('Solver'=L1-QP),绿线是 fitcsvm('Solver'=SMO)。红线是我自己使用 quadprog 实现的 SVM(没有任何 fitcsvm),我使用一个简单的数据集确认了它的有效性。

左图的 C 值('Boxconstraint')为 0.1,右图的 C 值为 100。

从两张图中可以看出,当 C=0.1(小值)时,SMO 优于其他方法,在右图中,当 C=100 时,SMO 开始变得比其他方法效率低。我在文档中看到了一个解释,上面写着:

  • 支持向量的稀疏性是 SVM 分类器的理想属性。要减少支持向量的数量,请将 BoxConstraint 设置为较大的值。这个动作增加了训练时间。

上述解释了为什么右边的情况可能会发生,但它并没有说明 SMO 和 quadprog 是否都是这种情况,或者只是 SMO。如果该陈述仅适用于 SMO,这是规范吗?我的意思是:在实际的 SMO 实现(不仅仅是 Matlab 的 SMO 实现)中,这是您在所有或大多数情况下所期望的吗?如果这是预期的和常态,有人可以解释为什么会发生这种情况吗?在解释过程中来自 SMO 实现的方程将受到高度赞赏。

结果

此外,我仍然无法解释为什么当 C=100(右图)时 SMO(绿线)突然变快,当数据集样本大小在某些点而不是在其他点(上升和下降)增加时。谢谢你。