Включает ли атрибут времени выполнения Gurobi время для интерфейса - PullRequest
0 голосов
/ 26 апреля 2018

Я звоню Гуроби из какой-нибудь программы Matlab, чтобы решить задачу оптимизации model с result = gurobi(model). С сайта Гуроби я получаю это с result.runtime Я получаю

Время выполнения для самой последней оптимизации (в секундах). Обратите внимание, что все время, сообщаемое Оптимизатором Gurobi, является временем настенных часов.

Что конкретно включает в себя среда выполнения? В частности, я хочу знать, имеет ли это значение, т. Е. Есть ли какие-то издержки при обмене данными от Matlab до Gurobi, которые вносят вклад в время выполнения, если я читаю модель из .mps-файла и непосредственно решаю ее, то есть

model = gurobi_read(model.mps);
result = gurobi_read(model.mps);
time = result.runtime;

или, если я делаю манипуляции с моделью до ее фактического решения, то есть

model = gurobi_read(model.mps);
model.A(model.sense=='>',:) = -model.A(model.sense=='>',:);
model.rhs(model.sense=='>',:) = -model.rhs(model.sense=='>',:);
model.sense(model.sense=='>') = '<';
result = gurobi(model);
time = result.runtime;

1 Ответ

0 голосов
/ 26 апреля 2018

Атрибут Runtime сообщает только время решения; он не включает в себя какую-либо среду выполнения от API. Одной из причин этого является то, что все интерфейсы Gurobi построены на C API , поэтому интерфейс MATLAB получает значение времени выполнения из C API, который не знает ни о каких издержках MATLAB.

...