我有一个整数规划优化问题,我使用yalmip和xpress作为求解器在 matlab 中求解。对于求解器,我想设置两个停止标准 - 时间限制和最佳间隙限制。
我曾尝试使用 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 中正确设置停止标准?