问题标签 [quadratic-programming]

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 回答
163 浏览

python - CVXOPT 要求被忽略

我正在尝试解决 cvxopt 中的二次问题,但似乎忽略了其中一项要求

我想解决这组方程:

这是代码:

但我得到这样的结果:

所以不满足 x <= 20 的要求。可能是什么原因?

0 投票
1 回答
383 浏览

optimization - Cplex 可以将两个稀疏矩阵作为 Q 的输入吗

我正在尝试使用CPLEX MATLAB API最小化具有线性约束的非常大的二元二次规划问题。然而,二次函数 f = x'Qx 有一个非常密集的矩阵 Q。我可以用非常稀疏的矩阵 U 和 A 重写 Q:Q = U A。

因此,有没有办法将这些矩阵传递给 CPLEX,而不是完整的矩阵 Q(太大而无法存储)?

0 投票
1 回答
319 浏览

r - 一个数值问题solve.QP,R中的二次规划函数

假设我有以下数字很大的二次规划问题:

约束是Ax >= -e:我将所有变量限制在 [0,1] 内。我猜是因为这里涉及的数字太大,会导致一些数字问题。如果我跑

我会得到Error in solve.QP(Q, c, A, bvec = -e) : constraints are inconsistent, no solution!

当我尝试将所有内容除以一个很大的数字以缩小这些疯狂的数字时,该函数能够生成一些输出,但不正确:

我认为正确的答案是

我真的不需要在这里进行 QP,因为Q矩阵是对角的,但我只是想以此作为说明,并就处理与solve.QP(). 假设我有一个密集Q矩阵,我应该怎么做才能得到正确的结果?

提前致谢!

0 投票
0 回答
236 浏览

r - 使用 quadprog 对系数进行约束的加权最小二乘

我在使用 R 的quadprog库来实现具有 2 个限制的加权最小二乘时遇到了困难。第一个限制是所有系数必须大于或等于 0。第二个限制是系数需要总和为 1。

更正式地说,我试图对 W 最小化以下等式:(Y - XW)^T * V * (Y - XW),其中 V 是对角矩阵。

Y 是 (px 1),X 是 (pxs),W 是 (sx 1),V 是对角线 (pxp)。下面是一个可重现的例子:我正在尝试找到合适的参数来使用quadprog::solve.QP

0 投票
1 回答
1096 浏览

optimization - 最先进的非凸 QCQP 求解器?

你知道非凸 QCQP 求解器吗?对于学者或学生来说,免费软件将是一件大事。我试图找到这样的求解器但没有成功......

我的问题是以下形式:

  • 具有线性(严格和非严格)不等式
  • 在不等式之间具有逻辑约束(例如等价、含义)
  • 令 X = {x1, ..., xn} 是一组变量,而 Y = {y1, ..., ym} 是一组变量。二次约束的形式如下:
    • x1 = x1y1 + x2y2
    • x2 = x1y3 + x3y4
    • x3 = x2y5 + x1y6
    • ...
    • 左侧 X 的一个变量
    • 等式约束
    • 系数等于 1 的两个变量的乘积之和
    • st 两个变量的每个乘积仅出现在 X 的一个变量和 Y 的一个变量之间。

目标函数是线性的。

谢谢您的帮助

0 投票
0 回答
2790 浏览

matlab - 使用 fmincon 违反步长容差

我正在尝试使用 MatLab 的 fmincon 函数和 SQP 算法来解决非线性约束优化问题。正如我在文献研究中发现的那样,这个求解器已成功应用于我的问题。

我知道我的问题的解决方案,但 fmincon 很难可靠地找到它。在我的边界内使用随机生成的起始值运行优化 100 次时,我得到了大约 40% 的好结果。“好”意味着结果接近我接受的最佳值,尽管这些“好”结果对应于不同的 ExitFlags。最常见的是退出标志 -2 和 2:

“不良”结果偏离最佳解决方案的 2% 左右,并且也对应于 ExitFlags 2 和 -2。

我玩弄了公差,但没有成功。当放宽约束容差时,ExitFlag -2 的数量会减少,并且会出现一些 ExitFlag 1 的情况,但因此与最优解的偏差会增加。

一个大问题似乎是步长违反了它的容差。由于步长/步长范数太小(X 的相对变化低于 TolX),求解器通常在 2 或 3 次迭代后退出。有没有办法解决这些问题?我想调整解算器 In 以可靠地获得适当的结果。

供您参考,使用的选项:

0 投票
2 回答
1409 浏览

python - CPLEX 目标函数中的线性和二次项

我想最小化一个相当简单的目标函数,但是我在从 Python API 到 CPLEX 的正确调用时遇到问题

我查看了如何使用set_quadraticset_quadratic_coefficients here,但这并没有解决我的问题。

我的目标函数有一组线性变量和一组二次变量

一切正常,直到最后一次调用添加二次项。此时 CPLEX 将引发以下错误CPLEX Error 1226: Array entry 13919 not ascending.两次,忽略该命令,并且 Python 代码继续。

我查了错误,但这似乎也没有帮助我。

我确实尝试重新编写上面的内容以首先按名称和下限添加变量......然后再调用set_linearset_quadratic但这也无济于事。

我在这里想念什么?

0 投票
1 回答
282 浏览

c - 如何在 CPLEX 中为 UBQP 获得多个解

我已经在 C 中的 Callable Library 中的 CPLEX(v 12.6.2)中实现了一个 UBQP(这是一个没有约束和二进制变量的二次问题),我有兴趣获得多个解决方案(不仅是最佳解决方案,还有其他解决方案)可行的)。

我采用 CPLEX 原始 populate.cpp 代码并获取其例程以获得解决方案池,例如 CPXpopulate(env,lp)。

问题是我的解决方案池的大小始终为 1,它只包含最佳值。相反,如果我给 populate.cpp 一个 LP 问题(即最小化线性问题),它可以正常工作。

我尝试了常用的命令:

这应该会强制 CPLEX 生成更多解决方案,但事实并非如此。

如果我在 CPXPARAM_MIP_Pool_Intensity 中设置 N = 4(即最大值),则无法优化,但如果设置 N = 0,...,3 我得到的解决方案不会超过 1 个。

有没有办法在这类问题中获得多种解决方案?

0 投票
3 回答
5487 浏览

python - 约束线性回归/二次规划python

我有一个这样的数据集:

并且想要拟合约束线性回归

y = b1*a + b2*b + b3*c

其中所有 b 的总和为 1 且为正数:b1+b2+b3=1

此处指定了 R 中的类似问题:

https://stats.stackexchange.com/questions/21565/how-do-i-fit-a-constrained-regression-in-r-so-that-c​​oefficients-total-1

我怎样才能在python中做到这一点?

0 投票
1 回答
501 浏览

gurobi - Pearson 相关系数是否适合二次规划求解器的目标函数?

Pearson 相关系数——一个向量 x 是外生的,另一个向量 y 作为选择变量——对于像 Gurobi 这样的二次规划求解器来说是一个合适的二次目标函数吗?