Mats Norén wrote > Hi, > I've got a really simple problem that I can't seem to fix. :-) > I'm trying to use a simplified model for a room planning problem. > The planning entity is a Topic and the planning variables are Room and > TimeSlot. > A Person is tied to a Topic as a moderator. > Each Person can have multiple Topics as an interest. > > The hard constraints are that a Person cannot be moderator in two Topics > at > the same TimeSlot and that there cannot be multiple Topics in the same > Room > at the same TimeSlot. > > rule "conflictingModeratorInSameTimeslot" > when > $leftTopic : Topic($leftId : id, $leftTimeslot : timeSlot, > timeSlot > != null, $leftModerator: moderator) > $rightTopic : Topic(timeSlot == $leftTimeslot, moderator == > $leftModerator, id > $leftId) > then > scoreHolder.addHardConstraintMatch(kcontext, -1); > end > > rule "multipleTopicsInSameRoomAndTimeslot" > when > $leftTopic : Topic($leftId : id, $leftTimeslot : timeSlot, > timeSlot > != null, $leftRoom: room) > $rightTopic : Topic(timeSlot == $leftTimeslot, room == $leftRoom, > id > $leftId) > then > scoreHolder.addHardConstraintMatch(kcontext, -1); > end
yep, that's like in the curriculum course scheduling example Mats Norén wrote > The soft constraint that I have a problem with is that a Person has > multiple Topics as interests and I would like to penalize the Solution > with > the number of Topics in the Persons interests collection with the number > of > Topics that are allocated at the same TimeSlot. > > Any ideas on how to go about this? when $p : Person $rightTopic : Topic( $leftId : id, $t : timelsot) exists Interest(person == $p, topic == $leftTopic) Topic(id > $leftId, timeslot == $t) exists Interest(person == $p, topic == $rightTopic) then // This will count the number of conflicting topic pairs // 2 conflicting topics count 1 // 3 conflicting topics count 3 // 4 conflicting topics count 6 You 'll probably want to split up the class Topic into Topic and TopicAssignement, like in the examination example (see domain diagram in latest manual) -- View this message in context: http://drools.46999.n3.nabble.com/rules-users-Planner-tp4023586p4023658.html Sent from the Drools: User forum mailing list archive at Nabble.com. _______________________________________________ rules-users mailing list rules-users@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-users