首页 > 解决方案 > 使用 CVXOPT 的最小交易规模 - 摆脱可忽略不计的权重

问题描述

我已经使用 CVXOPT 来运行优化问题。虽然我喜欢结果,但我试图从最佳解决方案中去除可忽略的权重,但我也希望 w=1 的总和。

如何限制优化器允许的最小交易规模?其中对于最小尺寸不打算使用最小重量,即如果 x <> 0 且 x < y 则 x = 0 否则 x = x

或者,如果 w < x 有没有一种方法可以得到一个不考虑(并迭代优化)的输出?

标签: optimizationcvxpycvxopt

解决方案


小分配有两个不同的原因。

(1) 每个求解器都使用公差。这甚至可以允许微小的负权重。内点求解器通常会提供分配不是 0 而是非常小的数量的解决方案。那是因为算法的性质(他们希望留在可行区域的内部)。通常,主动集算法比内点或一阶算法提供“更好”的解决方案(带有实零)。一般来说,公差很小,可以在求解后通过四舍五入来修复。一些高级求解器可能会在最后进行交叉以清理解决方案(技术术语:找到基本解决方案而不是内部解决方案)。这是小事,可能不是您要抱怨的。

(2) QP 解决方案经常使用很多仪器,带有很多小权重。我们可以在建模级别通过说:工具 i 可以是 0 或大于下限(比如 5%)来防止这种情况。这可以用所谓的半连续变量(或二元变量)建模。该模型变成了MIQP模型(我认为 CVXOPT 没有 MIQP 求解器,但 Cplex 和 Gurobi 等求解器包含 MIQP 功能)。另一种方法是明确建模交易成本,这也将禁止非常小的分配。此外,LAD(最小绝对偏差)模型往往比二次模型产生更少的小分配。

注意:此处显示了缺少 MIQP 功能时的启发式方法。


推荐阅读