2017-07-03 4 views
0

結果に表示される動作は、1つの期間(月曜日の午前9時など)にしか存在しない2つのコースが同じハードな制約があるにもかかわらず、とにかく期間。私がしたいことは、それらのうちの1つがnullに設定されているので、後でそれらを取得してユーザーに通知できることです。Optaplanner:ハード変数が破損した場合にプランニング変数をnullにする方法

この設定はありますか?そうでない場合は、どうすればこのようなケースを処理する必要がありますか?私のアプリケーションではハードな制約が崩れることが予想されますが、私にとって重要なことは、どのコースをスケジュールすることができないのかをユーザーに通知できることです。

ここだが、関連するハード制約ルールです:私が正しく理解していれば

rule "roomOccupancy" 
    when 
     Lecture(period != null, $leftPeriod:period, room != null, $leftRoom: room) 
     Lecture(eval($leftPeriod.overlaps(period) == true), $leftRoom == room) 
    then 
     scoreHolder.addHardConstraintMatch(kcontext, -1); 
end 

答えて

1

、あなたは一定の制約が壊れている場合はコースの一つは、スケジュール内の未割り当てのままにしたいです。デフォルトでは、各計画エンティティが計画されます。スコアが最も高いソリューションはまだ解決策になります。

over-constrained planning:ハードな制約を破ることなくできるだけ多くのエンティティを割り当てる場所をお勧めします。過剰制約計画では、エンティティを未割り当てのままにすることができます。

関連する問題