簡體   English   中英

施工啟發法需要很長時間

[英]Construction Heuristics takes long time

將Optaplanner 7.3.0與多個計划變量結合使用,從而可以進行多個(2)施工啟發式階段。 這是我的CH階段2的樣子:

<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分鍾,甚至比如果我不使用其中任何一個還要多:
1.緩存valueSelector(Cache:PHASE,selectionOrder:SORTED)
2. selectedCountLimit = 100

selectedCountLimit起作用的原因是,此CH階段隨着步驟的進行會創建大量移動,這是一個無需緩存/限制/過濾的簡單數據:

-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秒的時間,因為它是相對較少的實體,沒有鏈條。 我的CH階段2擁有814個鏈接實體的理想時間應該是什么?

請參閱文檔部分“按比例縮放構造試探法”。 多種非笛卡爾非笛卡爾替代方法 ,速度更快。 如果這還不夠用,可以使用“ 分區搜索”(僅使用CH) 兩者都有權衡。

另外,請檢查您的分數計算速度是否不太低(至少應高於1000 /秒)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM