Чтобы удовлетворить x из y ограничений
Я делаю программу хронометража, которая делает один на один соответствует SubjectTeacherPeriod
(субъект планирования) для Period
, Наступает случай, когда мне нужно: "в течение y периодов, по крайней мере, х SubjectTeacherPeriod
должен соответствовать match_condition
"
Например, я хочу ограничить 3 конкретных периода, по крайней мере, два из них должны преподаваться учителями, которые соответствуют asst prof
,
Вот структура данных, содержащая такое ограничение:
Class XOfYPeriods
SomeType match_condition
int x
List<Period> Periods //problem
SubjectTeacherPeriod
имеет Period
, конечно
class SubjectTeacherPeriod
int id
SomeType attrib
Period period
Как мне написать правило, которое оценивает человека Period
s из списка, чтобы проверить, если х число SubjectTeacherPeriod
ы, которые выделены тем Period
соответствуют ли условия?
Поправьте меня, если я определяю свои занятия в плохой форме.
Для примера, вот оператор, который нужно оценить для определения соответствия: eval(matches($stp_attrib,$match_condition))
Извините за использование псевдокода, если его перепутали более, чем уточнили. SomeType
на самом деле List Collections.disjoint
1 ответ
Я попробую, но не уверен, что полностью понимаю вашу формулировку проблемы:
rule "X of Y Periods"
when
$c : XOfYPeriods( )
$list : List( size > $c.x ) from
accumulate( $stp : SubjectTeacherPeriod( matches(attrib, $c.match_condition),
period memberOf $c.periods ),
collectList( $stp ) )
then
// $list of STP that match the condition and
// whose period matches one of the periods in the list
end
Надеюсь, поможет.