首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造启发式需要很长时间

构造启发式需要很长时间
EN

Stack Overflow用户
提问于 2017-10-05 22:08:30
回答 1查看 97关注 0票数 0

使用具有多个规划变量的Optaplanner 7.3.0,因此多(2)个构建启发式阶段。下面是我的CH阶段2的样子:

代码语言:javascript
复制
<constructionHeuristic>
        <queuedEntityPlacer>
            <entitySelector id="taskChainEntitySelector">
                <entityClass>....Task</entityClass>
            </entitySelector>
            <changeMoveSelector>
                <entitySelector mimicSelectorRef="taskChainEntitySelector"/>
                <valueSelector>
                    <variableName>previousTaskOrEmployee</variableName>
                </valueSelector>
            </changeMoveSelector>
        </queuedEntityPlacer>
    </constructionHeuristic>

我有814个任务,previousTaskOrEmployee是一个链式规划变量。但是,如果我不使用其中任何一个,则此CH阶段大约需要7-8分钟或更长时间:

在)

  • selectedCountLimit=100

中选择排序顺序缓存(缓存:阶段,

  1. :valueSelector

selectedCountLimit之所以作为CH阶段工作,是因为它在步骤中创建了大量移动,这是一个没有缓存/限制/过滤的简单数据:

代码语言:javascript
复制
-814init = selectedMovesCOunt:1
..
-621init = selectedMovesCOunt:300
..
-421init = selectedMovesCOunt:500
..
-221init = selectedMovesCOunt:800// increases downwards

In same cases, I've seen moves per step to be more than 50k which is crazy

我的问题:

在CH中用changeMove生成这么多步骤正常吗?

B.过滤在CH中没有多大意义,因为变量没有初始化。那么,理想情况下应该使用selectedCountLimit吗?

C.我的第一个CH阶段不需要任何时间,只需要4-5秒,因为它是相对较小的实体,并且没有链。对于具有814个链接实体的CH阶段2,理想的时间应该是什么?

EN

回答 1

Stack Overflow用户

发布于 2017-10-06 21:21:08

请参阅文档小节“扩展构造启发式”。有一个m多变量非笛卡尔替代,它的速度要快得多。如果这还不够好的话,还有分区搜索(只有CH)。不过,两者都有权衡之处。

还要检查你的分数计算速度是否太低(它至少应该在1000/秒以上)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46587757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档