Job scheduling optimiser user case
Has the Anaplan optimiser been succesfully used for a job scheduling problem?
Objective is to minimise the time taken to complete a set of jobs.
1) We have a list of resources who can each supply a maximum amount of time per time period.
i.e. Time spent by resource A in period X <= Time available for resource A in period X
2) We have a list of jobs to be completed. Each job requires a fixed level of time from each resource to complete.
i.e. Total time required for job by resource A >= Total time spent on job by resource A across all time periods.
3) Some jobs cannot be started until other jobs have completed.
i.e. If task 2 is dependent on task 1 completing.
Time Spent on task 2 in period X =0, if time spent on task 1 >0 in any period >X.
Objective is easy to approximate using linear contraints (peanalising future periods very heavily).
Constraint 1 & 2 are easy to deal with using linear constraints.
While contraint 3 can easily also be modelled in Anaplan, I'm not sure how to model it without using logic which is clearly non-linear and thus not compatible with optimiser.
If anyone has come across this before, please advise as to whether this is possible?
Optimizer can be configured to have dependent variables constrained by the value of another value in the preceding time period.
I suggest that you separate a given time block into a dynamic time series consisting of hours, blocks, etc. For example, if there are 4 time blocks per day, the variables can be set up like so:
Variable 1: Task 1 Scheduled? (1 = True, 0 = False), dimensionalized by Time Block
Variable 2: Task 2 Scheduled? (1 = True, 0 = False) dimensionalized by Time Block
List: Time Block with a Previous Property
Block 1 (Previous: BLANK)
Block 2 (Previous: Block 1)
Block 3 (Previous: Block 2)
Block 4 (Previous: Block 3)
Constraint 1: Task 1 <=1
Constraint 2: Task 2 <=Task 1[LOOKUP: Previous Time Block]
This will constrain Task 2 so that it can only be scheduled if Task 1 was performed in the previous block. We have some example of this logic in action with a workforce scheduling optimizer where shifts must be contiguous.
Thank you for your advise.
Two issues I'm still not sure how to cope with;
1) A task may take multiple periods to complete. We need to define when it has completed rather than just scheduled.
It maybe that task 1 completes more than one time period before it is optimal to start task 2.
Thus we cannot just look up the prior time block?
2) I think introducing the additional variables below and linking them to the time the resources spend on the task will make the resource constraint non-linear.
i.e. (Time spent on task 1 by resource A)*(Task 1 Scheduled?)<= Time available for resource A.
Is of form Variable*Variable<= Constant and thus non-linear.0
Hello for your 3rd constraint, could you try creating a variable wich is beggining of job
You will also create a properties which is ending of dependant job
for this property, you will add a formula which says that it is equal to the variable beggining of job + time to achieve the job
then in your constraint module, you write beggining of job- the properties >= 0
If you want i can try to do it with you tomorrow, because i don't know if the idea i shared is very clear1