Python/CPLEX“;不一致的论点”;错误

Python/CPLEX“;不一致的论点”;错误,python,jupyter-notebook,constraints,linear-programming,cplex,Python,Jupyter Notebook,Constraints,Linear Programming,Cplex,我试图在基于Jupyter的Python中使用CPLEX解决以下简单的LP问题,并得到以下错误 谁能帮我解释一下这个错误吗。LP问题有6个变量和3个约束。我已经检查了定义的列表的维度,它们与问题的大小一致 Maximize {obj: - 28.44 x1 - 27.38 x2 - 26.44 x3 - 25.38 x4 - 26.44 x5 - 25.38 x6} Subject To c1: x1 + x2 = 0 c2: x3 + x4 = 0 c3: x5 + x6

我试图在基于Jupyter的Python中使用CPLEX解决以下简单的LP问题,并得到以下错误

谁能帮我解释一下这个错误吗。LP问题有6个变量和3个约束。我已经检查了定义的列表的维度,它们与问题的大小一致

Maximize {obj: - 28.44 x1 - 27.38 x2 - 26.44 x3 - 25.38 x4 - 26.44 x5
- 25.38 x6} 
Subject To 
 c1:   x1 + x2 = 0
 c2:   x3 + x4 = 0
 c3:   x5 + x6 = 0
Bounds
    -2.1 <= x1 <= 2.1
    -2.1 <= x2 <= 2.1
    -2.1 <= x3 <= 2.1
    -2.1 <= x4 <= 2.1
    -2.1 <= x5 <= 2.1
    -2.1 <= x6 <= 2.1

这个问题似乎已经在评论中得到了回答。简而言之,
myu sense
myu rhs
的长度是不同的。答案如下

当我们运行脚本时,会看到如下回溯:

Traceback (most recent call last):
  File "20200106.py", line 16, in <module>
    my_prob.linear_constraints.add(rhs = my_rhs, senses = my_sense, names = [])
  File "/home/rkersh/virtualenv/3.6/cplex/lib64/python3.6/site-packages/cplex/_internal/_subinterfaces.py", line 1259, in add
    lin_expr, senses, rhs, range_values, names)
  File "/home/rkersh/virtualenv/3.6/cplex/lib64/python3.6/site-packages/cplex/_internal/_baseinterface.py", line 41, in _add_iter
    addfun(*args, **kwargs)
  File "/home/rkersh/virtualenv/3.6/cplex/lib64/python3.6/site-packages/cplex/_internal/_subinterfaces.py", line 1181, in _add
    validate_arg_lengths(arg_list)
  File "/home/rkersh/virtualenv/3.6/cplex/lib64/python3.6/site-packages/cplex/_internal/_aux_functions.py", line 99, in validate_arg_lengths
    raise CplexError("inconsistent arguments" + extra_msg)
cplex.exceptions.errors.CplexError: inconsistent arguments
从最后一行,我们知道原因:

cplex.exceptions.errors.CplexError: inconsistent arguments
此外,此方法的说明如下:

如果指定了多个参数,则所有参数都必须具有 一样长

嗯,文件上说的并不完全正确。在脚本中,用户可以为某些参数提供空列表,并省略可选参数


至于错误信息是否可以更好。CPLEX本身无法轻松确定哪些参数是错误的(用户可以提供一个太长、太短或两者都有的列表)。相反,它只能指出参数的长度是否不一致。也许,可以通过说“参数长度不一致”来改进错误消息。回溯已经很清楚哪些参数有问题,但是参数名称也可以包括在内,比如:“不一致的参数长度:len_expr、senses、rhs、range_值、名称”。那会有帮助吗?

我猜:
我的感觉比
我的感觉短
是的,我在发帖后注意到了。谢谢太糟糕了,Cplex没有给出更好的错误消息。我想知道哪些论点不一致,为什么不一致。这就完全避免了这个问题。程序员没有足够注意编写信息性错误消息。同意。看起来CPLEX只会在调用的任何向量的大小不一致时创建一个非常通用的“不一致参数”。用户必须自己检查向量的长度,才能算出……我想会的。谢谢你的解释@山姆:谢谢你的反馈。我将为此错误消息改进创建一个新问题。
my_prob.linear_constraints.add(rhs = my_rhs, senses = my_sense, names = [])
cplex.exceptions.errors.CplexError: inconsistent arguments