【问题标题】:Optaplanner - nearbySelection with multiple variableOptaplanner - 具有多个变量的附近选择
【发布时间】:2015-08-26 23:24:03
【问题描述】:

我已经从 optaplanner 示例的课程课程示例中扩展了我的问题库。

由于需要解决现有问题,我开始使用 2 个变量,均来自“来自实体的值范围提供者”。

现在我正在努力改进我的解决方案,并且, 当我检查解决方案时,我意识到有些讲座可以更好(基于分数),如果它们只是交换,或者向左或向右移动等等。

我不确定这种方法是否能解决这个问题,但我发现,使用 nearSelection,规划器可以“粗略”移动,尤其是基于它们的相似性(自定义距离计)

但是,问题从这里开始,我无法正确配置附近的选择,这是我最新的配置 xml

<changeMoveSelector>
                <entitySelector id="entitySelector1">
                    <entityClass>....Lecture</entityClass>
                </entitySelector>
                <valueSelector>
                    <variableName>period</variableName>
                    <nearbySelection>
                        <originEntitySelector mimicSelectorRef="entitySelector1"/>
                        <nearbyDistanceMeterClass>.....LectureNearbyDistanceMeter</nearbyDistanceMeterClass>
                        <parabolicDistributionSizeMaximum>40</parabolicDistributionSizeMaximum>
                    </nearbySelection>
                </valueSelector>
            </changeMoveSelector>

如果我不提供 variableName,那么它就不起作用,因为配置器无法自动选择它,但是,我不能将 variableName 放在 valueSelector 中,它抱怨 “java.lang.IllegalArgumentException:valueSelector (org.optaplanner.core.impl.heuristic.selector.value.nearby.NearEntityNearbyValueSelector@2f66e802) 具有可变属性类型(....期间) 它不是 originEntitySelector 的 entityClass (..Lecture) 的超类。”

谁能给我一个线索,我在这里做错了什么?

【问题讨论】:

  • 附近的选择不能考虑分数(至少目前还没有为它设计):“距离”(可以是任何东西)在 IIRC 开始时确定一次。

标签: optaplanner


【解决方案1】:

出现该异常是因为它似乎期望采用链式设计(它期望规划值类是实体类的超类)。如果我没记错的话,升级到 6.3.0.CR1 可能会解决这个限制。

但是 nearDistanceMeterClass 不能考虑当前的分数(= 它不能基于分数)。所以看起来你真的只想实现一个自定义移动选择器。请参阅文档中的 MoveListFactory。当然,要让它做抛物线分布,很难……

【讨论】:

  • 我可能误解了我的意图。我不想为距离添加分数。我的启发式是,如果他们的老师相同,如果他们的能力接近,则接近 2 个讲座,等等。无论如何,我现在不想升级,将尝试通过其他算法解决这个“分数陷阱”。谢谢
  • 升级到 6.3.0.CR1 应该不会很痛苦。 CR2 很快就会出局,然后 Final 应该就在拐角处了。
猜你喜欢
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 2022-11-01
  • 2023-03-09
  • 2012-10-26
  • 1970-01-01
  • 1970-01-01
  • 2014-02-11
相关资源
最近更新 更多