我非常是CPLEX的新手。我正在尝试复制在网上找到的一些代码,但出现以下错误:
p.variables.add(obj = obj, lb = lb, ub = ub, columns=cols, types=types)
CPLEX Error 1203: Row index 0 out of range.
我完全不知道这是哪里来的。我检查了所有变量的长度-obj,lb,ub,cols,types,它们都是相同的,因此问题与长度的不同无关。但是,我无法确切指出错误的出处!
答案 0 :(得分:1)
您试图按列填充模型。我的猜测是您尚未向模型中添加线性约束(前提条件)。例如,以下程序再现了您的问题:
import cplex
p = cplex.Cplex()
# Uncomment this line to fix the problem:
#p.linear_constraints.add(names=['c1', 'c2', 'c3'])
p.variables.add(columns=[[[0, 1, 2], [1.0, 1.0, 1.0]]])
p.write("prob.lp")
这可以通过取消注释首先添加线性约束的行来解决。您应该看一下CPLEX随附的示例,以了解如何完成操作(例如lpex1.py
,mipex1.py
等)。