0

我需要使用 OptaPlanner 计划在一组服务器上放置一组虚拟化功能。我的功能需要以特定的预定义顺序执行,形成一个服务功能链。

例如,假设定义了 2 个链

  1. F1->F2
  2. F1->F2->F3

目标是将它们放置在一组服务器上,同时最大限度地降低成本(带宽、CPU、存储......成本)

我在 OptaPlanner 用户指南中看到的一组链式计划实体的示例包括旅行者推销员问题 (TSP) 和 VRP,但是在这些问题中,计划实体不需要按特定顺序进行计划。我想知道是否有熟悉 OptaPlanner 的人可以给我任何关于如何做的提示,如果有任何例子,如果你让我知道,我将不胜感激。

提前致谢。

4

1 回答 1

0

如果给出了功能的顺序,如果计划的顺序不正确,你可以给它一个坏分数。例如(伪规则)

rule "keepServiceFunctionChainSequence"
when
  Functionality($chainId:chainId,$end:end, $orderPos:orderPos)
  // find another entity in the same chain with a higher position in the order
  // that starts earlier
  Functionality(chainId==$chainId, orderPos>$orderPos, start.before($end), $orderPos2)
then
  scoreHolder.addHardConstraintMatch(kcontext, $orderPos2-$orderPos);
end

如果您有很多功能要计划,并且您看到太多无用的动作,那么您可能明智的做法是自己进行一次移动整个链条并保持顺序的动作。

于 2018-07-18T06:30:19.927 回答