Как установить критерии остановки для оптимизации целочисленного программирования в yalmip / matlab с помощью xpress solver - PullRequest
0 голосов
/ 15 июня 2019

У меня есть целочисленная задача оптимизации программирования, которую я решаю в Matlab, используя yalmip и xpress в качестве решателя. Для решателя я хочу установить два критерия остановки - ограничение по времени и оптимальный предел пропуска.

Я пытался использовать функции xpress MAXTIME и MIPRELSTOP, код Matlab компилирует и запускает оптимизацию, но критерии остановки не передаются в решатель.

Соответствующая часть кода выглядит следующим образом:

Cons = [sum(sum((dVar_mat.*(x_mat.*y_vec))')) >= a]; %constraint
obj = sum(sum(dVar_mat.*z_mat)); %objective

ops = sdpsettings('solver', 'xpress', 'verbose', 2); %solver options
ops.xpress.MAXTIME = 10000; %set timelimit
ops.xpress.MIPRELSTOP = 0.05; %set relative gap as stop limit

solIP = optimize(Cons, obj, ops); % Solve

Когда я запускаю оптимизацию, решение найдено, но значительно позже, чем я хотел бы остановить. В отчете говорится:

STOPPING - MIPRELSTOP target reached (MIPRELSTOP=0.0001)

означает, что цель MIPRELSTOP по-прежнему установлена ​​по умолчанию, то есть 0.0001. Аналогичным образом, оптимизация выполняется в течение определенного периода времени, не учитывая этот критерий остановки.

Как правильно установить критерии остановки в matlab / yalmip / xpress?

1 Ответ

0 голосов
/ 16 июня 2019

Вы уверены, что используете правильное имя и оно отображается в интерфейсе MATLAB, т. Е. Параметры отображаются в ops.xpress.У меня не установлен xpress, поэтому я не могу его протестировать.

(кстати, вопрос о YALMIP гораздо лучше задать на форуме групп Google YALMIP)

...