CPLEX 调试 window 冻结

CPLEX debug window freezes

我正在尝试使用 C++(Concert 技术)以 CPLEX 语言编写我的数学模型。当我 运行 我在编译器中的代码 window 读取我的输入并冻结。尝试调试我的代码时,visual studio 将以下行显示为断点。

//constraint 2
for (cc = 0; cc < NumberOfCourses; cc++) {
    IloExpr Constraint2(env);
    for (rr = 0; rr < AvailableRooms; rr++) {
        Constraint2 += RoomCapacity[rr] * Y[cc][rr];
        mod.add(Constraint2 >= Students[cc]); // this line
        Constraint2.end();
    }
}

我已经设置了如下参数和变量:

double RoomCapacity[AvailableRooms];
double Students[NumberOfCourses];

//Ycr
IloBoolVarArray2 Y(env, NumberOfCourses);
for (cc = 0; cc < NumberOfCourses; cc++)
    Y[cc] = IloBoolVarArray(env, AvailableRooms);

我不明白我的约束有什么问题!

您的代码是错误的:在第一次内部迭代中,您将 Constraint2 添加到您的模型,然后您 end() 该变量。因此,在第二次内部迭代中,您正在执行 Constraint2 += ...Constraint2 对象已被删除。这将导致未定义的行为(挂起、崩溃……)。

我猜你想写的是这个(将 add()end() 拉出内循环):

   for (cc = 0; cc < NumberOfCourses; cc++) {
      IloExpr Constraint2(env);
      for (rr = 0; rr < AvailableRooms; rr++) {
         Constraint2 += RoomCapacity[rr] * Y[cc][rr];
      }
      mod.add(Constraint2 >= Students[cc]);
      Constraint2.end();
   }