在 ILP 问题中,是否可以 constrain/penalize 使用决策变量的数量?

In an ILP problem, is it possible to constrain/penalize the number of decision variables used?

我正在尝试设置最小化问题,并限制所使用的决策变量的数量。

是否有可能在线性规划框架内做到这一点?还是我被迫使用更复杂的优化框架?

假设所有 x 都是非负整数:

x1, x2, x3, x4, x5 >= 0

1) 约束:是否可以设置问题使得不超过 3 个 x 可以是非零的?例如如果

x1 = 1, x2 = 2, x3 = 3 then x4 = 0 and x5 = 0 

2)惩罚:假设问题有3种可能的解法:

a) x1 = 1, x2 = 2, x3 = 3, x4 = 0, x5 = 0
b) x1 = 2, x2 = 3, x3 = 0, x4 = 0, x5 = 0
c) x1 = 3, x2 = 0, x3 = 0, x4 = 0, x5 = 0

由于简单,解决方案 (c) 优于解决方案 (b),解决方案 (b) 优于解决方案 (a),即 'using' 较少的决策变量更可取。

在这两个问题中,我都将问题简化为 5 个 x,但实际上我有 100 个 x 需要优化。

我可以看到如何在使用 indicator/delta 变量的通用优化框架中执行此操作,但无法弄清楚如何在线性规划中执行此操作。如有任何帮助,我们将不胜感激!

您可以构建自己的指标(并且不受限于您还需要的一些非常具体的问题)。

假设所有整数变量x0, x1, ..., xn都有一个上限ub_i,引入二进制变量u0, u1, ... un和post 新约束,例如:

u1 * ub_1 >= x1
u2 * ub_2 >= x2
...

(ub_x 常量通常称为 big-M 常量;但为了更好的松弛,我们将它们保持尽可能小)

那么你的基数约束就是:

sum(u) <= 3

当然,您也可以在任何您可能想要使用的惩罚设计中使用这些 u 变量。