Question

I am a Java/C/Python developer who is looking to assist a relative who manages a custom product shop. I am new to optaplanner and contraint programming in general, so my questions are:

1.) Is the scheduling problem below likely solvable in optaplanner (or one of its alternatives)?

2.) What kind of algorithm is best suited for this problem? It seems like it has a close resemblance to the Project job scheduling example given in the (excellent) OptaPlanner documentation, but it has the additional constraint of scheduling multiple projects at any given time.

The simplified problem is:

  • At any given time, there are 1 to n projects.
  • Each project has its own deadline.
  • Each project has a sequenced series of jobs.
  • The domain for jobs is limited to cutting, sanding, and painting.
  • Any given job can appear 0 to many times in the sequence (i.e. not all projects have an 'cutting' job, but may have multiple 'painting' jobs)
  • Each project shares global resources, namely employees A, B, and C.
  • Employee A can only perform the cutting and sanding jobs
  • Employee B can only perform the cutting, sanding, and painting jobs
  • Employee C can only perform the sanding and painting jobs
  • Solutions only need to be feasible, not optimal
Était-ce utile?

La solution

Take OptaPlanner's "Project job scheduling" example and adjust it accordingly:

  • "there are 1 to n projects": The "Project job scheduling" example already has multiple projects.
  • "Each project has its own deadline." Add a hard constraint that the last job of a project must end before the project deadline. Make sure penalize the amount of time it's too late (see "score trap" in docs).
  • "sequenced series of jobs": configure the precedence constraints accordingly
  • "Any given job can appear 0 to many times in the sequence": each of those times is a separate job in the example-terminology.
  • "Each project shares global resources, namely employees A, B, and C": global, renewable resources
  • Solutions only need to be feasible, not optimal: Yet, I 'd still keep using the soft constraint to minimize the makespan.

Note: OptaPlanner 6.0 solves the "Project job scheduling" example pretty good already, but improvements planned for 6.1 are likely to improve results even more.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top