Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Intepreting Profiler, Extract Step, Improve Processing

    Posted 06/14/10 03:25 PM

    Originally posted by: UDOPS


    Suggestions on what I can look for in my model to improve its processing speed? According to the profiler tab, cplex only takes 10 seconds to solve the problem, but the "extract" step requires 200 seconds, "self time".
    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 2.  Re: Intepreting Profiler, Extract Step, Improve Processing

    Posted 06/14/10 03:29 PM

    Originally posted by: UDOPS


    More detail: in addition to "extract", the profiler reports these two data structures as taking 77 and 70 seconds to process. Suggestions on making them more efficient?

    occheadway SBOccBlockNet = [ <i,t> :
    <card({r | <r,i,j,ti,tj,-1> in Paths: t>=ti && t<tj }),
    card({r | <r,a,i,ta,ti,-1> in Paths: TrainData[r].headway>0 && t>=ta && t<ti})+
    card({r | <r,a,i,ta,ti,-1> in Paths, <r,b,a,tb,ta,-1> in Paths: TrainData[r].headway>1 && t>=tb && t<ta})>
    | <i,t> in BlockNet];
    occheadway NBOccBlockNet = [ <i,t> :
    <card({r | <r,i,j,ti,tj,1> in Paths: t>=ti && t<tj }),
    card({r | <r,a,i,ta,ti,1> in Paths: TrainData[r].headway>0 && t>=ta && t<ti})+
    card({r | <r,a,i,ta,ti,1> in Paths, <r,b,a,tb,ta,1> in Paths: TrainData[r].headway>1 && t>=tb && t<ta})>
    | <i,t> in BlockNet];
    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 3.  Re: Intepreting Profiler, Extract Step, Improve Processing

    Posted 06/15/10 05:45 PM

    Originally posted by: UDOPS


    Follow up:

    I have to say I have spent a chunk of time using the profiler and I am very pleased with the insight it provides. I have been re-organizing the creation and re-use of enumerated sets, and have been able to cut my processing time significantly.

    Basically, I looked for places where the model steps through the same set repeatedly, and saved the results to an interim set for re-use later. Generally, I cut my model extraction time in half.
    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 4.  Re: Intepreting Profiler, Extract Step, Improve Processing

    Posted 06/16/10 07:35 AM

    Originally posted by: SystemAdmin


    If TrainData contains few values >0, you can perhaps try something like the following formulation.
    The idea is to reduce the domain of the iterations.
    (Please check my formulation is still equivalent to yours.)
    {T3} smallPaths1 = {<r,i,j,ti,tj> | <r,i,j,ti,tj,-1> in Paths: tj>ti};
    {T3} small00 = {<r,i,j,ti,tj> | <r,i,j,ti,tj> in smallPaths1: TrainData[r].headway>0};
    {T3} small01 = {<r,i,j,ti,tj> | <r,i,j,ti,tj> in small00: TrainData[r].headway>1};
    {T3} small02 = {<r,i,j,ti,tj> | <r,i,j,ti,tj,-1> in Paths: TrainData[r].headway>1};
    {T3} smallPaths2 = {<r,i,j,ti,tj> | <r,i,j,ti,tj,1> in Paths: tj>ti};
    {T3} small00 = {<r,i,j,ti,tj> | <r,i,j,ti,tj> in smallPaths2: TrainData[r].headway>0};
    {T3} small11 = {<r,i,j,ti,tj> | <r,i,j,ti,tj> in small00: TrainData[r].headway>1};
    {T3} small22 = {<r,i,j,ti,tj> | <r,i,j,ti,tj,1> in Paths: TrainData[r].headway>1};

    T1 A1BlockNet = [ <i,t> :
    <card({r | <r,i,j,ti,tj> in smallPaths1: tj>t>=ti}),
    card({r | <r,a,i,ta,ti> in small00: ti>t>=ta})+
    card({r | <r,b,a,tb,ta> in small01, <r,a,i,ta,ti> in small02: ta>t>=tb})>
    | <i,t> in BlockNet];

    T1 A2BlockNet = [ <i,t> :
    <card({r | <r,i,j,ti,tj> in smallPaths2: tj>t>=ti}),
    card({r | <r,a,i,ta,ti> in small00: ti>t>=ta})+
    card({r | <r,b,a,tb,ta> in small11, <r,a,i,ta,ti> in small22: ta>t>=tb})>
    | <i,t> in BlockNet];
    #DecisionOptimization
    #OPLusingCPLEXOptimizer


  • 5.  Re: Intepreting Profiler, Extract Step, Improve Processing

    Posted 06/16/10 12:27 PM

    Originally posted by: UDOPS


    Thanks!

    Currently my data is all or nothing, but I envision future problems where the parameter headway varies quite a lot.
    #DecisionOptimization
    #OPLusingCPLEXOptimizer