The Resource Alternatives Extension

The resource alternatives extension is unique to LibRCPS and was the subject of the diploma thesis of the author. Basically we allow a job to declare alternative resource requirements. In a simple example you could have a job that either requires a worker A or worker B.

The motivation behind this is that in the classical model, you can have a number of different resources with a capacity each, but the individual instances of these resources are treated the same. Resource alternatives allows to differentiate them. As an example, you could have a couple of workers, of which some are skilled to use welders, some to drive a caterpillar and all to do basic works. If you have a job that requires two workers for basic works, one welder and one caterpillar driver, you will not be able to model this with the classical model. Using the modes extension, you will be able to model it but you will need about Nw * Nc * Ng modes where Nw is the number of workers that can weld, Nc the number of workers that can drive a caterpillar, and Ng is the number of generic workers. This can quickly get out of hand ,especially as this number multiplies with the number from other resource requests. And to make things worse, the performance of the meta-heuristic solver will degrade if the number of modes on a job differ extremely. Unfortunately this kind of modelling problem gets more and more common as the projects are getting more complicated and both personnel and material are getting more specialized.