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

Then use period to check availability on both plane and technician (hard-constraint)
Then give a better weight on skill-match (soft-constrain)?

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@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.org
https://lists.jboss.org/mailman/listinfo/rules-users