获取CPLEX中Linear Program的所有要点

时间:2019-03-14 14:39:22

标签: java linear-programming cplex basis

我需要使用Java中的CPLEX API枚举与LP的所有极端相对应的所有基础。不幸的是,我找不到使用CPLEX的任何方法。有解决方案吗?

如果没有,我自己做,但是我需要打基础。使用CPLEX枚举所有基础并检查基础是否可行的方法是否简单?

1 个答案:

答案 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列举所有可行的基准并不难)。