我建立了一个要使用一组不同的目标函数系数来多次求解的MIP模型(我意识到热启动并不是很有用,我只是在尝试避免模型构建时间)。
我通过将每个变量的obj系数设置为0.0
来构建可重用模型。
我现在想将所有变量的目标系数添加到值std::vector
中,然后优化模型并将所有目标系数再次设置为0。
我目前正在这样做:
auto vars = model.getVars();
auto cols = model.get(GRB_IntAttr_NumVars);
for (int i =0; i < cols; ++i) {
std::cout << vars[i].get(GRB_StringAttr_VarName) << "\n";
vars[i].set(GRB_DoubleAttr_Obj,obj_val[i]);
}
//after doing stuff with the rebuilt-model setting all obj coeffs to 0
for (int i =0; i < cols; ++i) {
vars[i].set(GRB_DoubleAttr_Obj,0.0);
}
delete[] vars;
是否有更快,更优雅的方法来做到这一点?