2017-03-14 23 views
1

MoveSelectionFilterを使用して計画エンティティインスタンスを計画から除外しようとしています。移動がない場合でもOptaPlannerはエンティティを計画します

すべてが拒否されたとしても、デバッグ出力に従って、インスタンスは構造ヒューリスティックフェーズで最初は計画されています。 WEAKEST_FITヒューリスティック、2つのカスタムMoveListFactories(現時点では、動きを生成しない)とデフォルトのMoveListFactoryを使用しています。

OptaPlannerでこれらのエンティティを計画しないでください。私はあなたが日付を進めるが、行動を再現することができなかった場合、私がやりたいことを正確に行う看護師の搾乳の例を見てきました。

編集:フィルタは確実に適用されています。私はMoveListsのサイズをチェックしており、両方とも空です。

public boolean accept(PatientAdmissionSchedule patientAdmissionSchedule, BedDesignation bedDesignation) { 
    return false; 
} 

そしてそうのように適用されます:

私のフィルタは、このようになります

if (filter.accept(patientAdmissionSchedule, bedDesignation)) { 
      for (Bed bed : bedList) { 
       moveList.add(new BedChangeMove(bedDesignation, bed)); 
      } 
     } 

およびデバッグに

for (ListIterator<BedDesignation> it = bedDesignationList.listIterator(); it.hasNext();) { 
     BedDesignation bedDesignation = it.next(); 
     if (!filter.accept(patientAdmissionSchedule, bedDesignation)) { 
      it.remove(); 
     } 
    } 

、私は次の行を持っている

2017-03-14 19:40:59,305 [SwingWorker-pool-4-thread-1] DEBUG  CH step (31), time spent (173), score (0hard/0medium/0soft), selected move count (7), picked move (Patient6(Night(7),null) {null -> 15(0)}). 
2017-03-14 19:40:59,306 [SwingWorker-pool-4-thread-1] INFO Construction Heuristic phase (0) ended: step total (32), time spent (174), best score (0hard/0medium/0soft). 
2017-03-14 19:40:59,313 [SwingWorker-pool-4-thread-1] WARN  No doable selected move at step index (0), time spent (181). Terminating phase early. 

私はさらに、選択する動きがないことを実証していると思います。

計画エンティティは患者入院スケジューリング例のものと本質的に同一である。

@PlanningEntity(difficultyWeightFactoryClass = BedDesignationDifficultyWeightFactory.class) 
@XStreamAlias("BedDesignation") 
public class BedDesignation extends AbstractPersistable { 

private Admission admission; 
private Bed bed; 
private Night night; 

@PlanningVariable(nullable = true, valueRangeProviderRefs = {"bedRange"}, 
     strengthComparatorClass = BedStrengthComparator.class) 
public Bed getBed() { 
    return bed; 
} 

Iも空MoveListを返す単一MoveListFactoryを使用してみました。しかし、まだ何らかの形でこのような動きがあります。このような動きはまだありますが、ヒューリスティックな段階で選択されたものがあります。

+1

movableEntitySelectionFilter属性が欠落しているあなたは、関連するコードを投稿することができますか?あなたのフィルタリングが適用されていないと思われます。 –

+0

詳細については、私の編集を参照してください。 – Silvester

+0

計画エンティティクラスコードがありません。 –

答えて

1

あなたは@PlanningEntity

@PlanningEntity(movableEntitySelectionFilter = MovableLectureSelectionFilter.class, ...) 
public class Lecture ... 
関連する問題