Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only
  • 1.  Initializing a tuple containing an array in ILOG script for OPL

    Posted 01/28/20 08:02 AM

    Originally posted by: Marc Habib


    How can I initialize a set of tuples containing an array in script:

    tuple Tuple2 {
      int ar[1..2];
    }

    Tuple2 tuple2;
    {Tuple2} tuple2Set;

    execute {
    // error too many arguments:
      tuple2Set.add(1,2);

      var ar = new Array();

      ar[0] = 0;
      ar[1] = 1;

      // crash:
      tuple2Set.add(ar);
    }


    Thanks


    #DecisionOptimization
    #OPLusingCPOptimizer


  • 2.  Re: Initializing a tuple containing an array in ILOG script for OPL

    Posted 01/28/20 11:38 AM

    Originally posted by: ChrisBr


    Hello Marc,

    To initialize arrays in tuples by script is not allowed.
    See Limitations: Value Assignments in Script Statements.
    You need a .dat file for such initialization.

    I hope this helps,

    Chris.

     


    #DecisionOptimization
    #OPLusingCPOptimizer


  • 3.  Re: Initializing a tuple containing an array in ILOG script for OPL

    Posted 01/28/20 12:17 PM

    Originally posted by: Marc Habib


    Thanks for your answer.

    Is this a safe solution ?

    tuple Tuple2 {
      int ar[1..2];
    }

    Tuple2 tuple2;
    {Tuple2} set2 = {};

    execute {
        tuple2.ar[1] = 1;
        tuple2.ar[2] = 2;
        set2.add(tuple2.ar);
    }


    #DecisionOptimization
    #OPLusingCPOptimizer


  • 4.  Re: Initializing a tuple containing an array in ILOG script for OPL

    Posted 01/31/20 06:41 AM

    Yes, this is safe. Things are ok as long as you use an OPL array to initialize the tuple (and not a JavaScript array). This is safe as well:

    range R = 1..2;
    tuple T {
      int a[R];
    }
    {T} tuples = ...;
    int dummy[R];
    execute {
      dummy[1] = 1;
      dummy[2] = 2;
      tuples.add(dummy);  dummy[1] = 3;
      dummy[2] = 4;
      tuples.add(dummy);
    }main {
      writeln(thisOplModel.tuples);
    }
    

    #DecisionOptimization
    #OPLusingCPOptimizer