0

我有一个整数规划优化问题,我使用yalmipxpress作为求解器在 matlab 中求解。对于求解器,我想设置两个停止标准 - 时间限制和最佳间隙限制。

我曾尝试使用 xpress 函数MAXTIMEMIPRELSTOP,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 中正确设置停止标准?

4

2 回答 2

0

Xpress Optimizer 的“MAXTIME”控件可用于正值和负值:当求解 MIP 问题时,“MAXTIME”为正值时,仅在找到解决方案后才应用限制,否则求解将继续,直到找到第一个解决方案; 负值意味着硬停止,因此对于您的情况,我建议您尝试使用 -10000 之类的值作为时间限制。

(请参阅 Xpress Optimizer 参考手册中的文档,例如:https ://www.fico.com/fico-xpress-optimization/docs/latest/solver/optimizer/HTML/MAXTIME.html )

于 2020-07-28T17:40:29.627 回答
0

您确定您使用的是正确的名称并且它在 MATLAB 界面中公开,即这些选项在 ops.xpress 中是否可见。我没有安装 xpress,所以我无法测试它。

(顺便说一句,YALMIP 问题在 YALMIP Google 群组论坛上问得更好)

于 2019-06-16T14:57:01.310 回答