当前位置: 首页 > 知识库问答 >
问题:

optaplanner不可移动规划实体

慕嘉运
2023-03-14

我正在使用Optaplanner解决一个类似于病人入院调度示例的问题。

我面临两个问题。

首先,当一个规划实体(类似于示例中的bedDesignation)被某人(而不是optaplanner)定位时,该规划实体像其他实体一样被打分。手工放置的计划实体变为不可移动的计划实体,但仍被打分为可移动的计划实体。正因为如此,它打破了一些硬性的限制。

  <localSearch>
    <unionMoveSelector>
      <moveListFactory>
        <moveListFactoryClass>org.optaplanner.examples.pas.solver.move.factory.BedDesignationPillarPartSwapMoveFactory</moveListFactoryClass>
      </moveListFactory>
    </unionMoveSelector>
    <acceptor>
      <entityTabuSize>7</entityTabuSize>
    </acceptor>
    <forager>
      <acceptedCountLimit>1000</acceptedCountLimit>
    </forager>
  </localSearch>

BedDesignationPillarPartSwapMoveFactory类在示例中没有变化。我在文档中读到,对于不可移动的规划实体,我们必须确保自定义moveListFactory不会移动不可移动的实体。但怎么做?在配置xml文件中还是在类本身中?

谢谢你的帮助。

共有1个答案

司马弘益
2023-03-14

调整BedDesignationPillarPartSwapMoveFactory以跳过不可移动的实体(BedDesignations)(例如,如果它们是isLocked()==true)。

或者更好:根本不使用BedDesignationPillarPartSwapMoveFactory,只使用通用移动选择器:changeMove、swapMove、pillarChangeMove和PillarSwapMove。支柱移动现在在6.2中选择子支柱,但我还没有测试这是否给出了更好的结果(我相信会的)--这可能会使自定义移动工厂过时。

 类似资料:
  • 对于时间窗VRP的解决方案,我编辑了已求解的XML文件并设置了< code > 我添加了一个SectionFiler类,并按照建议进行了配置。在解决的xml数据文件的末尾,我添加了一些新的未分配客户。 我预计只有新的未分配客户才会被优化并插入现有链的末尾 - 事实并非如此 - 链条被破坏了。 问题:6.2中处理不可移动客户预约的具体内容是什么? 我认为jira问题https://issues.jb

  • 我正在尝试使用MoveSelectionFilter从计划中排除一些计划整体实例。 然而,即使我拒绝所有的移动,根据调试输出,实例仍然在构建启发式阶段进行初始规划。我使用WEAKEST_FIT启发式,两个自定义的MoveListFactory(目前根本不生成任何移动),并且没有默认的MoveListWorks。 如何阻止OptaPlanner规划这些实体?我看了护士名册示例,如果您提前日期但无法重

  • 我正在研究来自OptaPlanner的示例用例。我也找不到任何类似的例子,可以在一个规划实体中求解多个规划变量。例如,在护士名册中,一个轮班的每个可能需要多个分配的。在这种情况下,如何利用planner和编写规则呢?

  • 各位opatplanner用户, 我的规划问题是:获取遥感卫星星座的有效时间表。 @PlanningEntity: @PlanningVariable: 我的问题数据主要是这样的: Image_Strip: D1 Sat2 22-12-2015 11:02:24.051 D1 Sat1 22-12-2015 11:04:24.122 A2 Sat3 22-12-2015 11:06:24.172

  • 我正在尝试限制可以与特定实体关联的计划变量。在 OptaPlanner 手册的第 4.3.4.2.2 节中,显示了一个示例,但不清楚应该如何生成变量列表。列表应包含哪些内容?这些计划变量本身吗?它们可以是副本吗?如果允许复制,那么如何比较它们?如果不是,则在定义计划实体时计划变量不在范围内 - 我意识到这是一个 Java 问题,但如何从计划实体定义访问计划变量列表并不明显。 这是早期版本不支持的6

  • 我有一个VRP路由问题的变体,我想利用Optaplanners(v6.4)ValueRangeProvider特性。然而,在某些情况下,我有点困惑它是如何工作的。我的理解是,如果我选择一组项作为Customer对象的值范围,那么该Customer实例的PreviousStandle可能只在该范围内。 就我而言,我有一些客户可能已经被分配了。我想限制搜索空间,这样分配的行程就不会浪费时间与其他车辆匹