Decision Optimization

Decision Optimization

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

 View Only

Very simple docplex : logical constraints

  • 1.  Very simple docplex : logical constraints

    Posted Thu January 10, 2019 11:09 AM

    Hi,

     

    let's go on with the example from https://www.linkedin.com/pulse/what-optimization-how-can-help-you-do-more-less-zoo-buses-fleischer/

     

    Let's see how easy it is to use logical constraints in docplex

     

    (Nearly as easy as in OPL https://www.ibm.com/developerworks/community/forums/html/topic?id=1e764610-ffd4-4e25-9a5f-4b380f05df64&ps=25 )

    from docplex.mp.model import Model

    mdl = Model(name='buses')
    nbbus40 = mdl.integer_var(name='nbBus40')
    nbbus30 = mdl.integer_var(name='nbBus30')
    mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
    mdl.minimize(nbbus40*460 + nbbus30*360)

    mdl.solve()

    for v in mdl.iter_integer_vars():
        print(v," = ",v.solution_value)

    print()
    print("with the logical constraint")

    nbKindOfBuses = mdl.integer_var(name='nbKindOfBuses')
    mdl.add(nbKindOfBuses==(nbbus40>=1)+(nbbus30>=1))

    mdl.minimize(nbbus40*460 + nbbus30*360+(nbKindOfBuses-1)*(500))

    mdl.solve()

    for v in mdl.iter_integer_vars():
        print(v," = ",v.solution_value)

    gives

     

    nbBus40  =  6.0
    nbBus30  =  2.0

    with the logical constraint
    nbBus40  =  0
    nbBus30  =  10.0
    nbKindOfBuses  =  1.0

    and

    mdl.add(nbKindOfBuses==(nbbus40>=1)+(nbbus30>=1))

    is a logical constraint (Not a zoological one!)

    regards

     

     

     

     


    #CPLEXOptimizers
    #DecisionOptimization