2016-06-03 1 views
0

Ich möchte das maximumUnimprovedStepCount Abbruchkriterium für eine lokale Suchphase verwenden.Wie wird ein Phasenabbruch auf die maximale Anzahl nicht verbesserter Schrittzähler gesetzt?

Die unmarshalling von solverConfigResource schlägt mit dem Fehler

No such field org.optaplanner.core.config.solver.termination.TerminationConfig.maximumUnimprovedStepCount 

Der Doc sagt, dass diese Einstellung nicht für den Solver für eine Phase, nur nicht funktioniert, so dass ich vermute, dass die richtige Ressource org. ... .config.termination. ... sein sollte (ohne solver in der Mitte).

Aber warum bekommt es nicht direkt die richtige Klasse?

Das ist mein minimal Solver conf:

<solver> 
    <scanAnnotatedClasses/> 

    <scoreDirectorFactory> 
     <scoreDefinitionType>HARD_SOFT</scoreDefinitionType> 
     <scoreDrl>solver/rules.drl</scoreDrl> 
    </scoreDirectorFactory> 

    <constructionHeuristic> 
     <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType> 
    </constructionHeuristic> 

    <termination> 
     <secondsSpentLimit>60</secondsSpentLimit> 
    </termination> 

    <localSearch> 
     <termination> 
      <maximumUnimprovedStepCount>100</maximumUnimprovedStepCount> 
     </termination> 
    </localSearch> 

</solver> 

Antwort

1

Weil es <unimprovedStepCountLimit> jetzt genannt wird, sehen TerminationConfig.java:

<solver> 
    ... 
    <localSearch> 
    <termination> 
     <unimprovedStepCountLimit>...</> 
    </> 
    </> 
</> 

IIRC wurde es umbenannt, bevor die öffentliche API & Konfiguration von 6.1 fertig war.

+1

Vielen Dank, jetzt fühle ich mich sehr dumm, weil du mir klar gemacht hast, dass ich das veraltete Dokument für Version 6.0.1 gelesen habe ... Das erklärt meine "warum funktioniert das nicht" -Momente! Lesen der Dokumentation Version 6.4 jetzt. –

Verwandte Themen