非零降低的成本:上限或下限处于活动状态?

问题描述

降低的成本给出了与变量的框式约束相对应的对偶变量,如对此问题的相关答案所指出:LP: postive reduced costs corresponding to positive variables?

我如何知道下限或上限是活动约束?当然,我可以检查变量值与其边界之间的差是否小于某些ε。但是,这种ε的选择对我来说还不清楚,因为模型可能会通过将下限设置为上限来尝试修复变量。在这种情况下,没有ε可以明确表示哪个边界是活动边界。

cplex是否提供在其C ++ API中处于活动状态的绑定信息?是否有其他LP解算器呢?还有另一种技巧来找出活动界限吗? 谢谢。

解决方法

在很大程度上,您可以查看标志。降低成本的规则是:

               Basic   Non-basic-at-LB     Non-basic-at-UB      
minimization     0           >= 0               <= 0
maximization     0           <= 0               >= 0

与此有关的一些问题:

  • 并非所有求解器都可以遵循此规则(尤其是最大化时)。
  • 变性可能会使事情变得困难

大多数求解器将使您可以访问基本状态。例如。 Cplex具有BasisStatus,它可以为您提供变量的基本状态:Basic,AtLower,AtUpper或FreeOrSuperbasic。