0

2 つの計画エンティティ間で計画値を同期したいと考えています。SubjecTeacherPeriodこの場合、可能な値の範囲がばらばらであっても、互いに「一致」する 2 つの期間を選択したいと考えています。

STP s1: period-N/A periodList->[1,2,3,4,5,6]
STP s2: period-N/A periodList->[106,107,108,109,110,111]
SyncConstraint(leftSTP = s1,rightSTP = s2)
<A rule for SyncConstraint that checks if s1.period and s2.period are compatible>

たとえば、とはどちらも「月曜日の最初の時間」であるため互換性がありますPeriod。と についても同様です。11062107

s2直後に割り当てられるプランニングエンティティの難易度を設定しs1ました(ログを見ました)。しかし、それらには互換性のない値が割り当てられています。また、システムはソルバー アクションの最後にこのようなエラーから回復することはありません。

それらを同期させるにはどうすればよいですか?


「互換性」と「一致」について言及した場合、Period2 つのフィールド (曜日と曜日の順序) が等しい を意味します。各クラス (およびSubjectTeacherPeriodそのクラスで可能な各ピリオド) には、個別Periodの があります。

4

1 に答える 1

0

classPeriodで getter getPeriodType()(たとえば、「月曜日の最初の時間」を返す) を作成し、次のようなスコア ルールを追加します。

when
    MyEntity($leftType: period.periodType, $leftId : id, ...)
    MyEntity(period.periodType != $leftType, id < $leftId, ...)

または、Period複数のタイプを持つことができる場合は、そのゲッターを作成せずにリレーション クラスを作成しますPeriodToPeriodTypeLink

when
    MyEntity($leftP : period, $leftId : id, ...)
    MyEntity($rightP : period, id != $leftId, ...)
    PeriodToPeriodTypeLink(period == $leftP, $t : type)
    not PeriodToPeriodTypeLink(period == $rightP, type == $t)
于 2012-04-03T10:01:00.330 に答える