Optimization 使用CVXOPT的最小交易尺寸-去掉可忽略的重量

Optimization 使用CVXOPT的最小交易尺寸-去掉可忽略的重量,optimization,cvxpy,cvxopt,Optimization,Cvxpy,Cvxopt,我已经使用CVXOPT运行了一个优化问题。 虽然我喜欢这个结果,但我试图从最优解中去掉可忽略不计的权重,但我也希望得到w=1的和 我如何约束优化程序以获得允许的最小交易规模?其中,对于最小尺寸,不打算使用最小重量 i、 e.如果x 0和x

我已经使用CVXOPT运行了一个优化问题。 虽然我喜欢这个结果,但我试图从最优解中去掉可忽略不计的权重,但我也希望得到w=1的和

我如何约束优化程序以获得允许的最小交易规模?其中,对于最小尺寸,不打算使用最小重量 i、 e.如果x 0和x

或者有一种方法,如果W < P>不考虑(并且迭代优化),对于小分配有两个不同的原因。

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

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


注:当MIQP功能缺失时,将显示一种启发式方法。

小分配有两种不同的原因

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

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


注:显示了MIQP功能缺失时的启发式方法。

谢谢您的回答。我认为CVXOPT会允许在x为0时用最小尺寸约束结果,但x