changeMove on binary / boolean planning变量 - optaplanner

时间:2016-06-02 15:45:26

标签: optaplanner

我的计划变量是布尔值。

我只想使用changeMoves,我想使用changeMove的笛卡尔积来进行更粗略的移动。这是我的计划配置:

    <unionMoveSelector>
        <changeMoveSelector/>
        <cartesianProductMoveSelector>
            <changeMoveSelector/>
            <changeMoveSelector/>
            <changeMoveSelector/>
            <changeMoveSelector/>
            <changeMoveSelector/>
        </cartesianProductMoveSelector>
    </unionMoveSelector>        

如何避免一半时间“移动不可行”?

目前,我常常有:

Move index (5) not doable, ignoring move (... {false -> false})

基本上,我想要一个包含切换布尔状态的移动,这总是可行的(false变成truetrue变成false)。

对于changeMoves的笛卡尔积更糟糕的是,因为我认为当其中一个changeMove不可行时忽略了移动...所以使用n changeMoves,我只有1/2的机会获得可行的笛卡尔...

我是否必须创建自定义移动或是否有其他方法可以执行此操作?

1 个答案:

答案 0 :(得分:0)

解决方法(未经测试 - 请在此处告知我是否有效):在<changeMoveSelector/>添加MoveFilter以过滤不可行的移动。这样他们就不会进入笛卡尔选择器,这可能会提高你的效率。

如果此解决方法有效,它也是我们应如何解决PLANNER-589上游问题的证据。