2012-04-03 90 views
0

我想在兩個計劃實體之間同步計劃值。在這種情況下,我想讓兩個SubjecTeacherPeriod的選擇週期相互「重合」,儘管它們的可能值範圍是不相交的。如何將兩個計劃實體同步到一個值

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小號1106是兼容的,因爲它們都是「週一的第一小時」。同樣適用於2107

我確實在s1(我看到日誌)後面設置了計劃實體難度s2。但他們被分配的值不兼容。系統在求解器動作結束時從未從這樣的錯誤中恢復過來。

如何讓它們同步?


凡我所提到的「兼容」和「一致」,我的意思是Period S的有兩個領域的平等(周和天階的天)。每個班級(每個班級可能有SubjectTeacherPeriod)有單獨的Period s。

回答

0

在類Period,創建一個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) 
相關問題