繁体   English   中英

optaplanner不动产计划实体

[英]optaplanner immovable planning entities

我正在与Optaplanner合作解决与患者入院安排示例类似的问题。

我面临两个问题。

首先,当某个计划实体(类似于示例中的bedDesignation)被某人(而不是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文件中还是在类本身中?

谢谢您的帮助。

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

或更妙的是:根本不使用BedDesignationPillarPartSwapMoveFactory,而要使用通用的移动选择器:changeMove,swapMove,stallChangeMove和columnSwapMove。 现在,支柱移动选择了6.2中的子支柱,但是我还没有测试过该示例是否可以提供更好的结果(我相信会),这可能会使自定义移动工厂过时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM