At the heart of this project lies an algorithm that can propose optimal sequences of work for teams that have large collections of weighted, interdependent work of varying sizes and a finite degree of parallelization.
I've now added tests for some of the basic requirements of such a scheduler. These are not all of the requirements, but these initial tests serve as a guideline for what such an algorithm would do. Additional tests may be added by the implementer or the reviewer to ensure correctness.
Ensure the scheduler can find correct optimal paths
Ensure the scheduler proposes alternate paths when multiple equally optimal paths exist
Ensure the scheduler can handle scheduling workflows that can tolerate parallel work
The solution should be defined in proposeOrderFor.ts, which is in TypeScript and has its interface types defined already to help clarify the intentions of the function. It is possible that a solution would only change that file, and would make the tests pass (unless the tests are wrong).
I suspect there is an algorithm off the shelf that can be applied to this problem, but I'm not aware of what it is, which is why I've documented my issue like this, inviting outside contribution from people who may be better versed in algorithms.
At the heart of this project lies an algorithm that can propose optimal sequences of work for teams that have large collections of weighted, interdependent work of varying sizes and a finite degree of parallelization.
I've now added tests for some of the basic requirements of such a scheduler. These are not all of the requirements, but these initial tests serve as a guideline for what such an algorithm would do. Additional tests may be added by the implementer or the reviewer to ensure correctness.
The solution should be defined in proposeOrderFor.ts, which is in TypeScript and has its interface types defined already to help clarify the intentions of the function. It is possible that a solution would only change that file, and would make the tests pass (unless the tests are wrong).
I suspect there is an algorithm off the shelf that can be applied to this problem, but I'm not aware of what it is, which is why I've documented my issue like this, inviting outside contribution from people who may be better versed in algorithms.