Decision Optimization

Decision Optimization

Delivers prescriptive analytics capabilities and decision intelligence to improve decision-making.


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Modeling hierarchical objective function

    Posted 06/12/17 03:49 PM

    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


  • 2.  Re: Modeling hierarchical objective function

    Posted 06/13/17 03:37 AM

    Originally posted by: PhilippeLaborie


    Hello Joris,

    In CP Optimizer we introduced the notion of a lexical multicriteria objective function for that. See the documentation of staticLex, in particular in Java:

    IloMultiCriterionExpr IloCP::staticLex(IloNumExpr[] criteria, java.lang.String name)

    This function defines a multicriteria expression for lexicographic ordering.

     

    If you need finer control on the different components of the objective function (how much time is spent on each of them, relaxing the strict lexicographical order, ...) you can also use a multi-stage approach each stage focusing on a particular component and passing its incumbent solution to the next stage as a starting point. See also: https://www.ibm.com/developerworks/community/forums/html/threadTopic?id=1048421d-6b1b-49f2-8e1d-09549fc31c4a

     

    Philippe


    #CPOptimizer
    #DecisionOptimization