workflowfm / proter

A discrete event simulator for asynchronous prioritized processes
http://docs.workflowfm.com/proter
Apache License 2.0
1 stars 0 forks source link

Flexible resource matching #5

Open PetrosPapapa opened 4 years ago

PetrosPapapa commented 4 years ago

Currently each Task (or TaskGenerator) contains a list of resource names it requires. These are then picked up by the Scheduler using Task.taskResources and the resourceMap provided by the Coordinator.

It would be helpful to allow flexible resource matching, i.e. the potential to have more than 1 resource that can handle a particular task.

For example, one implementation could involve resources that have a list of capabilities. A Task might require one or more capabilities from one or more resources.

It would be even nicer if the matching function can be generalized to depend on the implementation.

This will complicate the Scheduler further as it will have to merge the appropriate (or all of?) the different combinations of resources that can handle each task and pick the optimal one.

PetrosPapapa commented 3 years ago

resource_scheduling Relevant drawing from meeting with @MBaczun just now.

PetrosPapapa commented 2 years ago

63 takes a step in this direction by introducing capacities to each resource. This allows us to specify things such as "5 milling machines" and the fact that a task requires "1 milling machine".

However, things can be generalized further:

  1. Perhaps not all resources (machines?) are equal and some cost more than others or take longer than others.
  2. Perhaps some machines can perform multiple "roles". For example you can have a machine that does both "milling" and "cutting" whereas another machine only does "milling.

Introducing "roles" is a much bigger challenge at this point, as resource selection is a whole other optimization problem on its own.