多目标工作

多目标工作

当然,确定一组目标只是解决多目标优化问题的第一步。下一步是指出目标应该如何组合。如前所述,我们支持两种方法:混合的和分层的。

混合目标

混合方法通过采用目标的线性组合来创建单个目标。你为每个目标提供一个权重作为参数setObjectiveN.或者,您也可以使用ObjNWeight属性,一起ObjNumber.目标的默认权重是1.0。

举个例子,如果你的模型有两个目标,<span>$< span>1 + x + 2y<span>$</span>< span > < /美元跨度> y + 2 z < span > < / span >美元,如果你给< span > < / span > 1美元美元< span > < / span >< span > < / span > 2美元美元< span > < / span >然后,Gurobi会用一个混合的目标来解决你的模型< span > < / span > 1美元\ cdot (1 + x + 2) + 2 \ cdot (y + 2 z) = 1 - x + 4 z < span > < / span >美元

你应该避免非常大或非常小的重量。一个非常大的重量(例如,比< span > < / span > 10 ^ 6美元美元< span > < / span >)可能会导致非常大的客观系数,这可能会造成数值上的困难。一个非常小的重量(即小于< span > < / span > 1美元e-6 < span > < / span >美元)可能导致该目标对整体混合目标的贡献小于公差,这可能导致该目标被有效地忽略。

分级目标

分层或词典编纂方法为每个目标分配一个优先级,并以优先级降低的顺序对目标进行优化。在每个步骤中,它为当前目标找到最佳解决方案,但只从那些不会降低解决方案质量的高优先级目标中。为每个目标提供优先级作为参数setObjectiveN.或者,您也可以使用ObjNPriority属性。优先级是整体的,而不是连续的。值越大表示优先级越高。目标的默认优先级为0。

举个例子,如果您的模型有两个具有优先级的目标< span > < span > < / span > 10美元< / span >< span > < / span > 5美元美元< span > < / span >,第一个目标的最优解有价值< span > < /美元跨度> 100 < span > < / span >,然后求解器会从所有有手机万博登录目标的解中找到优化第二个目标的解< span > < /美元跨度> 100 < span > < / span >第一个目标。

允许多目标退化

默认情况下,我们的分层方法不允许较晚的目标降低较早的目标。对于MIPs来说,这种行为可以通过一对公差来放松:相对公差和绝对公差。这些是作为参数提供的setObjectiveN,或者可以使用属性设置它们ObjNRelTolObjNAbsTol.通过为特定目标设置其中之一,您可以指示允许以后的目标分别按指定的相对或绝对数量降低该目标。在前面的例子中,如果第一个目标的最优值是< span > < /美元跨度> 100 < span > < / span >,如果我们设置ObjNAbsTol为了达到这个目标< span > < / span > 20美元美元< span > < / span >,则第二次优化步骤将从所有有目标的解中找出第二个目标的最优解< span > < /美元跨度> 120 < span > < / span >或者对第一个目标更好。注意,如果修改这两个公差,以后的优化将使用这两个值中比较松散的那个(即允许更大的降级的那个)。

对多目标LP模型的客观降解处理不同。对于LP模型,高优先级目标的解决方案质量是通过在先前的最优解中固定一些变量的值来保持的。这些固定费用是用可变成本降低来决定的。的值ObjNAbsTol参数表示允许一个固定变量的降低成本违反双重可行性的数量,而ObjNRelTol参数被简单地忽略。如果您想要更直接地控制降级的MIP行为,您可以向模型添加一个虚拟二进制变量,从而将其转换为MIP。求解得到的多目标MIP将比求解原来的多目标LP耗费更多的时间。

结合混合目标和层次目标

实际上,你可以为每个目标设定一个权重和优先级。这允许您组合混合和分层的方法。为了理解这是如何工作的,我们首先应该提供更多关于如何处理层次目标的细节。

当您为每个指定不同的优先级时< span > < / span > n < span >美元< / span >目标,解算器执行手机万博登录< span > < / span > n < span >美元< / span >单独的优化步骤。在每个步骤中,在降低优先级的顺序中,它对当前目标进行优化,同时施加约束,确保高优先级目标的质量下降不超过指定的公差。

如果你给多个目标相同的优先级,那么它们将在相同的优化步骤中处理,导致少于< span > < / span > n < span >美元< / span >全部步骤< span > < / span > n < span >美元< / span >目标。更准确地说,每个不同的优先级值按照优先级递减的顺序执行一个优化步骤,并使用这些目标的权重将所有具有相同优先级的目标混合在一起。这为您在组合混合和分层方法时提供了相当大的灵活性。

在分层方法中将多个目标混合到单个级别时,一个微妙的问题涉及处理较低优先级级别的降级。混合优化步骤后允许的客观降解是每个参与目标允许的最大绝对降解和相对降解。例如,如果我们有三个目标ObjNPriority等于< span > < /美元跨度> \ {2 2 1 \}< span > < / span >美元,ObjNRelTol等于< span > < /美元跨度> \ {0.10,0.05,0.00 \}< span > < / span >美元ObjNAbsTol等于< span > < /美元跨度> \ {0 1 2 \}< span > < / span >美元,如果优先目标的最佳解决方案是< span > < span > < / span > 10美元< / span >,则允许第一优先级目标的降级为< span > < /美元跨度> \马克斯\ {10 \ cdot 0.10, 10 \ cdot 0.05, 0, 1 \} = 1美元< span > < / span >