2017-05-29 11 views
0

私はMeetingSchedulingの例に基づいてケースを持っています。 結果は良好です。 スケジューリングは、ヒューリスティックフェーズの構築から始まります。 次に、ローカル検索フェーズがあります。 CHフェーズは、ハードおよびミディアム制約ペナルティを削減しますが、LSはソフト制約ペナルティを軽減するようです。代替構成ヒューリスティックおよびローカル検索フェーズ

スケジューリングを再実行すると、CHフェーズではハードおよびミディアム制約のペナルティが再び減少することがわかりました。 したがって、CHとLSのフェーズを交互に複数回ソルバーに設定できますか?

現在のソルバー設定:

<?xml version="1.0" encoding="UTF-8"?> 
<solver> 
    <solutionClass>org.optaplanner.examples.meetings.domain.MeetingSchedule</solutionClass> 
    <entityClass>org.optaplanner.examples.meetings.domain.Meeting</entityClass> 

    <scoreDirectorFactory> 
    <scoreDrl>org/optaplanner/examples/meetings/solver/meetingsScoreRules.drl</scoreDrl> 
    </scoreDirectorFactory> 

    <termination> 
    <minutesSpentLimit>20</minutesSpentLimit> 
    </termination> 
</solver> 
+0

"繰り返し計画"(ドキュメント、2回の実行の間の問題の変更を参照)または "再加熱"(遅延受諾とシミュレートされたアニーリングで欠落している機能)のユースケースがありますか? nullable = trueを使用しない限り、問題の変更なしで2番目のCHを実行すると別の結果が得られることは変です。その場合は可能です。 –

答えて

0

これは動作するはずです:

<solver> 
    ... 
    <constructionHeuristic/> 
    <localSearch> 
    <termination>...stepCountLimit or calculateCountLimit?...</termination> 
    </localSearch> 
    <constructionHeuristic/> 
    <localSearch> 
    <termination>...stepCountLimit or calculateCountLimit?...</termination> 
    </localSearch> 
    <constructionHeuristic/> 
    <localSearch> 
    <termination>...stepCountLimit or calculateCountLimit?...</termination> 
    </localSearch> 
</solver> 

そしてプログラムによるAPIであなたは、nにそれを動的にすることができます。

これはおそらく最適ではない解決策です。適切な解決方法は(まだサポートされていません)を再加熱することです。

+0

ありがとう、それは動作します! – supertanuki

関連する問題