首页 > 解决方案 > 已安装 cplex 并导入 cplexerror 但仍有语法错误

问题描述

我在以下几行中遇到错误:

从 cplex.exceptions 导入 cplex 导入 CplexError def capAst_LP(prod, C, p, v, meta = None):

# st = time.time()    

try:
    my_prob = cplex.Cplex()

    my_obj = list(p) #including the 0th coordinate
    my_ub = [cplex.infinity for i in p] #omitting lb as 0
    my_colnames = ['z_'+str(i) for i in range(prod+1)]
    my_rhs = [1]+[0 for i in range(prod+1)]
    my_rownames = ['sum2one','capaciy'] + ['lpr_'+str(i+1) for i in range(prod)]
    my_sense = ''.join(['E']+['L' for i in range(prod+1)])
    # print my_obj
    # print my_ub
    # print my_colnames
    # print my_rhs
    # print my_rownames
    # print my_sense

    my_prob.objective.set_sense(my_prob.objective.sense.maximize)
    my_prob.variables.add(obj = my_obj, ub = my_ub, names = my_colnames)
    
    # print my_prob.variables.get_lower_bounds()
    # print my_prob.variables.get_upper_bounds()
    # print my_prob.variables.get_names()

    rows = []
    rows.append([range(prod+1),[1 for i in range(prod+1)]])
    vcoeff_vec = [-C]
    for i in range(1,prod+1):
        vcoeff_vec.append(round(v[0]*1.0/v[i],7))
    rows.append([range(prod+1),vcoeff_vec])
    for i in range(1,prod+1):
        inequ_vec = [-v[i]]
        for j in range(1,prod+1):
            if j==i:
                inequ_vec.append(v[0])
            else:
                inequ_vec.append(0)
        rows.append([range(prod+1),inequ_vec])

    # print rows

    my_prob.linear_constraints.add(lin_expr = rows,
                                senses = my_sense,
                                rhs = my_rhs,
                                names = my_rownames)

    my_prob.set_log_stream(None)
    my_prob.set_error_stream(None)
    my_prob.set_warning_stream(None)
    my_prob.set_results_stream(None)
    st = time.time() 
    my_prob.solve()

except CplexError, exc:
    print exc
    return

除了 CplexError, exc: print exc return

我已经安装了 cplex,我正在使用 python 3.7。我将迭代代码。

文件“”,第 304 行,除了 cplexError,exc:^ SyntaxError:无效语法

谢谢,

温顿

标签: cplex

解决方案


except 子句的语法不正确,用于as将 exceotion 分配给 Python 变量。

except CplexError as cpx:
    print(cpx)
    return

顺便说一句,你为什么不使用基于表达式的 docplex?(https://pypi.org/project/docplex/


推荐阅读