Decision Optimization

Decision Optimization

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

 View Only

Very simple OPL : tuple set and asserts

  • 1.  Very simple OPL : tuple set and asserts

    Posted Wed May 23, 2018 02:48 AM

    Hi;

    let us go on with https://www.ibm.com/developerworks/community/forums/html/topic?id=9379c9ae-e185-40b4-b31b-c5090d64bf6f&ps=25

    and let us try to be even more generic.

    The challenge is again to model https://www.linkedin.com/pulse/what-optimization-how-can-help-you-do-more-less-zoo-buses-fleischer/

    Let us replace arrays by tuple sets so on top of cost we could add other properties easily.

    .mod

    int nbKids=...;

    // a tuple is like a struct in C, a class in C++ or a record in Pascal
    tuple bus
    {
    key int nbSeats;
    float cost;
    }

    // This is a tuple set
    {bus} buses=...;

    // asserts help make sure data is fine
    assert forall(b in buses) b.nbSeats>0;
    assert forall(b in buses) b.cost>0;

    // decision variable array
    dvar int+ nbBus[buses];

    // objective
    minimize
     sum(b in buses) b.cost*nbBus[b];
     
    // constraints
    subject to
    {
     sum(b in buses) b.nbSeats*nbBus[b]>=nbKids;
    }

    .dat

    nbKids=300;
    buses={<40,500>,<30,400>};

    which gives

    nbBus = [6
             2];

    regards

    PS: Many other very simple examples at https://www.linkedin.com/pulse/making-decision-optimization-simple-alex-fleischer/


    #DecisionOptimization
    #OPLusingCPLEXOptimizer