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

Reply via email to