[rules-users] Best model for planning? technicians, airplanes and shifts

Geoffrey De Smet ge0ffrey.spam at gmail.com
Fri Aug 31 04:54:09 EDT 2012


Op 31-08-12 09:46, Michiel Vermandel schreef:
> Thank you for the response.
> I think I forgot one level of complexity (?):
>
> The moment of maintenance of a plane is not fixed.
>
> We have 12 "periods" per year for maintenance.
> One period every month.
>
> We need to make the planning in such way that the list of planes is
> planned somewhere in these 12 periods.
> But it is not important that a specific plane is maintained at a
> specific period.
> It has though a calendar of unavailability.
>
> So the job (==Shift) of the Task (==ShiftAssignment) has no hard
> constraint on period.
>
> We need to find that combination with the best match between required
> skills for the job and available technicians.
> It's better to plan the job on a later period if at that time a more
> skilled technician is available.
>
> I hope this is a bit clear.
>
> So, given this addition, should I take as planning variables:
>
> 1) Period (List of 12 periods)
> 2) Technician

Good idea

>
> Then use period to check availability on both plane and technician
> (hard-constraint)
I see 3:
- plane availability
- technician conflicts (2 tasks at the same time)
- technician availability
> Then give a better weight on skill-match (soft-constrain)?

yes (and possible others, such as work load, technician desires, ...)

>
> Thank you.
>
> Michiel
>
> -----------------
> http://www.codessentials.com - Your essential software, for free!
> Follow us at http://twitter.com/#!/Codessentials
> ------------------------------------------------------------------------
> *From:* Geoffrey De Smet <ge0ffrey.spam at gmail.com>
> *To:* rules-users at 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
> <http://nabble.com/>.
>  > _______________________________________________
>  > rules-users mailing list
>  > rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>  > https://lists.jboss.org/mailman/listinfo/rules-users
>  >
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>




More information about the rules-users mailing list