Decision Optimization

 View Only

Very simple docplex : decimal decision variables with CPOptimizer

  • 1.  Very simple docplex : decimal decision variables with CPOptimizer

    Posted Tue April 14, 2020 05:04 AM

    Hi,

    let 's start from https://www.ibm.com/developerworks/community/forums/html/topic?id=9748cb9c-fa58-471a-8f9b-fba546df609b&ps=25

     

    In Constraint Programming decision variables have to be integer but sometimes we need more than this.

    Let's see how we can handle through decision expressions.

    Suppose in the bus example we want to book not only whole buses but also percentage of buses.

    Then we can write

     

    from docplex.cp.model import CpoModel

    mdl = CpoModel(name='buses')

    #now suppose we can book a % of buses not only complete buses

    scale=100
    scalenbbus40 = mdl.integer_var(0,1000,name='scalenbBus40')
    scalenbbus30 = mdl.integer_var(0,1000,name='scalenbBus30')

    nbbus40= scalenbbus40 / scale
    nbbus30= scalenbbus30 / scale

     

    mdl.add(nbbus40*40 + nbbus30*30 >= 310)
    mdl.minimize(nbbus40*500 + nbbus30*400)

    msol=mdl.solve()

    print(msol[scalenbbus40]/scale," buses 40 seats")
    print(msol[scalenbbus30]/scale," buses 30 seats")

    which gives

    7.75  buses 40 seats
    0.0  buses 30 seats

    NB:

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

     


    #CPOptimizer
    #DecisionOptimization