Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Help with Job/Machine Scheduling Model

    Posted 09/28/18 07:14 PM

    Originally posted by: Spegs21


    I'm have trouble getting this model to schedule jobs properly and calculate the parameters correctly.

    The idea is to schedule a group of jobs on multiple unrelated machines. The jobs have ready times and if the job starts later than its ready time the processing time of the job is penalized based on how late the job started and its decay rate. In this problem I;m aiming to minimize the total tardiness between all the jobs. 

    There are a few issues:

    • I'm struggling to write the model without some sort of big number B used in the constraint that makes sure a job cannot start before the job that proceeds it completes on the same machine. If B get to big in the example it appears to cause bullet point 3. This may not be an issue if that is fixed.
    •  Processing time do not always calculate correctly due to the '>=' style constraint. Using '==' appears to break the model
    • Jobs will sometimes form separate groups on a machine and loop in the group instead of running straight though the list of jobs assigned to one machine
      • For example it says 3 proceeds 4 proceeds 5 proceeds 3

    The mod with sample data it attached. I've been struggling with this for awhile and am open to any ideas. 

    Thanks!

     

     


    #DecisionOptimization
    #MathematicalProgramming-General


  • 2.  Re: Help with Job/Machine Scheduling Model

    Posted 09/29/18 02:26 AM


  • 3.  Re: Help with Job/Machine Scheduling Model

    Posted 10/02/18 08:36 PM

    Originally posted by: Spegs21


    Alex,

    I've become aware only recently in researching my issue. Admittedly, we were never taught how to use the CP optimizer in my OR courses, only IP and MIP. 

    I have  the model mostly complete using the CPO. The only thing I need to implement is the variable size of the processingtimes interval. It needs to be calculated using a linear deterioration based on the job properties: [base processing time] + [decay rate]*([start time]-[ready time])

    [base processing time] is dependent on what machine the job is processed on. Right now I'm just using the base processing times as the size of the interval. The MOD and DAT files are attached. 

    Let me know if you can help or if I should post in the CP forum. Thanks for the help!


    #DecisionOptimization
    #MathematicalProgramming-General


  • 4.  Re: Help with Job/Machine Scheduling Model



  • 5.  Re: Help with Job/Machine Scheduling Model

    Posted 10/03/18 10:44 AM

    Originally posted by: Spegs21


    Alex,

    It looks like lengthOf just gets the length of an interval. I need to know how to set it or the size. The problem with setting with size in the interval declaration is it doesn't allow you to use dexprs or dvars in the calculation. I don't know how else to get the start time of a job.


    #DecisionOptimization
    #MathematicalProgramming-General


  • 6.  Re: Help with Job/Machine Scheduling Model

    Posted 10/03/18 12:38 PM

    Hi,

    you can use that with a dexpr.

    using CP;


    dvar int x in 1..4;
    dvar interval a;

    subject to
    {

    lengthOf(a)==2*x;
    }

    works fine

    regards

    https://www.linkedin.com/pulse/making-decision-optimization-simple-alex-fleischer/

     


    #DecisionOptimization
    #MathematicalProgramming-General


  • 7.  Re: Help with Job/Machine Scheduling Model

    Posted 10/03/18 08:32 PM

    Originally posted by: Spegs21


    Alex,

    I've added the constraint as you have shown but it does not appear to play nice with the alternative constraint. The engine log reports a conflict size of 3 constraints, however no conflicts are listed in the conflicts tab. If I comment out the alternative constraint it will schedule the jobs (with the penalty) but with every job on every machine.

    The updated MOD file is attached. Let me know if you have any insight. Thanks for the help!

    Edit:

    Conflicts

    Printing conflicts using conflictIterator
    Member name:[c2[job = <7,26,0,2>]= alternative[jobs[<7>],all[pt in ProcessingTimes: pt.job == 7] processingtimes[pt]]]
    Conflict type:ConflictMember
    Member name:[c3[job = <7,26,0,2>,pt = <7,1,15>]= lengthOf[processingtimes[<7,1>]] == 15+penalty[job]]
    Conflict type:ConflictMember
    Member name:429655920
    Conflict type:ConflictMember

     


    #DecisionOptimization
    #MathematicalProgramming-General