我需要使用Java中的CPLEX API枚举与LP的所有极端相对应的所有基础。不幸的是,我找不到使用CPLEX的任何方法。有解决方案吗?
如果没有,我自己做,但是我需要打基础。使用CPLEX枚举所有基础并检查基础是否可行的方法是否简单?
答案 0 :(得分:1)
简短的回答:不。
没有简单的方法可以做到这一点。一种可能的方法(但有点麻烦)是使用二进制变量对基础进行编码。例如:
xb[i] = 1 for basic variables
0 for non-basic variables
我们需要对非基本变量添加约束:它们将受到约束。即对于非负变量x[i]
,我们有
xb[i]=0 => x[i]=0
(这是一个指标约束)。而且我们知道
sum(i,xb[i]) = m
(基本变量的数量等于模型中的行数)。
然后使用Cplex的解决方案池来列举所有可能的可行基础。 link中对此方法进行了说明。 (此特定示例列举了所有最佳基准,但告诉Cplex列举所有可行的基准并不难)。