CPLEX调试窗口冻结 我尝试用C++(ChandieTechnology)对CPLEX语言编写数学模型。当我在编译器窗口中运行代码时,读取输入并冻结。当尝试调试我的代码时,VisualStudio将以下行显示为断点 //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(); } } //约束2 对于(cc=0;cc
我已经设置了如下参数和变量:CPLEX调试窗口冻结 我尝试用C++(ChandieTechnology)对CPLEX语言编写数学模型。当我在编译器窗口中运行代码时,读取输入并冻结。当尝试调试我的代码时,VisualStudio将以下行显示为断点 //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(); } } //约束2 对于(cc=0;cc,c++,cplex,C++,Cplex,我已经设置了如下参数和变量: double RoomCapacity[AvailableRooms]; double Students[NumberOfCourses]; //Ycr IloBoolVarArray2 Y(env, NumberOfCourses); for (cc = 0; cc < NumberOfCourses; cc++) Y[cc] = IloBoolVarArray(env, AvailableRooms); 双房间容量[AvailableRooms
double RoomCapacity[AvailableRooms];
double Students[NumberOfCourses];
//Ycr
IloBoolVarArray2 Y(env, NumberOfCourses);
for (cc = 0; cc < NumberOfCourses; cc++)
Y[cc] = IloBoolVarArray(env, AvailableRooms);
双房间容量[AvailableRooms];
学生人数[课程数];
//Ycr
IloBoolVarArray2 Y(环境,课程数);
对于(cc=0;cc
我不明白我的约束有什么问题 您的代码是错误的:在第一次内部迭代中,您将
Constraint2
添加到模型中,然后您将end()
该变量。因此,在第二次内部迭代中,您正在执行Constraint2+=…
,而Constraint2
对象已被删除。这将导致未定义的行为(挂起、崩溃等)
我想你想写的是(从内部循环中拉出add()
和end()
):
for(cc=0;cc=学生[cc]);
约束2.end();
}
您能否在每次迭代后打印rr
和cc
值?或者它发生在第一次迭代中?我认为它没有经过迭代。当它冻结时,您可以包括堆栈跟踪吗?顺便说一句,这个CPLEX库在调试中吗?我想我对术语没有那么专业。堆栈跟踪是什么意思?我不明白你的第二个问题。我在代码开始时创建了一个cplex环境。
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();
}