Python/CPLEX“;不一致的论点”;错误
我试图在基于Jupyter的Python中使用CPLEX解决以下简单的LP问题,并得到以下错误 谁能帮我解释一下这个错误吗。LP问题有6个变量和3个约束。我已经检查了定义的列表的维度,它们与问题的大小一致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
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