Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Better formulation using binary variables

    Posted 10/23/18 03:46 PM

    Originally posted by: Zoubeir


    I have a binary variable x_{ijt}^k that is 1 iff job i is assigned to machine j at time t using processor k. I would like to express the following constraints: 

    - If job i is assigned to machine j at time t using processor k then job i cannot be assigned to machine j' != j.
    - If job i is assigned to machine j at time t using processor k then job i cannot be assigned to machine j at time t' !=t using processor k' != k. 

    In other words, both constraints say that once job i is assigned to a machine, it must be assigned using the same processor only on that machine.

    I tried to formulate these constraints as follows:

    For the first constraint, I write it as x_{ijt}^k + x_{ij't'}^{k'} <= 1, for all i, j' != j, k, k',t,t'.

    For the second constraint, I write it as x_{ijt}^k + x_{ijt'}^{k'} <= 1, for all i,j, k != k',t != t'.

    Do you see a better way to do these?


    #DecisionOptimization
    #MathematicalProgramming-General


  • 2.  Re: Better formulation using binary variables



  • 3.  Re: Better formulation using binary variables

    Posted 10/25/18 06:52 AM

    Off the top of my head, I don't see a better way to formulate this with your variables. What I am wondering is this: given that jobs cannot migrate, do you really need to index x by t? Maybe you could just have a variable x_{ij}^k that tells where the job is processed and then have another variables that tells when the job is processed. It could well be that I missed something or that this is not a good idea because it makes writing any other constraints more complicated.


    #DecisionOptimization
    #MathematicalProgramming-General


  • 4.  Re: Better formulation using binary variables

    Posted 12/17/18 07:04 PM

    Originally posted by: EdKlotz


    I think your constraint expressions are concise and probably cannot be improved.  You have two logical conditions, and you only use two binary variables, using coefficients of 1.    That sounds pretty good to me.   In terms of improving your formulation, rather than looking for more concise formulation of your individual constraints, consider whether you can group your machines and processors by types.   For example, you might have 100 machines, but only 4 distinct type of machine.   Similarly, you might have 50 processors but only 5 different types.   If so, you may be better of modeling your system using variables associated with different machine and processor types.   So your constraints would involve number of machines of type r at time t assigned to processor of type s at time t.  Fundamentally, you need to decide whether the individual machine and processors are meaningful, or if just the machine or processor configuration matters.  Now, if you find that expressing the constraints is difficult using this more concise formulation and you prefer to stick with your current formulation, then set CPLEX's symmetry detection parameter to 5 if you have multiple machines or processors of each type.

    Also, with time periods, models often solve faster if you create a priority order where the discrete variables associated with the earlier time periods receive higher priority.


    #DecisionOptimization
    #MathematicalProgramming-General