Decision Optimization

Decision Optimization

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

 View Only

Very simple docplex : piecewise linear function

  • 1.  Very simple docplex : piecewise linear function

    Posted Fri March 15, 2019 10:23 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/

     

    but let s now deal with a new information : for a given bus size if we take more than 4 then we get a 20% discount

     

    This moves our function cost from linear to piecewise linear.

     

    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')

    #after 4 buses, additional buses of a given size are cheaper
    f=mdl.piecewise(0, [(0, 0),(4,4)], 0.8)

    mdl.minimize(f(nbbus40)*500 + f(nbbus30)*400)

    mdl.solve()

    mdl.export("c:\\buses.lp")

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

     

    which gives

     

    nbBus40  =  0
    nbBus30  =  10.0

    regards


    #CPLEXOptimizers
    #DecisionOptimization