Decision Optimization

Decision Optimization

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

 View Only
  • 1.  Calculing Tardiness

    Posted Tue September 02, 2008 08:55 PM

    Originally posted by: SystemAdmin


    [Trilia said:]

    I'm using Scheduler and I try to resolve a scheduling problem which the total tardiness is the objectif function. I can resolve the problem with OPL, but in Scheduler i don't find the right way. The total tardiness is the sum of the tardiness for each activity where the tardiness is max(0, act(i).end() - d(i)) where :
    - act(i).end()  is the end date of the activity
    - d(i) is the due date (given in data)
    My problem it's how to get the activity end date and where in the Scheduler C++ program. I want to translate this instruction from OPL to Scheduler C++.

                      minimize  sum(j in 1..n) maxl (0,activity[j].end - due_date[j])
    #CPOptimizer
    #DecisionOptimization


  • 2.  Re: Calculing Tardiness

    Posted Mon September 15, 2008 04:56 PM

    Originally posted by: SystemAdmin


    [Gwyneth said:]

    I think you should be able to use IloActivity::getEndExpr to model what you want.


    #CPOptimizer
    #DecisionOptimization


  • 3.  Re: Calculing Tardiness

    Posted Mon September 15, 2008 05:12 PM

    Originally posted by: SystemAdmin


    [Trilia said:]

    Hello Gwyneth,

    The problem was that  I need the updated end times of each activity given the current state of search. If we were to try to directly access these values from the IloActivity objects in the model, we would simply get the end times from the model.

    Aymen
    #CPOptimizer
    #DecisionOptimization


  • 4.  Re: Calculing Tardiness

    Posted Mon September 15, 2008 08:33 PM

    Originally posted by: SystemAdmin


    [Gwyneth said:]

    The problem was that  I need the updated end times of each activity given the current state of search. If we were to try to directly access these values from the IloActivity objects in the model, we would simply get the end times from the model.

    getEndExpr does not return a value for the given moment.  It returns an expression that can be constrained and used in an objective.  If you do a search on "getStartExpr" within the documentation, you will examples in which constraints are placed on similar expressions.

    Referencing the expression should work well when building and setting the objective for the model.  For example, see the Scheduler Manual:

    > Advanced Concepts > Scheduling with Discrete Resources: the Ship-loading Problem, Second Version > Complete Program and Output

    where the endExpr is used to build an objective function.


    Or perhaps you are not being clear on where you access these values?  If you are writing a custom search and need the end expression for a reason other than setting the objective, then you should be able to use IlcScheduler::getActivity to get the underlying engine object.

    But if you simply need to build the objective, then using the getEndExpr will suffice.
    #CPOptimizer
    #DecisionOptimization


  • 5.  Re: Calculing Tardiness

    Posted Fri September 19, 2008 08:45 PM

    Originally posted by: SystemAdmin


    [Trilia said:]

    Hi Gwyneth,

    Thank you for your explanation !
    I'm using getExprEnd() since my first attempt but the program don,t work. But I find why :
    In the first stage a write my program in OPL and he run and give me a result. The studied problem is minimising a pool of job in a single machine with setup dependant  transition time. Like I said with OPL the program ram without any problem. I have any precedence constraint.
    When I'm using the C++ API, I thought that Scheduler will rank job automatically, but he doesn't. For that I added an IloGoal (IloSetTimesForward) just to try and he ran correctly.
    I have two questions for you :
    - What is the equivalent of the rank OPL instruction (or rankLocal or rankGlobal) with Scheduler ?
    - What is the equivalent of the DDSSearch() with Scheduler ? I have to use IloDDSEvaluator ?

    Thanks a lot.
    #CPOptimizer
    #DecisionOptimization


  • 6.  Re: Calculing Tardiness

    Posted Mon September 22, 2008 01:14 PM

    Originally posted by: SystemAdmin


    [phlab said:]

    Hello Trilia,

    [color=blue]I have two questions for you :
    - What is the equivalent of the rank OPL instruction (or rankLocal or rankGlobal) with Scheduler ?[/color]

    The equivalent of rank in ILOG Scheduler is the goal IloRankForward, it is documented in the ILOG Scheduler Reference Manual. If you want to rank all unary and state resources of your model with the default selectors, you can simply use:

    IloGoal goal = IloRankForward(env);

    [color=blue]- What is the equivalent of the DDSSearch() with Scheduler ? I have to use IloDDSEvaluator ?[/color]

    You indeed need to use a DDS evaluator. You can do:

    IloGoal goal = IloRankForward(env);
    IloGoal ddsgoal = IloApply(env, goal, IloDDSEvaluator(env));

    There are several optional parameters for the DDS evaluator creation function. They are documented in the ILOG Solver Reference Manual.

    Note that for the problem you describe (machine scheduling with setup-dependent transition time and tardiness cost), you could also try our new generation of scheduling model and search in ILOG CP Optimizer. This product provides a powerful model and a robust default search for solving scheduling problems. It has been shown to produce good quality solutions on problems involving setup-dependent transition times and tardiness costs. ILOG CP Optimizer is one of the engines accessible from ILOG OPL 6.X. A trial version can be downloaded from the OPL page ([url=http://www.ilog.com/products/oplstudio/]http://www.ilog.com/products/oplstudio/[/url]) .

    Hope it helps,
    Philippe

    #CPOptimizer
    #DecisionOptimization


  • 7.  Re: Calculing Tardiness

    Posted Mon February 16, 2009 07:25 PM

    Originally posted by: SystemAdmin


    [Trilia said:]

    Hello everybody,
    Thank you Philippe for your response.

    After hard work, I could model my problem and designe an algorithm. For that I use a cariable TARD that represents the tardiness and i use the follow goal :

        IloGoal goal = IloSetTimesForward(env,TARD,IloSelFirstActMinEndMin);


    Now, i try to optimise my algorithm for that i have 3 questions :
    - How i can place an initiale solution to the solver ?
    - Is there a way to write your own IloActivitySelector like IloSelFirstActMinEndMin ?
    - And finally, can i have help for ideas to improve the excution time (other goals, other constraint) ?
    For reminder i work with single machine with setup dependant time and minimizing the tardiness.
    Trilia
    #CPOptimizer
    #DecisionOptimization


  • 8.  Re: Calculing Tardiness

    Posted Mon August 10, 2009 01:46 AM

    Originally posted by: SystemAdmin


    [gangooa said:]

    We take a different approach here, in that tardiness is made part of the absences report. Employee absences are made up of the following: 1) Absences (Sick leaves, emergency leaves, absent without leave, etc). 2) Tardiness. 3) Unscheduled non-phone activites (those that require logging out of Avaya). The number of agents scheduled for the day is broken down into the collective number of minutes that we have. We take away all those enumerated above from it, and divide it by the scheduled minutes to reflect our absence rate. Very recently, we've scrapped the absence rate altogether and made it part of the agents' adherence to schedule ratings. -- Patrick Ross Espiritu, Smart Communications, Philippines

    [url=http://productreviewsby.me/acai-berry/] Acai Berry [/url]

    #CPOptimizer
    #DecisionOptimization