AttributeError: 'Cplex' object has no attribute 'continuous_var'
时间: 2023-06-22 20:35:30 浏览: 196
【Python】AttributeError: ‘AutoSchema’ object has no attribute ‘get_link’
5星 · 资源好评率100%
这个错误是因为 `Cplex` 对象并没有 `continuous_var` 属性。如果你想要在 Python 中使用 IBM CPLEX 来建立线性规划模型,可以使用 `cplex.SparsePair()` 类来创建稀疏矩阵,并使用 `Cplex.variables.add()` 方法添加变量。
下面是一个求解线性规划问题的简单示例,其中包含了 `cplex.SparsePair()` 和 `Cplex.variables.add()` 方法的使用:
``` python
import cplex
# 创建 CPLEX 模型
model = cplex.Cplex()
# 添加变量
var_names = ['x1', 'x2', 'x3']
lb = [-cplex.infinity, 0.0, 0.0]
ub = [cplex.infinity, cplex.infinity, cplex.infinity]
var_type = [model.variables.type.continuous]*3
obj = [1.0, 2.0, 3.0]
model.variables.add(obj=obj, lb=lb, ub=ub, types=var_type, names=var_names)
# 添加约束
linear_expr = [cplex.SparsePair(ind=[0, 1, 2], val=[1.0, 2.0, 1.0])]
model.linear_constraints.add(lin_expr=linear_expr, senses='L', rhs=[10.0], names=['c1'])
# 添加目标函数并求解
model.objective.set_sense(model.objective.sense.minimize)
model.solve()
# 输出结果
print(model.solution.get_objective_value())
print(model.solution.get_values())
```
在这个示例中,我们首先创建了一个 `Cplex` 对象,然后使用 `Cplex.variables.add()` 方法添加了 `x1`、`x2` 和 `x3` 这三个变量,并指定了它们的类型、上下界、目标系数和名称。接下来,我们使用 `model.linear_constraints.add()` 方法添加了一个线性约束条件,它限制了 `x1 + 2x2 + x3 <= 10`。最后,我们使用 `model.objective.set_sense()` 方法指定了问题的目标是最小化(minimize),并调用 `model.solve()` 方法来求解模型。求解完成后,我们使用 `model.solution.get_objective_value()` 方法和 `model.solution.get_values()` 方法来输出最优解和变量的取值。
阅读全文