Given a list of tasks, interdependencies between them, effort estimates and resources to complete them, create a project plan. Internally formulates this as a scheduling problem to solve the optimisation.
Model this as a constraint programming problem and solved using google or tools library.
Objective: To minimise the total time taken to fulfil all tasks. Currently we are weighing all tasks equally.
Decision variables:
- Start time of tasks
- Resource assigned for each task
Constraints:
- All task dependencies modelled as precendence constraints i.e. end time of task1 <= start time of task2
- For a resource, no overlap constraint i.e. a resource can only work on one task at a time
- For all resources which can do a particular task, only one no overlap constraint is enforced per task, dependent on if that resource is assigned for that task
- UI to add data
- Additional constraints
- Limited availability of certain resources at certain times
- Additional objectives
- Fulfilling higher weighted tasks first
- Most task weight fulfilled by a certain time
- Standalone application / web application