求解MIP问题时,不及时删除无效的cut会让求解整数解变得更加困难吗?无效cut的存在会产生更多的非整数解极点吗?
为什么求解器在求解时在树节点和根节点都实现了对cut的动态添加和删除,但求解mip问题速度仍然非常非常慢?这种情况下,针对具体问题添加新的cut会帮助我们加快求解速度吗?比如对于VRP问题而言,有哪些cut是我们可以手动添加来加快求解速度的呢?
求解MIP问题时,不及时删除无效的cut会让求解整数解变得更加困难吗?无效cut的存在会产生更多的非整数解极点吗?
为什么求解器在求解时在树节点和根节点都实现了对cut的动态添加和删除,但求解mip问题速度仍然非常非常慢?这种情况下,针对具体问题添加新的cut会帮助我们加快求解速度吗?比如对于VRP问题而言,有哪些cut是我们可以手动添加来加快求解速度的呢?
让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言回答:
for (int i = 0; i < num_customers; i++) {
GRBLinExpr expr = 0;
for (int j = 0; j < num_vehicles; j++) {
for (int k = 0; k < num_customers; k++) {
if (k != i) {
expr += x[i][k][j];
}
}
}
for (int h = 0; h < num_cargos; h++) {
model.addConstr(expr <= q[h]*y[i][h]);
}
}
其中,num_customers表示节点数,num_vehicles表示车辆数,num_cargos表示货物类型数,q[h]表示第h种货物的容积,x[i][k][j]表示从节点i到节点k是否由车辆j运输,y[i][h]表示节点i是否装载了h种货物。