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();
}
我正在尝试使用 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();
}