在 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 变量。
我正在尝试设置最小化问题,并限制所使用的决策变量的数量。
是否有可能在线性规划框架内做到这一点?还是我被迫使用更复杂的优化框架?
假设所有 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 变量。