docplex问题:TypeError:无法使用==测试表达式相等性,请尝试使用Python is运算符或方法相等:

2024-10-01 07:27:13 发布

您现在位置:Python中文网/ 问答频道 /正文

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

为什么我会犯这个错误


Tags: testaddmodel错误reqnrmymodelaverage
1条回答
网友
1楼 · 发布于 2024-10-01 07:27:13

从决策变量和常量构建的DOcplex表达式本身就是一个决策对象。它的值仅在solve()之后定义,并且可以通过solution_value属性查询。 关系运算符,例如==<=>=已重载以生成约束,例如x==1实际上是一个约束,而不是Python布尔值。 编写诸如if x==1之类的代码无法工作,因为x实际上是一个决策变量,在解算之前没有任何值。 这就是为什么消息告诉您正在尝试测试两个表达式之间的相等性。这可以使用is或方法equals完成,但不能使用==

不幸的是,您的代码不允许重现该问题,也不允许您理解为什么要这样做

相关问题 更多 >