Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  I had a internal error when I write these

    Posted 07/24/11 11:39 PM

    Originally posted by: chinaboy


    using CP;

    int nbJobs = ...;
    int nbMchs = ...;

    range Jobs = 0..nbJobs;
    range Mchs = 0..nbMchs-1;

    int arrivalTimehttp://0..nbJobs=...;
    int OpDurationsj in Jobsm in Mchs = ...;

    dvar int s j in Jobsm in Mchs;
    dvar int cj in Jobsm in Mchs;
    dexpr float gj in Jobsk in Jobsm in Mchs= sj in Jobsm in Mchs> sk in Jobsm in Mchs?1:0;

    execute {
    cp.param.FailLimit = 100000;
    }

    minimize max(j in Jobs, m in Mchs) c[j][m];
    subject to {

    forall (j in Jobs,m in Mchs)
    s[j][m]>=arrivalTime[j];
    forall (j,k in Jobs:j!=k,m in Mchs)
    sj in Jobsm in Mchs>=(sk in Jobsm in Mchs+OpDurations[k][m])*gj in Jobsk in Jobsm in Mchs;
    forall (j,k in Jobs:j!=k,m in Mchs)
    sk in Jobsm in Mchs>=(sj in Jobsm in Mchs+OpDurations[j][m])*gj in Jobsk in Jobsm in Mchs;
    forall (j in Jobs,m in Mchs)
    c[j][m]==s[j][m]+OpDurations[j][m];

    I think the problem comes from the underline sentence,
    #CPLEXOptimizers
    #DecisionOptimization


  • 2.  Re: I had a internal error when I write these

    Posted 07/24/11 11:43 PM

    Originally posted by: chinaboy


    and what I want to do is to make "gj in Jobsk in Jobsm in Mchs=1" if"sj in Jobsm in Mchs> sk in Jobsm in Mchs"and "gj in Jobsk in Jobsm in Mchs=0"else,then using the value of "gj in Jobsk in Jobsm in Mchs"in the subject to constraint of the underline sentence.
    #CPLEXOptimizers
    #DecisionOptimization


  • 3.  Re: I had a internal error when I write these

    Posted 07/25/11 03:30 AM

    Originally posted by: SystemAdmin


    This is an OPL question. Please post in on the OPL Forum.
    #CPLEXOptimizers
    #DecisionOptimization


  • 4.  Re: I had a internal error when I write these

    Posted 07/25/11 07:27 PM

    Originally posted by: John Cui


    Your program should be:
    using CP;
     
    int nbJobs = ...;
    int nbMchs = ...;
     
    range Jobs = 0..nbJobs;
    range Mchs = 0..nbMchs-1;
     
    int arrivalTime[0..nbJobs]=...; 
    int OpDurations[j in Jobs][m in Mchs] = ...;
     
    dvar int s [j in Jobs][m in Mchs]; 
    dvar int c[j in Jobs][m in Mchs]; 
    dexpr float g[j in Jobs][k in Jobs][m in Mchs]= s[j][m]> s[k][m]?1:0;
     
    execute {
       cp.param.FailLimit = 100000;
    }
     
    minimize max(j in Jobs, m in Mchs) c[j][m];
    subject to {
      
      forall (j in Jobs,m in Mchs)
        s[j][m]>=arrivalTime[j];
      forall (j,k in Jobs:j!=k,m in Mchs)
        s[j][m]>=(s[k][m]+OpDurations[k][m])*g[j][k][m];
      forall (j,k in Jobs:j!=k,m in Mchs)
        s[k][m]>=(s[j][m]+OpDurations[j][m])*g[j][k][m];   
      forall (j in Jobs,m in Mchs)
      c[j][m]==s[j][m]+OpDurations[j][m];
      
    }
    

    You can not use "j in Jobs", etc in s[j][m]>=(s[k][m]+OpDurations[k][m])*g[j][k][m];

    John Cui
    #CPLEXOptimizers
    #DecisionOptimization