From: Geoffrey De Smet <ge0ffrey.spam@gmail.com>
To: rules-users@lists.jboss.org
Sent: Friday, August 31,
2012 9:08 AM
Subject: Re: [rules-users] Best model for planning? technicians, airplanes and shifts
Op 30-08-12 18:02, mvermand schreef:
> Hi,
>
> I'd like some advice on how to make my model.
>
> I need to plan maintenance-schedules for - let's say - airplanes.
> Constraints are:
> - planes are only at given moments available for maintenance (when not in
> the air ;-)
> - maintenance of a planes requires a number of techniciens (with specific
> skills).
> - techniciens have skills and also shifts and vacation.
>
Sounds like the nurse rostering example in Planner :)
In nurse rostering, such a Shift has a ShiftDate and a ShiftType.
The difference is, you need to assign jobs instead of shifts.
> Now, first I tought to make the maintenance of a plane the planningEntity.
> But I did not know how to populate and match the techniciens.
I wouldn't make plane the planningEntity either, it's on the one side of
the manyToOne
relation.
>
> So, second I tought to make a new Task-class the planningEntity.
> A Task is a job that needs to be done by a technicien with specific skills.
> Maintaining a plane requires then a number of tasks.
Good idea. In nurse rostering, a Task is called a ShiftAssignment.
You can generate all Tasks in advance based on the Planes and their jobs
and the number of technicians needed by each job.
I recommend to make separate Task instances for multiple technicians
that perform the same job together on the same plane. In nurse rostering
there are also multiple ShiftAssignments (=tasks) per Shift (=job).
>
> If I choose this model, I think I'll have to pass two Plannings variables to
> the Task planningEntity:
> 1) a Maintenance-fact (Plane + Period + list of required tasks) and
I don't think this is a planner variable on the planning entity Task.
It really
defines the Task: what job on what plane (and some of sort of
requiredTechnicanCountIndex)
> 2) a Technicien-fact (?)
This is a planning variable.
You're assigning task to techinicians.
Each task has exactly 1 technician (because a job has multiple tasks,
one per required technician).
Each technician can work on multiple tasks, but the hard/soft
constraints make sure that it's not at the same time.
>
> Then I'll need to check if availabity of plane and availability of
> technicien match and also skill-requirement of task and skills of
> technicien.
Yep, with constraints
>
> Do you think this second model is the right one?
>
> Will it perform well?
> => ? matching all combinations of plane availabilty and
> techniciens-availability and -skills.
It should, see the nurse rostering problem.
In Planner 5.5.0.Beta1, I would add a filter on
the swap move selector
to prevent it from swapping 2 technicians assigned to different tasks on
the same job.
https://github.com/droolsjbpm/drools-planner/blob/master/drools-planner-examples/src/main/java/org/drools/planner/examples/curriculumcourse/solver/move/DifferentCourseSwapMoveFilter.javatd>
> Thanks in advance
>
>
>
> --
> View this message in context: http://drools.46999.n3.nabble.com/Best-model-for-planning-tp4019464.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>
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.orghttps://lists.jboss.org/mailman/listinfo/rules-users