Decision Optimization

Decision Optimization

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

 View Only
Expand all | Collapse all

Continuous process scheduling constraint

  • 1.  Continuous process scheduling constraint

    Posted Tue December 20, 2016 01:25 PM

    Originally posted by: SatishA


    Hi Team,

    I have a query in scheduling where I am trying to model a continuous process i.e, material coming from one machine is sent to subsequent machines continuously say using a pipe.That means there is no WIP in between. For example, product A is flowing from Machine 1 at a particular run rate x per hour  to one or more of machines A,B,C,D and E with different run rates. One of these machines will start as soon as Machine 1 starts and others as required based on their run rate. I need to model the following. 

    (i) At any point of time , whenever machine 1 is active, one of these machines A to C should be active 

    (ii) At any point of time, Quantity produced in Machine 1 should not be less than the quantity produced on one or more of machines A to E based on their run rate.

    I could model point (i) using cumulative function by tracking how many are active and using alwaysIn constraint to force that at-least one of them to be active in that interval.

    I need help in point (ii). Based on run rate of machine 1, so many subsequent machines should run to match the production rate with consumption rate only in that interval where machine 1 is running. This check should happen at every time point in that interval.

     

    Please help me out. Let me know if you need more details.

     

    Thanks,

    Satish

     

     


    #DecisionOptimization
    #OPLusingCPOptimizer


  • 2.  Re: Continuous process scheduling constraint

    Posted Wed December 21, 2016 06:46 AM

    Originally posted by: GGR


    Hi Satish

     

    If I may rephrase your problem I would say that At any time point, if the production Machine P_1 (rune rate pr_1) is executing a task (intervals p_1_i) then the set of not idle consuming  machine A-E (run rate  cr_j intervals c_j_k) is such that the sum of the run rate overcome pr_1. So I would use a cumulative expression that compute the difference of run rate and state the cumul to be positive:

    sum (j in J, k in K) pulse(c_j_k, cr_j) - sum (i in I) pulse( p_1_i, pr_1) >= 0;

     

    By the way you could do the same thing for condition 1 using 1 as height of the pulses rather that multiplying alwaysIn constraint. It is hard to say what is the most efficient model.

     

    The solver may have difficulties to find a first incumbent. Warn us if it is the case.

     

    Hope that helps

     

     

     


    #DecisionOptimization
    #OPLusingCPOptimizer


  • 3.  Re: Continuous process scheduling constraint

    Posted Fri December 23, 2016 01:45 AM

    Originally posted by: SatishA


    Hi GGR,

    Thanks for your response. 

    I understood point (ii) and i think it should work. I will try it  out.

    For point (i), I am using the following.

    cumulFunction ResUsage[m in Root_Details_Comb] 
        = sum(k2 in VALID_COMB:m.r1==k2.r1) pulse(all_tasks[k2],1);
        
    forall(k1 in Root_Details_Comb)
         ct:alwaysIn(ResUsage[k1],RT[k1].bt,RT[k1].et,1,100);
    

    ResUsage should be >= 1 only in the interval [RT[k1].bt,RT[k1].et]. So, that's why I am using alwaysIn constraint. I do not have a interval variable to find out the pulse in this case. I only have the intervals. 

     

    Thanks,

    Satish

     

     

     


    #DecisionOptimization
    #OPLusingCPOptimizer