Я использую Gurobi для запуска MIQP (смешанного целочисленного квадратичного программирования) с линейными ограничениями в Matlab.Решатель очень медленный, и я хотел бы, чтобы ваша помощь поняла, могу ли я что-то с этим сделать.
Это строки, которые я использую для запуска проблемы
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);
Это снимок экрана с выводом в окне Matlab.
Вопрос 1: Я впервые пытаюсь запустить MIQP, и я хотел бы получить ваш совет, чтобы понять, чтоЯ могу сделать, чтобы улучшить производительность.Позвольте мне рассказать, что я пробовал до сих пор:
Я обманул, введя params.MIPGap=10^(-1)
.Таким образом, фаза исследования узла становится короче.Какие минусы в этом?
У меня есть коэффициенты big-M, и я привязал их к наименьшим возможным значениям.
Я попытался установить params.ScaleFlag=2; params.ObjScale=2
, но этоделает вещи медленнее
Я изменил params.method
, но это, кажется, не помогает (если у вас нет какой-то конкретной рекомендации)
У меня естьувеличьте params.Threads
, но, похоже, это не поможет
Вопрос 2 (второстепенный): Почему я получаю отрицательную цель в корневом симплексном журнале?Как целевая функция может быть отрицательной?