Decision Optimization

Decision Optimization

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

 View Only
  • 1.  data size and parameters

    Posted Thu October 12, 2017 10:48 AM

    Originally posted by: user1234567


    Hi, i have a problem in my code; I got some erros. i think it is related to the parameter nbOper, and nbOpertotal. I used the example FlexibleJobshop, but i added 2 parameters: one for the number of operations per job, and the second is for the total number of oper. 

    .MOD

     

     using CP;
     
    int L = 1000;
     
    tuple paramsT{
    int nbJobs;
    int nbMchs;
    int nbOper;
    int nbOpertotal;
    };
     
    paramsT Params = ...;
    int nbJobs = Params.nbJobs;
    int nbMchs = Params.nbMchs;
    int nbOper = Params.nbOper;
    int nbOpertotal = Params.nbOpertotal;
     
     
    range Jobs = 1..nbJobs;
    range Mchs = 1..nbMchs; 
    range Oper = 1..nbOper; 
    range Opertotal = 1..nbOpertotal; 
     
     
    tuple Operation {
      int id;    // Operation id
      int jobId; // Job id
      int pos;   // Position in job
    };
     
    tuple Mode {
      int opId; // Operation id
      int jobId;
      int mch;  // Machine
      int pt;   // Processing time
    };
     
    {Operation} Ops   = ...;
    {Mode}      Modes = ...;
     
     
     
    // Position of last operation of job j
    int jlast[j in Jobs] = max(o in Ops: o.jobId==j) o.pos;
     
    dvar interval ops  [Ops]; 
    dvar interval modes[md in Modes] optional size md.pt;
    dvar sequence mchs[m in Mchs] in all(md in Modes: md.mch == m) modes[md];
     
    dvar int c[i in Jobs][j in Oper][k in Mchs] in 0..1000 ;
    dvar int s[i in Jobs][j in Oper][k in Mchs] in 0..1000;
    int p[i in Jobs][j in Oper][k in Mchs];
     
     
    int c1[i in Jobs];
     
    dvar int r[u in Opertotal][k in Mchs];
     
     dvar boolean X[i in Jobs][j in Oper][k in Mchs];
     dvar int+ e[i in Jobs][j in Oper][k in Mchs];
     dvar boolean y[i1 in Jobs][j1 in Oper][i2 in Jobs][j2 in Oper][k in Mchs];
     
     
    execute {
      cp.param.FailLimit = 10000;
    }
     
    minimize staticLex(max(i in Jobs, o in Ops: o.pos==jlast[i]) endOf(ops[o]),-sum(i in Jobs,j in Oper, k in Mchs) s[i][j][k]);
    subject to {
     
     
     
    forall (i in Jobs, j in Oper,o in Ops, md in Modes: md.jobId==i && md.opId==j && md.opId == o.id)
    sum (k in Mchs) X[i][j][k] == 1;
     
    forall (i in Jobs, j in Oper, k in Mchs)
      sum (i in Jobs, j in Oper) X[i][j][k] <= e[i][j][k];
     
    forall (i in Jobs,j in Oper, o in Ops, k in Mchs, 
    md in Modes: md.jobId==i && md.opId == j && md.mch == k && o.id==md.opId)
    ctc1:s[i][j][k] == startOf (modes[md]);
     
     
     
    forall (i in Jobs, j in Oper, o in Ops, k in Mchs, md in Modes: md.jobId == i && md.opId == j && md.mch == k && o.id==md.opId)
    ctc2:c[i][j][k] == endOf (modes[md]);
     
    //C8
     forall (i1,i2 in Jobs, j1,j2 in Oper, k in Mchs, md1 in Modes: md1.jobId == i1 && md1.opId == j1)
     c[i1][j1][k] >=  c[i2][j2][k] + y[i1][j1][i2][j2][k] * md1.pt - L*(1-sum(k in Mchs) y[i1][j1][i2][j2][k])  ;
     
     
     
    //C10
     forall (i in Jobs,j in Oper, o in Ops: o.pos==jlast[i])
     endOf(ops[o]) >= sum (k in Mchs) c[i][j][k];
     
      //C11
      forall (i in Jobs, o in Ops: o.pos==jlast[i])
      max(i in Jobs, o in Ops: o.pos==jlast[i]) endOf(ops[o]) >=  endOf(ops[o]);
     
    //C12
    forall (i in Jobs,j in Oper, k in Mchs)
      c[i][j][k] >= 0;
     
    forall (i in Jobs, j in Oper, k in Mchs)
      s[i][j][k] >= 0;  
     
    forall (i in Jobs, j in Oper, k in Mchs)
      p[i][j][k] >= 0;  
     
     
     
     
     
      forall (j in Jobs, o1 in Ops, o2 in Ops: o1.jobId==j && o2.jobId==j && o2.pos==1+o1.pos)
     
      endOf (ops[o1]) == startOf (ops[o2]);
      
      
      forall (j in Jobs, o1 in Ops, o2 in Ops: o1.jobId==j && o2.jobId==j && o2.pos==1+o1.pos)
        endBeforeStart(ops[o1],ops[o2]);
        
      forall (o in Ops)
        alternative(ops[o], all(md in Modes: md.opId==o.id) modes[md]);
         
         forall (m in Mchs)
        noOverlap(mchs[m]);
     
     
        
              forall (i in Jobs, j in Oper, k in Mchs, md in Modes, o in Ops: md.jobId==o.jobId 
          && md.opId==o.id && md.mch==k)
        
        sum (k in Mchs) X[i][j][k] == 1;
     
            forall (i in Jobs, j in Oper, k in Mchs)
        
        sum (i in Jobs, j in Oper) X[i][j][k] <= e[i][j][k];
      
       forall (k in Mchs, i1 in Jobs, i2 in Jobs, j1 in Oper, j2 in Oper, o1 in Ops, o2 in Ops:  o2.pos==1+o1.pos && o1.jobId == i1 && 
       o1.id == j1 && o2.jobId == i2 && o2.id == j2, md1,md2 in Modes:  md1.mch == k && md1.opId == o1.id &&
        md2.mch==k && md2.opId==o2.id )
        sum (i1 in Jobs, j1 in Jobs) y[i1][j1][i2][j2][k] <= 1 ;
        
        forall (k in Mchs, i1 in Jobs, i2 in 0..0, j1 in Oper, j2 in 1..1, o1 in Ops, o2 in Ops:  o2.pos==1+o1.pos && o1.jobId == i1 && 
       o1.id == j1 && o2.jobId == i2 && o2.id == j2, md1,md2 in Modes:  md1.mch == k && md1.opId == o1.id &&
        md2.mch==k && md2.opId==o2.id )
        sum (i1 in Jobs, j1 in Jobs) y[i1][j1][i2][j2][k] <= 1 ;        
      
        
        forall (i2 in Jobs, j2 in Oper, k in Mchs )
         sum (i1 in Jobs, j1 in Jobs) y[i1][j1][i2][j2][k] 
         <= sum (i1 in Jobs, j1 in Jobs) y[i2][j2][i1][j1][k] ;      
     
    }
     
    execute {
      for (var m in Modes) {
        if (modes[m].present)
          writeln("Operation " + m.opId + "of job" +m.jobId+ " on machine " + m.mch + " starting at " + modes[m].start+ "and ends at" +modes[m].end);
          
           
      }
    }
     
    tuple solutionT{
    int operation;
    int job;
    int machine;
    int start;
    int end;
    };
    {solutionT} solution = {<m.opId, m.jobId, m.mch, startOf(modes[m]), endOf(modes[m])> | m in Modes};

     

     

    .DAT

    Params = <8, 8, 4, 174>;

    Ops = {
      <1,1,0>,
      <2,1,1>,
      <3,1,2>,
     
      <4,2,0>,
      <5,2,1>,
      <6,2,2>,
      <7,2,3>,
      
      <8,3,0>,
      <9,3,1>,
      <10,3,2>,

      <11,4,0>,            
      <12,4,1>,
      <13,4,2>,
     
      <14,5,0>,
      <15,5,1>,
      <16,5,2>,
      <17,5,3>,
      
      <18,6,0>,
      <19,6,1>,
      <20,6,2>,
      
      <21,7,0>,
      <22,7,1>,
      <23,7,2>,
      
      <24,8,0>,
      <25,8,1>,
      <26,8,2>,
      <27,8,3>

    };

    Modes = {

    //job 1

      <1,1,1,5>,
      <1,1,2,3>,
      <1,1,3,5>,
      <1,1,4,3>,
      <1,1,5,3>,
      <1,1,7,10>,
      <1,1,8,9>,
      
      
      <2,1,1,10>,
      <2,1,3,5>,
      <2,1,4,8>,
      <2,1,5,3>,
      <2,1,6,9>,
      <2,1,7,9>,
      <2,1,8,6>, 
     
      <3,1,2,10>,
      <3,1,4,5>,
      <3,1,5,6>,
      <3,1,6,2>,
      <3,1,7,4>, //O11
      <3,1,8,5>,
      
     //job 2
      <4,2,1,5>,
      <4,2,2,7>,
      <4,2,3,3>,
      <4,2,4,9>,
      <4,2,5,8>,
      <4,2,7,9>,

      
      <5,2,2,8>,
      <5,2,3,5>,
      <5,2,4,2>,
      <5,2,5,6>,
      <5,2,6,7>,
      <5,2,7,10>,
      <5,2,8,9>,
     
      
      <6,2,2,10>,
      <6,2,4,5>, 
      <6,2,5,6>,
      <6,2,6,4>,
      <6,2,7,1>,
      <6,2,8,7>,
        
      <7,2,1,10>,
      <7,2,2,8>,
      <7,2,3,9>,
      <7,2,4,6>, 
      <7,2,5,4>,
      <7,2,6,7>,  
        
      //job3
      <8,3,1,10>,
      <8,3,4,7>,
      <8,3,5,6>,
      <8,3,6,5>,
      <8,3,7,2>,
      <8,3,8,4>,
      
      <9,3,2,10>,
      <9,3,3,6>,
      <9,3,4,4>,
      <9,3,5,8>,
      <9,3,6,9>,
      <9,3,7,10>,
        
      <10,3,1,1>,
      <10,3,2,4>,
      <10,3,3,5>,
      <10,3,4,6>,
      <10,3,6,10>,
      <10,3,8,7>,
            
    //job 4
      <11,4,1,3>,
      <11,4,2,1>,
      <11,4,3,6>,
      <11,4,4,5>,
      <11,4,5,9>,
      <11,4,6,7>,
      <11,4,7,8>,
      <11,4,8,4>,
      
      <12,4,1,12>,
      <12,4,2,11>,
      <12,4,3,7>,
      <12,4,4,8>,
      <12,4,5,10>,
      <12,4,6,5>,
      <12,4,7,6>,
      <12,4,8,9>,
        
      <13,4,1,4>,
      <13,4,2,6>,
      <13,4,3,2>,
      <13,4,4,10>,
      <13,4,5,3>, 
      <13,4,6,9>,
      <13,4,7,5>,
      <13,4,8,7>, 
       
        
      //job 5 ????? //Ilya plus de 4 op
      <14,2,1,3>,
      <14,2,2,6>,
      <14,2,3,7>,
      <14,2,4,8>,
      <14,2,5,9>,
      <14,2,7,10>,  
      
      <15,2,1,10>,
      <15,2,3,7>,
      <15,2,4,4>,
      <15,2,5,9>,
      <15,2,6,8>,
      <15,2,7,6>,

         
      <16,2,2,9>,
      <16,2,3,8>, 
      <16,2,4,7>,
      <16,2,5,4>,
      <16,2,6,2>,
      <16,2,7,7>,
        
      <17,2,1,11>,
      <17,2,2,9>,
      <17,2,4,6>,
      <17,2,5,7>, 
      <17,2,6,5>,
      <17,2,7,3>,    
      <17,2,8,6>,    
        
      //job 6
      <18,2,1,6>,
      <18,2,2,7>,
      <18,2,3,1>,
      <18,2,4,4>,
      <18,2,5,6>,
      <18,2,6,9>,
      <18,2,8,10>,

      <19,2,1,11>,     
      <19,2,3,9>,
      <19,2,4,9>, 
      <19,2,5,9>,
      <19,2,6,7>,
      <19,2,7,6>,
      <19,2,8,4>,
        
      <20,2,1,10>,
      <20,2,2,5>,
      <20,2,3,9>,
      <20,2,4,10>, 
      <20,2,5,11>,
      <20,2,7,10>,   
        
      //job 7
      <21,2,1,5>,
      <21,2,2,4>,
      <21,2,3,2>,
      <21,2,4,6>, 
      <21,2,5,7>,
      <21,2,7,10>, 
      
      <22,2,2,8>,
      <22,2,3,9>, 
      <22,2,4,3>, 
      <22,2,5,11>,
      <22,2,6,9>,
      <22,2,7,10>,
      <22,2,8,5>,
       
      <23,2,2,8>,
      <23,2,3,9>,
      <23,2,4,3>, 
      <23,2,5,8>,
      <23,2,6,6>, 
      <23,2,8,10>,  
        
      
      //job 8
      
      <24,2,1,2>,
      <24,2,2,8>,
      <24,2,3,5>,
      <24,2,4,9>, 
      <24,2,6,4>,
      <24,2,8,10>, 
      
      <25,2,1,7>,
      <25,2,2,4>,
      <25,2,3,7>, 
      <25,2,4,8>, 
      <25,2,5,9>,
      <25,2,7,10>,
     
      <26,2,1,9>,  
      <26,2,2,9>,
      <26,2,4,8>, 
      <26,2,5,5>,
      <26,2,6,6>, 
      <26,2,7,7>,  
      <26,2,8,1>,
        
      <27,2,1,9>,
      <27,2,3,3>,
      <27,2,4,7>, 
      <27,2,5,1>,
      <27,2,6,5>,
      <27,2,7,8>
     
    };
     

    Please help me to correct it. Thank you

     


    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: data size and parameters

    Posted Thu October 12, 2017 01:12 PM

    Hi,

    you have many out of range

     forall (k in Mchs, i1 in Jobs, i2 in Jobs, j1 in Oper, j2 in Oper, o1 in Ops, o2 in Ops:  o2.pos==1+o1.pos && o1.jobId == i1 &&
       o1.id == j1 && o2.jobId == i2 && o2.id == j2, md1,md2 in Modes:  md1.mch == k && md1.opId == o1.id &&
        md2.mch==k && md2.opId==o2.id )
        sum (i1 in Jobs, j1 in Jobs:j1 in Oper) y[i1][j1][i2][j2][k] <= 1 ;
        
        forall (k in Mchs, i1 in Jobs, i2 in 0..0, j1 in Oper, j2 in 1..1, o1 in Ops, o2 in Ops:  o2.pos==1+o1.pos && o1.jobId == i1 &&
       o1.id == j1 && o2.jobId == i2 && o2.id == j2, md1,md2 in Modes:  md1.mch == k && md1.opId == o1.id &&
        md2.mch==k && md2.opId==o2.id )
        sum (i1 in Jobs, j1 in Jobs) y[i1][j1][i2][j2][k] <= 1 ;        
     
        
        forall (i2 in Jobs, j2 in Oper, k in Mchs )
         sum (i1 in Jobs, j1 in Jobs:j1 in Oper) y[i1][j1][i2][j2][k]
         <= sum (i1 in Jobs, j1 in Jobs:j2 in Oper && j1 in Oper) y[i2][j2][i1][j1][k] ;      
     

    will work and I let you work from there

    regards


    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: data size and parameters

    Posted Wed October 18, 2017 06:00 AM

    Originally posted by: user1234567


    Thank you for your reply. Yes it worked. But if i change the example and use a big size instance, it takes much time and doesn't work.

    For example, 

    Params = <15, 10, 10, 560>;

    Ops = {
      <1,1,0>,
      <2,1,1>,
      <3,1,2>,
      <4,1,3>,
     
      <5,2,0>,
      <6,2,1>,
      <7,2,2>,
      <8,2,3>,
      
      <9,3,0>,
      <10,3,1>,
      <11,3,2>,
      <12,3,3>,
      
      <13,4,0>,
      <14,4,1>,
      <15,4,2>,
      <16,4,3>,
      
      <17,5,0>,
      <18,5,1>,
      <19,5,2>,
      <20,5,3>,
      
      <21,6,0>,
      <22,6,1>,
      
      <23,7,0>,
      <24,7,1>,
      
      <25,8,0>,
      <26,8,1>,
      <27,8,2>,
      <28,8,3>,
      
      <29,9,0>,
      <30,9,1>,
      <31,9,2>,
      <32,9,3>,
      
      <33,10,0>,
      <34,10,1>,
      <35,10,2>,
      <36,10,3>,
      
      <37,11,0>,
      <38,11,1>,
      <39,11,2>,
      <40,11,3>,
     
      <41,12,0>,
      <42,12,1>,
      <43,12,2>,
      <44,12,3>,
      
      <45,13,0>,
      <46,13,1>,
      <47,13,2>,
      <48,13,3>,
     
      <49,14,0>,
      <50,14,1>,
      <51,14,2>,
      <52,14,3>,
      
      <53,15,0>,
      <54,15,1>,
      <55,15,2>,
      <56,15,3>
      
    };

    Modes = {

    //job 1
      <1,1,1,1>,
      <1,1,2,4>,
      <1,1,3,6>,
      <1,1,4,9>,
      <1,1,5,3>,
      <1,1,6,5>,
      <1,1,7,2>,
      <1,1,8,8>,
      <1,1,9,9>,
      <1,1,10,4>,
      
      <2,1,1,1>,
      <2,1,2,1>,
      <2,1,3,3>,
      <2,1,4,4>,
      <2,1,5,8>,
      <2,1,6,10>,
      <2,1,7,4>,
      <2,1,8,11>,
      <2,1,9,4>,
      <2,1,10,3>,
            
      <3,1,1,2>,
      <3,1,2,5>,
      <3,1,3,1>,
      <3,1,4,5>,
      <3,1,5,6>,
      <3,1,6,9>,
      <3,1,7,5>,
      <3,1,8,10>,
      <3,1,9,3>,
      <3,1,10,2>,
        
      <4,1,1,10>,
      <4,1,2,4>,
      <4,1,3,5>,
      <4,1,4,9>,
      <4,1,5,8>,
      <4,1,6,4>,
      <4,1,7,15>,
      <4,1,8,8>,
      <4,1,9,4>,
      <4,1,10,4>,
        
     //job 2
      <5,2,1,4>,
      <5,2,2,8>,
      <5,2,3,7>,
      <5,2,4,1>,
      <5,2,5,9>,
      <5,2,6,6>,
      <5,2,7,1>,
      <5,2,8,10>,
      <5,2,9,7>,
      <5,2,10,1>,
        
      <6,2,1,6>,
      <6,2,2,11>,
      <6,2,3,2>,
      <6,2,4,7>,
      <6,2,5,5>,
      <6,2,6,3>,
      <6,2,7,5>,
      <6,2,8,14>,
      <6,2,9,9>,
      <6,2,10,2>, 
            
      <7,2,1,8>,
      <7,2,2,5>,
      <7,2,3,8>,
      <7,2,4,9>,
      <7,2,5,4>,
      <7,2,6,3>,
      <7,2,7,5>,
      <7,2,8,3>,
      <7,2,9,8>,
      <7,2,10,1>,  

      <8,2,1,9>,
      <8,2,2,3>,
      <8,2,3,6>,
      <8,2,4,1>,
      <8,2,5,2>,
      <8,2,6,6>,
      <8,2,7,4>,
      <8,2,8,1>,
      <8,2,9,7>,
      <8,2,10,2>,    
         
      //job3
      <9,3,1,7>,
      <9,3,2,1>,
      <9,3,3,8>,
      <9,3,4,5>,
      <9,3,5,4>, 
      <9,3,6,9>,
      <9,3,7,1>,
      <9,3,8,2>, 
      <9,3,9,3>,
      <9,3,10,4>,
        
      <10,3,1,5>,
      <10,3,2,10>,
      <10,3,3,6>,
      <10,3,4,4>,
      <10,3,5,9>,
      <10,3,6,5>,
      <10,3,7,1>,
      <10,3,8,7>,
      <10,3,9,1>,
      <10,3,10,6>,

      <11,3,1,4>,
      <11,3,2,2>,
      <11,3,3,3>,
      <11,3,4,8>,
      <11,3,5,7>,
      <11,3,6,4>,
      <11,3,7,6>,
      <11,3,8,9>,
      <11,3,9,8>,
      <11,3,10,4>,
       
      <12,3,1,7>,
      <12,3,2,3>,
      <12,3,3,12>,
      <12,3,4,1>,
      <12,3,5,6>,
      <12,3,6,5>,
      <12,3,7,8>,
      <12,3,8,3>,
      <12,3,9,5>,
      <12,3,10,2>,
        
    //job 4
      <13,4,1,6>,
      <13,4,2,2>,
      <13,4,3,5>,
      <13,4,4,4>,
      <13,4,5,1>,
      <13,4,6,2>,
      <13,4,7,3>,
      <13,4,8,6>,
      <13,4,9,5>,
      <13,4,10,4>,
        
      <14,4,1,8>,
      <14,4,2,5>,
      <14,4,3,7>,
      <14,4,4,4>,
      <14,4,5,1>,
      <14,4,6,2>,
      <14,4,7,36>,
      <14,4,8,5>,
      <14,4,9,8>,
      <14,4,10,5>,
            
      <15,4,1,9>,
      <15,4,2,6>,
      <15,4,3,2>,
      <15,4,4,4>,
      <15,4,5,5>,
      <15,4,6,1>,
      <15,4,7,3>,
      <15,4,8,6>,
      <15,4,9,5>,
      <15,4,10,2>,
       
      <16,4,1,11>,
      <16,4,2,4>,
      <16,4,3,5>,
      <16,4,4,6>,
      <16,4,5,2>,
      <16,4,6,7>,
      <16,4,7,5>,
      <16,4,8,4>,
      <16,4,9,2>,
      <16,4,10,1>,
     
        
      //job 5
       
      <17,5,1,6>,
      <17,5,2,9>,
      <17,5,3,2>,
      <17,5,4,3>,
      <17,5,5,5>,
      <17,5,6,8>,
      <17,5,7,7>,
      <17,5,8,4>,
      <17,5,9,1>,
      <17,5,10,2>,

      <18,5,1,5>,
      <18,5,2,4>,
      <18,5,3,6>,
      <18,5,4,3>,
      <18,5,5,5>,
      <18,5,6,2>,
      <18,5,7,28>,
      <18,5,8,7>,
      <18,5,9,4>,
      <18,5,10,5>,
         
      <19,5,1,6>,
      <19,5,2,2>,
      <19,5,3,4>,
      <19,5,4,3>,
      <19,5,5,6>,
      <19,5,6,5>,
      <19,5,7,2>,
      <19,5,8,4>,
      <19,5,9,7>,
      <19,5,10,9>,
      
      <20,5,1,6>,
      <20,5,2,5>,
      <20,5,3,4>,
      <20,5,4,2>,
      <20,5,5,3>,
      <20,5,6,2>,
      <20,5,7,5>,
      <20,5,8,4>,
      <20,5,9,7>,
      <20,5,10,5>,
              
      //job 6
      <21,6,1,4>,
      <21,6,2,1>,
      <21,6,3,3>,
      <21,6,4,2>,
      <21,6,5,6>,
      <21,6,6,9>,
      <21,6,7,8>,
      <21,6,8,5>,
      <21,6,9,4>,
      <21,6,10,2>,
     
      <22,6,1,1>,
      <22,6,2,3>,
      <22,6,3,6>,
      <22,6,4,5>,
      <22,6,5,4>,
      <22,6,6,7>,
      <22,6,7,5>,
      <22,6,8,4>,
      <22,6,9,6>,
      <22,6,10,5>,
             
        //job 7
      <23,7,1,1>,
      <23,7,2,4>,
      <23,7,3,2>,
      <23,7,4,5>,
      <23,7,5,3>,
      <23,7,6,6>,
      <23,7,7,9>,
      <23,7,8,8>,
      <23,7,9,5>,
      <23,7,10,4>,

      <24,7,1,2>,
      <24,7,2,1>,
      <24,7,3,4>,
      <24,7,4,5>,
      <24,7,5,2>,
      <24,7,6,3>,
      <24,7,7,5>,
      <24,7,8,4>,
      <24,7,9,2>,
      <24,7,10,5>,
       
      //job 8
      <25,8,1,2>,
      <25,8,2,3>,
      <25,8,3,6>,
      <25,8,4,2>,
      <25,8,5,5>,
      <25,8,6,4>,
      <25,8,7,1>,
      <25,8,8,5>,
      <25,8,9,8>,
      <25,8,10,7>,
      
      <26,8,1,4>,
      <26,8,2,5>,
      <26,8,3,6>,
      <26,8,4,2>,
      <26,8,5,3>,
      <26,8,6,5>,
      <26,8,7,4>,
      <26,8,8,1>,
      <26,8,9,2>,
      <26,8,10,5>,
     
      <27,8,1,3>,
      <27,8,2,5>,
      <27,8,3,4>,
      <27,8,4,2>,
      <27,8,5,5>,
      <27,8,6,49>,
      <27,8,7,8>,
      <27,8,8,5>,
      <27,8,9,4>,
      <27,8,10,5>,
       
      <28,8,1,1>,
      <28,8,2,2>,
      <28,8,3,36>,
      <28,8,4,5>,
      <28,8,5,2>,
      <28,8,6,3>,
      <28,8,7,6>,
      <28,8,8,4>,
      <28,8,9,11>,
      <28,8,10,2>,
           
        //job 9
      <29,9,1,6>,
      <29,9,2,3>,
      <29,9,3,2>,
      <29,9,4,22>,
      <29,9,5,44>,
      <29,9,6,11>,
      <29,9,7,10>,
      <29,9,8,23>,
      <29,9,9,5>,
      <29,9,10,1>,
     
      <30,9,1,2>,
      <30,9,2,3>,
      <30,9,3,2>,
      <30,9,4,12>,
      <30,9,5,15>,
      <30,9,6,10>,
      <30,9,7,12>,
      <30,9,8,14>,
      <30,9,9,18>,
      <30,9,10,16>,
            
      <31,9,1,20>,
      <31,9,2,17>,
      <31,9,3,12>,
      <31,9,4,5>,
      <31,9,5,9>,
      <31,9,6,6>,
      <31,9,7,4>,
      <31,9,8,7>,
      <31,9,9,5>,
      <31,9,10,6>, 
      
      <32,9,1,9>,
      <32,9,2,8>,
      <32,9,3,7>,
      <32,9,4,4>,
      <32,9,5,5>,
      <32,9,6,8>,
      <32,9,7,7>,
      <32,9,8,4>,
      <32,9,9,56>,
      <32,9,10,2>, 
         
        //job 10
      <33,10,1,5>,
      <33,10,2,8>,
      <33,10,3,7>,
      <33,10,4,4>,
      <33,10,5,56>,
      <33,10,6,3>,
      <33,10,7,2>,
      <33,10,8,5>,
      <33,10,9,4>,
      <33,10,10,1>,
     
      <34,10,1,2>,
      <34,10,2,5>,
      <34,10,3,6>,
      <34,10,4,9>,
      <34,10,5,8>,
      <34,10,6,5>,
      <34,10,7,4>,
      <34,10,8,2>,
      <34,10,9,5>,
      <34,10,10,4>,
            
      <35,10,1,6>,
      <35,10,2,3>,
      <35,10,3,2>,
      <35,10,4,5>,
      <35,10,5,4>,
      <35,10,6,7>,
      <35,10,7,4>,
      <35,10,8,5>,
      <35,10,9,2>,
      <35,10,10,1>,
       
      <36,10,1,3>,
      <36,10,2,2>,
      <36,10,3,5>,
      <36,10,4,6>,
      <36,10,5,5>,
      <36,10,6,8>,
      <36,10,7,7>,
      <36,10,8,4>,
      <36,10,9,5>,
      <36,10,10,2>,
     
      //job 11
      <37,11,1,1>,
      <37,11,2,2>,
      <37,11,3,3>,
      <37,11,4,6>,
      <37,11,5,5>,
      <37,11,6,2>,
      <37,11,7,1>,
      <37,11,8,4>,
      <37,11,9,2>,
      <37,11,10,1>,
      
      <38,11,1,2>,
      <38,11,2,3>,
      <38,11,3,6>,
      <38,11,4,3>,
      <38,11,5,2>,
      <38,11,6,1>,
      <38,11,7,4>,
      <38,11,8,10>,
      <38,11,9,12>,
      <38,11,10,1>,
             
      <39,11,1,3>,
      <39,11,2,6>,
      <39,11,3,2>,
      <39,11,4,5>,
      <39,11,5,8>,
      <39,11,6,4>,
      <39,11,7,6>,
      <39,11,8,3>,
      <39,11,9,2>,
      <39,11,10,5>,
      
      <40,11,1,4>,
      <40,11,2,1>,
      <40,11,3,45>,
      <40,11,4,6>,
      <40,11,5,2>,
      <40,11,6,4>,
      <40,11,7,1>,
      <40,11,8,25>,
      <40,11,9,2>,
      <40,11,10,4>,
        
      //job 12
      <41,12,1,9>,
      <41,12,2,8>,
      <41,12,3,5>,
      <41,12,4,6>,
      <41,12,5,3>,
      <41,12,6,6>,
      <41,12,7,5>,
      <41,12,8,2>,
      <41,12,9,4>,
      <41,12,10,2>,
      
      <42,12,1,5>,
      <42,12,2,8>,
      <42,12,3,9>,
      <42,12,4,5>,
      <42,12,5,4>,
      <42,12,6,75>,
      <42,12,7,63>,
      <42,12,8,6>,
      <42,12,9,5>,
      <42,12,10,21>,
            
      <43,12,1,12>,
      <43,12,2,5>,
      <43,12,3,4>,
      <43,12,4,6>,
      <43,12,5,3>,
      <43,12,6,2>,
      <43,12,7,5>,
      <43,12,8,4>,
      <43,12,9,2>,
      <43,12,10,5>,
           
      <44,12,1,8>,
      <44,12,2,7>,
      <44,12,3,9>,
      <44,12,4,5>,
      <44,12,5,6>,
      <44,12,6,3>,
      <44,12,7,2>,
      <44,12,8,5>,
      <44,12,9,8>,
      <44,12,10,4>,
      
      //job 13
      <45,13,1,4>,
      <45,13,2,2>,
      <45,13,3,5>,
      <45,13,4,6>,
      <45,13,5,8>,
      <45,13,6,5>,
      <45,13,7,6>,
      <45,13,8,4>,
      <45,13,9,6>,
      <45,13,10,2>,
      
      <46,13,1,3>,
      <46,13,2,5>,
      <46,13,3,4>,
      <46,13,4,7>,
      <46,13,5,5>,
      <46,13,6,8>,
      <46,13,7,6>,
      <46,13,8,6>,
      <46,13,9,3>,
      <46,13,10,2>,
            
      <47,13,1,5>,
      <47,13,2,4>,
      <47,13,3,5>,
      <47,13,4,8>,
      <47,13,5,5>,
      <47,13,6,4>,
      <47,13,7,6>,
      <47,13,8,5>,
      <47,13,9,4>,
      <47,13,10,2>,
         
      <48,13,1,3>,
      <48,13,2,2>,
      <48,13,3,5>,
      <48,13,4,6>,
      <48,13,5,5>,
      <48,13,6,4>,
      <48,13,7,8>,
      <48,13,8,5>,
      <48,13,9,6>,
      <48,13,10,4>,
       
       //job 14
      <49,14,1,2>,
      <49,14,2,3>,
      <49,14,3,5>,
      <49,14,4,4>,
      <49,14,5,6>,
      <49,14,6,5>,
      <49,14,7,4>,
      <49,14,8,85>,
      <49,14,9,4>,
      <49,14,10,5>,
        
      <50,14,1,6>,
      <50,14,2,2>,
      <50,14,3,4>,
      <50,14,4,5>,
      <50,14,5,8>,
      <50,14,6,6>,
      <50,14,7,5>,
      <50,14,8,4>,
      <50,14,9,2>,
      <50,14,10,6>,
            
      <51,14,1,3>,
      <51,14,2,25>,
      <51,14,3,4>,
      <51,14,4,8>,
      <51,14,5,5>,
      <51,14,6,6>,
      <51,14,7,3>,
      <51,14,8,2>,
      <51,14,9,5>,
      <51,14,10,4>,
          
      <52,14,1,8>,
      <52,14,2,5>,
      <52,14,3,6>,
      <52,14,4,4>,
      <52,14,5,2>,
      <52,14,6,3>,
      <52,14,7,6>,
      <52,14,8,8>,
      <52,14,9,5>,
      <52,14,10,4>,
        
       //job 15
      <53,15,1,2>,
      <53,15,2,5>,
      <53,15,3,6>,
      <53,15,4,8>,
      <53,15,5,5>,
      <53,15,6,6>,
      <53,15,7,3>,
      <53,15,8,2>,
      <53,15,9,5>,
      <53,15,10,4>,
        
      <54,15,1,5>,
      <54,15,2,6>,
      <54,15,3,2>,
      <54,15,4,5>,
      <54,15,5,4>,
      <54,15,6,2>,
      <54,15,7,5>,
      <54,15,8,3>,
      <54,15,9,2>,
      <54,15,10,5>,
            
      <55,15,1,4>,
      <55,15,2,5>,
      <55,15,3,2>,
      <55,15,4,3>,
      <55,15,5,5>,
      <55,15,6,2>,
      <55,15,7,8>,
      <55,15,8,4>,
      <55,15,9,7>,
      <55,15,10,5>,
        
      <56,15,1,6>,
      <56,15,2,2>,
      <56,15,3,11>,
      <56,15,4,14>,
      <56,15,5,2>,
      <56,15,6,3>,
      <56,15,7,6>,
      <56,15,8,5>,
      <56,15,9,4>,
      <56,15,10,8>
    };

    doesn't work !

     


    #CPLEXOptimizers
    #DecisionOptimization