我正在使用 Gurobi 在 Matlab 中运行具有线性约束的 MIQP(混合整数二次规划)。求解器非常慢,我希望您能帮助我了解我是否可以对此做点什么。
这些是我用来启动问题的行
clear model;
clear params;
model.A=[Aineq; Aeq];
model.rhs=[bineq; beq];
model.sense=[repmat('<', size(Aineq,1),1); repmat('=', size(Aeq,1),1)];
model.Q=Q;
model.obj=c;
model.vtype=type;
model.lb=total_lb;
model.ub=total_ub;
params.MIPGap=10^(-1);
result=gurobi(model,params);
问题 1:这是我第一次尝试运行 MIQP,我想听听您的建议,以了解我可以做些什么来提高性能。让我告诉我到目前为止我所做的尝试:
我以强加的方式作弊
params.MIPGap=10^(-1)
。这样,节点探索的阶段就变短了。这样做有什么坏处?我有大 M 系数,我将它们绑定到最小的可能值。
我试过设置
params.ScaleFlag=2; params.ObjScale=2
,但它让事情变慢我已经改变了
params.method
,但它似乎没有帮助(除非你有一些具体的建议)我有增加
params.Threads
,但似乎没有帮助
问题 2(次要):为什么我在根单纯形日志中得到一个否定的目标?目标函数怎么可能是负数?