额外的细节

额外的细节

多目标环境

默认情况下,终止条件(例如。期限SolutionLimitMIPGap,等),层次多目标优化中的每一遍都由模型环境中定义的参数控制。但是,我们提供了一个叫做多目标环境它允许您为每个目标函数创建一个Gurobi环境,并在这些环境上设置参数。这些设置只会影响多目标优化的相应通过。因此,例如期限模型的参数为100,但是您使用一个多目标环境将特定的多目标通过的参数设置为10,那么多目标优化将在该特定通过上花费最多10秒(总共最多100秒)。

为一个特定的多目标传球创建一个多目标环境,使用getMultiobjEnv方法从你的语言API(例如Model.getMultiobjEnv在Python中)。的指数参数给出您想要控制的多目标通道的索引。

注意,多目标环境是与一个给定的多目标优化通过,而不是给定的多目标函数,所以多目标环境0总是与最高优先级(可能是混合的)目标,而多目标环境1总是与第二个最高优先级的目标(如果有的话)。

一旦您创建了多目标环境,它们将用于该模型的每一个后续多目标优化。使用discardMultiobjEnvs方法从你的语言API(例如Model.discardMultiobjEnvs在Python中)恢复到默认的多目标优化行为。

其他细节

我们还没有尝试推广连续多目标模型的对偶解或单纯形基的概念,所以你不能查询属性,如π钢筋混凝土VBasis,或CBasis对于多目标的解决方案。因此,我们得出了属性返回的最一致的结果IsMIP是1。但是请注意,一些特定于mip的属性,例如ObjBoundObjBoundCMIPGap对多目标模型没有意义,也不可用。

Gurobi只会求解具有严格线性目标的多目标模型。如果主要目标是二次或分段线性,则solve调用将返回一个错误。

当使用分层方法解决一个连续的多目标模型时,您可以选择对不同的步骤(原始单纯形、对偶单纯形或障碍)使用哪种优化算法。属性中指定的算法总是第一步方法参数。后续步骤的算法由MultiObjMethod参数。该参数对多目标MIP模型没有影响。注意,您可以使用我们的多目标环境特性,通过设置方法参数为个人目标。

对于分层方法,Gurobi将在多目标优化的开始阶段执行保守的解算步骤,在每一步的开始阶段执行更激进的解算步骤(假设尚未关闭解算)。您可以通过设置参数在多目标优化的开始执行更积极的解析步骤MultiObjPre值2。这有助于提高性能,但它做了一些简化的假设,可能会导致较低优先级目标实现的值出现小幅下降。

使用分层方法时的日志文件将显示流程每个步骤的优化进度。你会看到这样的对数线:

多目标:优化目标1 ... ...多目标:优化目标2(加权)... ...
欲知更多详情,请参阅本节多目标日志