mymodel = Model("OPL_Purchasing_plan");
nr_month= range(0, 12)
na_pur_req = [550, 750, 6500, 675, 210, 120, 0, 560, 140, 320, 0, 100]
na_average_cost = 12.5, 12.5, 12.5, 12.5, 12.5, 12.5, 12.5, 12.5, 12.5, 12.5, 12.5, 12.5]
for i in nr_month:
if(na_pur_req[i] == 0):
mymodel.add_constraint(na_actual_cost_test[0][i] <= na_actual_suply[0][i] * 0,'con9');
else:
mymodel.add_constraint(na_actual_cost_test[0][i] <= na_actual_suply[0][i] * na_average_cost[i],'con10');
我得到一个错误如下
TypeError: Cannot use == to test expression equality, try using Python is operator or method equals
为什么我会犯这个错误
从决策变量和常量构建的DOcplex表达式本身就是一个决策对象。它的值仅在solve()之后定义,并且可以通过
solution_value
属性查询。 关系运算符,例如==
、<=
和>=
已重载以生成约束,例如x==1实际上是一个约束,而不是Python布尔值。 编写诸如if x==1
之类的代码无法工作,因为x实际上是一个决策变量,在解算之前没有任何值。 这就是为什么消息告诉您正在尝试测试两个表达式之间的相等性。这可以使用is
或方法equals
完成,但不能使用==
不幸的是,您的代码不允许重现该问题,也不允许您理解为什么要这样做
相关问题 更多 >
编程相关推荐