Cplex Python错误获得基础行状态错误

时间:2018-07-18 04:11:28

标签: python linear-programming cplex

声明cplexProblem.solution.basis.get_row_basis()给出以下错误TypeError: 'NoneType' object is not subscriptable

稍微检查一下代码,然后在_procedural.py中, getbase_r 中似乎存在一个错误。如果不是返回LAU.array_to_list(rstat,numrows)

,请检查最后一行返回LAU.array_to_list(cstat,numrows)
_procedural.py
def getbase_c(env, lp):
    numcols = CR.CPXXgetnumcols(env, lp)
    cstat   = _safeIntArray(numcols)
    rstat   = LAU.int_list_to_array([])
    status = CR.CPXXgetbase(env, lp, cstat, rstat)
    check_status(env, status)
    return LAU.array_to_list(cstat, numcols)

def getbase_r(env, lp):
    numrows = CR.CPXXgetnumrows(env, lp)
    cstat   = LAU.int_list_to_array([])
    rstat   = _safeIntArray(numrows)
    status = CR.CPXXgetbase(env, lp, cstat, rstat)
    check_status(env, status)
    return LAU.array_to_list(cstat, numrows)

有人见过这个问题吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您确实发现了一个错误。此问题已在CPLEX 12.7.1中修复。

但是,作为解决方法,您可以改用Cplex.solution.basis.get_basis()。例如: cplexProblem.solution.basis.get_basis()[1]

实际上,在12.7.1中不推荐使用get_row_basisget_col_basis方法,而是推荐使用get_basis(请参见发行说明here中不推荐使用的部分) ,随后在12.8中删除。