Originally posted by: JorisK
Given a job sequencing problem, where each job has a priority p=1,2,...,P. Jobs with priority 1 have the highest priority, and jobs with priority P the lowest priority.
Let T_pm be the completion time of jobs in priority class p on machine m. To minimize the makespan of this schedule, one could easily state:
minimize mkspn
mkspn=max_{p,m} T_pm
But what would be the best way to model (in CP optimizer, java) the following objective:
Optimize the schedule hierarchically in terms of the priority classes.
Mathematically, this objective could be stated as:
minimize \sum_{p=1}^{P} M_p T_p
where M_p is a weight for priority class p, T_p is the completion time of priority class p (T_p >= T_pm for all m). The weights are chosen in such a way that the following inequality holds:
M_p T_p > \sum_{p'=p+1}^{P} M_p' T_p'
This objective could be interpreted as follows. First optimize the objective 'minimize T_1', where T_1 is the completion time of priority class 1. Let t1 be the optimal value of the objective function. Add the constraint T_1==t1 to the model and solve for the new objective function 'minimize T_2'. Again, add T_2==t2 as a constraint and repeat.
Clearly I could state the objective minimize \sum_{p=1}^{P} M_p T_p directly for a given vector of weights M_p, but this may not be efficient for CP optimizer.
Follow up question: what would be the best way to model the weighted completion time objective function 'minimize \sum_{p=1}^{P} M_p T_p' for arbitrary (non-negative) values of M_p?
#CPOptimizer#DecisionOptimization