<html><body><div style="color:#000; background-color:#fff; font-family:tahoma, new york, times, serif;font-size:10pt">Thank you for the response.<br>I think I forgot one level of complexity (?):<br><br>The moment of maintenance of a plane is not fixed.<br><br>We have 12 "periods" per year for maintenance.<br>One period every month.<br><br>We need to make the planning in such way that the list of planes is planned somewhere in these 12 periods.<br>But it is not important that a specific plane is maintained at a specific period.<br>It has though a calendar of unavailability.<br><br>So the job (==Shift) of the Task (==ShiftAssignment) has no hard constraint on period.<br><br>We need to find that combination with the best match between required skills for the job and available technicians.<br>It's better to plan the job on a later period if at that time a more skilled technician is available.<br><br>I hope this is a bit clear.<br><br>So, given this addition,
 should I take as planning variables:<br><br>1) Period (List of 12 periods)<br>2) Technician <br><br>Then use period to check availability on both plane and technician (hard-constraint)<br>Then give a better weight on skill-match (soft-constrain)?<br><br>Thank you.<br><br>Michiel<br><div><span><br></span></div><div>&nbsp;</div><div>-----------------<br>http://www.codessentials.com - Your essential software, for free!<br>Follow us at http://twitter.com/#!/Codessentials<br></div>  <div style="font-family: tahoma, new york, times, serif; font-size: 10pt;"> <div style="font-family: times new roman, new york, times, serif; font-size: 12pt;"> <div dir="ltr"> <font face="Arial" size="2"> <hr size="1">  <b><span style="font-weight:bold;">From:</span></b> Geoffrey De Smet &lt;ge0ffrey.spam@gmail.com&gt;<br> <b><span style="font-weight: bold;">To:</span></b> rules-users@lists.jboss.org <br> <b><span style="font-weight: bold;">Sent:</span></b> Friday, August 31,
 2012 9:08 AM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [rules-users] Best model for planning? technicians, airplanes and shifts<br> </font> </div> <br>
Op 30-08-12 18:02, mvermand schreef:<br>&gt; Hi,<br>&gt;<br>&gt; I'd like some advice on how to make my model.<br>&gt;<br>&gt; I need to plan maintenance-schedules for - let's say - airplanes.<br>&gt; Constraints are:<br>&gt; - planes are only at given moments available for maintenance (when not in<br>&gt; the air ;-)<br>&gt; - maintenance of a planes requires a number of techniciens (with specific<br>&gt; skills).<br>&gt; - techniciens have skills and also shifts and vacation.<br>&gt;<br><br>Sounds like the nurse rostering example in Planner :)<br>In nurse rostering, such a Shift has a ShiftDate and a ShiftType.<br>The difference is, you need to assign jobs instead of shifts.<br><br>&gt; Now, first I tought to make the maintenance of a plane the planningEntity.<br>&gt; But I did not know how to populate and match the techniciens.<br><br>I wouldn't make plane the planningEntity either, it's on the one side of <br>the manyToOne
 relation.<br><br>&gt;<br>&gt; So, second I tought to make a new Task-class the planningEntity.<br>&gt; A Task is a job that needs to be done by a technicien with specific skills.<br>&gt; Maintaining a plane requires then a number of tasks.<br><br>Good idea. In nurse rostering, a Task is called a ShiftAssignment.<br>You can generate all Tasks in advance based on the Planes and their jobs <br>and the number of technicians needed by each job.<br><br>I recommend to make separate Task instances for multiple technicians <br>that perform the same job together on the same plane. In nurse rostering <br>there are also multiple ShiftAssignments (=tasks) per Shift (=job).<br><br>&gt;<br>&gt; If I choose this model, I think I'll have to pass two Plannings variables to<br>&gt; the Task planningEntity:<br>&gt; 1) a Maintenance-fact (Plane + Period + list of required tasks) and<br><br>I don't think this is a planner variable on the planning entity Task.<br>It really
 defines the Task: what job on what plane (and some of sort of <br>requiredTechnicanCountIndex)<br><br>&gt; 2) a Technicien-fact (?)<br>This is a planning variable.<br>You're assigning task to techinicians.<br>Each task has exactly 1 technician (because a job has multiple tasks, <br>one per required technician).<br>Each technician can work on multiple tasks, but the hard/soft <br>constraints make sure that it's not at the same time.<br><br>&gt;<br>&gt; Then I'll need to check if availabity of plane and availability of<br>&gt; technicien match and also skill-requirement of task and skills of<br>&gt; technicien.<br><br>Yep, with constraints<br><br>&gt;<br>&gt; Do you think this second model is the right one?<br>&gt;<br>&gt; Will it perform well?<br>&gt; =&gt; ? matching all combinations of plane availabilty and<br>&gt; techniciens-availability and -skills.<br><br>It should, see the nurse rostering problem.<br>In Planner 5.5.0.Beta1, I would add a filter on
 the swap move selector <br>to prevent it from swapping 2 technicians assigned to different tasks on <br>the same job.<br><br><a href="https://github.com/droolsjbpm/drools-planner/blob/master/drools-planner-examples/src/main/java/org/drools/planner/examples/curriculumcourse/solver/move/DifferentCourseSwapMoveFilter.javatd" target="_blank">https://github.com/droolsjbpm/drools-planner/blob/master/drools-planner-examples/src/main/java/org/drools/planner/examples/curriculumcourse/solver/move/DifferentCourseSwapMoveFilter.javatd</a><br><br>&gt;<br>&gt; Thanks in advance<br>&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt; View this message in context: http://drools.46999.n3.nabble.com/Best-model-for-planning-tp4019464.html<br>&gt; Sent from the Drools: User forum mailing list archive at <a target="_blank" href="http://nabble.com/">Nabble.com</a>.<br>&gt; _______________________________________________<br>&gt; rules-users mailing list<br>&gt; <a
 ymailto="mailto:rules-users@lists.jboss.org" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>&gt; <a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>&gt;<br><br><br>_______________________________________________<br>rules-users mailing list<br><a ymailto="mailto:rules-users@lists.jboss.org" href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br><a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br><br><br> </div> </div>  </div></body></html>