2017-11-21 2 views
0

Ich verwende Optaplanner 6.3.0, um TSPTW-Probleme in einer anwenderseitigen Anwendung zu lösen. Die Anzahl der Besuche ist variabel (basierend auf Benutzereingaben) aber weniger als 500. Ich möchte eine Antwort innerhalb eines festen Zeitlimits zurückgeben.Sicherstellen, dass der Optaplanner die vollständige Lösung innerhalb des Zeitlimits findet

Ich habe derzeit eine secondsSpentLimit Terminierung, habe aber festgestellt, dass, wenn diese Beendigung in der Bauphase auftritt, die beste Lösung unvollständig ist, da nicht alle Besuche in der Kette sind.

Ich möchte sicherstellen, dass eine komplette Lösung, auch eine schlechte, immer zurückgegeben wird. Ich habe als mögliche Lösung in Betracht gezogen, die Startlösung selbst zu initialisieren und die Bauphase zu verlassen. Würde das funktionieren oder gibt es einen besseren Weg, dies zu erreichen?

Hier ist meine aktuelle Konfiguration.

<solver> 
    ... 
    <termination> 
    <secondsSpentLimit>30</secondsSpentLimit> 
    </termination> 
    <constructionHeuristic> 
    <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType> 
    </constructionHeuristic> 
    <localSearch> 
    <unionMoveSelector> 
     <changeMoveSelector> 
     <cacheType>PHASE</cacheType> 
     <selectionOrder>SHUFFLED</selectionOrder> 
     </changeMoveSelector> 
     <tailChainSwapMoveSelector /> 
     <subChainChangeMoveSelector> 
     <subChainSelector> 
      <maximumSubChainSize>50</maximumSubChainSize> 
     </subChainSelector> 
     <selectReversingMoveToo>true</selectReversingMoveToo> 
     </subChainChangeMoveSelector> 
    </unionMoveSelector> 
    <acceptor> 
     <lateAcceptanceSize>200</lateAcceptanceSize> 
    </acceptor> 
    <forager> 
     <acceptedCountLimit>1</acceptedCountLimit> 
    </forager> 
    <termination> 
     <unimprovedStepCountLimit>100</unimprovedStepCountLimit> 
    </termination> 
    </localSearch> 
</solver> 

Antwort

0

partitionierten Suche mit einer verschachtelten CH wirkt Wunder der CH auf großen Fällen zu beschleunigen (auf Kosten der Lösungsqualität Obwohl, wenn 30sec für 500 Einheiten zu wenig Sie möchten Ihre Gäste Rechengeschwindigkeit zuerst prüfen.

Nähe Auswahl mit begrenzter Auswahl eine Alternative.

Sie auch eine CustomPhase hinzufügen können.

Verwandte Themen