问题标签 [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.
python - CVXOPT 二次编程接口
为 CVXOPT 提供的 QP 求解器解决了以下形式的问题(参见http://cvxopt.org/userguide/coneprog.html#quadratic-programming):
这很好用,但是当想要通过两侧的不等式解决问题约束时会有点尴尬:
我可以将第二个问题重新定义为第一个问题,方法是将维度数加倍并要求new_x
将其old_x
堆叠在自身之上:
我想我可以通过为A
. h1
然后,我可以将和h2
不等式编码到 中,方法new_G * new_x <= new_h
是设置new_h
为h1
堆叠h2
并new_G
成为对角矩阵,其中n
连续1
s 后跟对角线上的n
连续-1
s。
无论如何,以上内容非常笨拙,它使我的问题的维度增加了一倍,甚至可能不起作用。
是否有更好的方式来表达 CVXOPT 中的第二个问题?
optimization - 凸QCQP的实用求解器?
我正在使用凸 QCQP,如下所示:
所以这个问题除了目标之外只有一个二次约束,并且一些变量是非负的。两种二次形式的矩阵都是单位矩阵,因此是正定的。
我可以将二次约束移至目标,但它必须具有负号,因此问题将是非凸的:
问题的大小可以达到 10000 个线性约束,具有 100 个非负变量和几乎相同数量的其他变量。
该问题也可以重写为 MIQP,因为 z_i 可以是二进制的,并且 z'Iz=n 可以删除。到目前为止,我一直在通过 AIMMS 为 MIQP 使用 CPLEX,但这个问题的速度非常慢。将问题的 QCQP 版本与 CPLEX、MINOS、SNOPT 和 CONOPT 一起使用是没有希望的,因为它们要么找不到解决方案,要么解决方案甚至不接近我先验知道的近似值。
现在我有三个问题:
您是否知道任何方法/技术可以在不使用 MIQP 的情况下摆脱这种形式的二次约束?
这个 QCQP 有没有“好的”求解器?好的,我的意思是一个在合理的时间内有效地找到全局最优解的求解器。
你认为使用 SDP 松弛可以解决这个问题吗?我实际上从未解决过 SDP 问题,所以我不知道 SDP 版本的效率如何。有什么建议吗?
谢谢。
matlab - L1 正则化的 Matlab quadprog 参数
我一直在努力解决 Matlab 中 quadprog 函数的参数化问题,如下所示:
其中 x 是 x 0 w 0 +x 1 w 1 +x 2 2 w 2 的矩阵,y 是目标向量,其中包含 x 的每一行的值,w 是权重向量,lambda 是标量值。
我已经尝试过了,但我确定它不正确:
有人可以指导我使用 quadprog 函数的参数吗?
optimization - 带矩阵的 Mathematica 中的约束二次最小化
我正在尝试使用 Mathematica 中的矩阵来解决熟悉的均值方差优化问题,并在解向量“w”上添加一些约束。(均值方差优化问题基本上是选择如何根据它们的均值和协方差将给定的预算分配给许多资产,以便在选定的平均回报水平下最小化投资组合的风险。)
我的问题:我不确定使用哪个函数来执行目标函数的最小化,这是二次的:
obj = 0.5*w'* Sig * w
其中 w 是 N 个资产中每个资产的 Nx1 权重向量,Sig 是 NxN 协方差矩阵
从我所能找到的(我对 Mathematica 相当陌生)看来,FindMinimum、NMinimize 等似乎只处理标量输入,而 LinearProgramming 用于线性目标函数(不是二次的) ) 在权重向量 w 中。我很可能在这里错了 - 任何帮助我转向正确功能的帮助将不胜感激!
如果有帮助,我附上了我的示例代码——我不确定如何,但如果有上传示例 .csv 数据的地方,如果有人能指出我也可以这样做。
非常感谢您提供的任何帮助。-担
代码
matlab - 矩阵优化的加权和
我是优化的初学者,欢迎该领域的任何指导。
我有 15 个矩阵(即Di
大小为(n*m)
),并希望找到最佳权重(即)wi
以对它们进行加权平均,并制作一个更类似于给定矩阵(即Dt
事实上我的目标函数是这样的:
如何在 Matlab 中优化此功能?
java - BOBYQA 算法
我正在使用 BOBYQA 算法来解决优化问题。我对这个算法的效率以及如何设置正确的参数有疑问。Bobyqa 基于信任域,为此需要设置一些插值来逼近二次公式的函数。强烈建议在 n+2 和 2n+1 之间选择这个数字。我有一些困难,看看如何选择合适的。我有 9 个未知数的问题,我凭经验选择了最佳数字。我还注意到这个参数可能会大大增加计算时间。如果有人可以分享他自己对该算法的经验,那将很有帮助。
谢谢
matlab - 在matlab中实现二次规划
我遇到了一个我想在本文中求解的方程。(我不确定它是否可以被公众阅读)。它是关于在方程 10 的约束下最小化方程 9(见附件)。
n 是一个 3 维向量(所以 n 可以表示为一个 Px3 数组),而 c 只是一个长度为 K 的向量(所以 c 只是一个 1xK 数组)。I'(一个 PxL 阵列)和 l(一个 3xL 阵列)都是已知的。我需要找到 n 和 c 的集合。
该论文指出:
“我们使用 MATLAB 实现信任区域反射二次规划进行优化。”
我不知道如何做到这一点。我不确定它指的是quadprog还是直接使用 fmincon。无论哪种情况,我都不知道如何以适当的形式为函数调用编写目标方程和约束方程。如果有人能告诉我如何重写方程并使用“用于优化的信任域反射二次规划”,或者提供其他有效的方法来求解该方程,那就太好了。
谢谢
scipy - 如何解决这个凸优化?
这很简单,我知道,但我对凸优化知之甚少
问题定义:
- 目标函数是 II b - Aw II norm 2
- 未知向量 [w1, w2, ..., wn]
一个数据矩阵 A (mxn),每行有 n 个分量([ai1, ai2, ..., ain]),m 是度量的数量。ai1, ai2, ..., ain 本身是高度相关的
约束 wi >= 0 且 wi 之和为 1,基本上 wi 可以解释为权重
我可以使用哪个 python 或 matlab 包,也许?
mathematical-optimization - 如何将二次程序转换为线性程序?
我有一个优化问题,它在目标函数中包含 2 个乘法变量,使模型成为二次方。
我目前正在使用 zimpl 来解析模型,并使用 glpk 来解决它。由于它们不支持二次规划,我需要将其转换为 MILP。
. 第一个变量是实数,在 [0, 1] 范围内,第二个变量是实数,范围从 0 到 inf。这个可以毫无问题地是整数。
目标函数中的关键部分如下所示:
我在约束中遇到了类似的问题,但它们很容易解决。
我该如何解决目标函数中的这种问题?
r - 使用 quadProg 库进行约束二次优化
我有一个A
长度向量N
。我也有N*N
矩阵C
。我想最大化以下方程:
其中w
是一个长度为 的向量N
,约束条件是每个w
都是非负的,并且所有的总和w
为 1。
我见过一个叫quadProg
. 那里我需要指定:
Dmat = C
, dvec = A
, 和bvec = w
但不确定如何在那里应用上述约束。
我想我可以提供Amat
一个单位矩阵,它将保持所有w
非负数。但不确定如何保持w
标准化(总和为零)。实际上我也可以稍后将它们标准化,但我仍然想知道我是否可以在这里自己做。