Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only

Very simple docplex : use a function in the objective

  • 1.  Very simple docplex : use a function in the objective

    Posted 01/08/19 10:45 AM

    Hi,

     

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

     

    We can use a Python function to compute the objective (symbolic computation with variable object) and that function can also be used alone or within a constraint:

     

    from docplex.mp.model import Model

    def compute_cost(nbBus40,nbBus30):
       return 500.0*nbBus40+400.0*nbBus30;

    def compute_cost2(nbBus40,nbBus30):
       return 500*nbBus40+300*nbBus30;

    print("naive way without optimization : 8 buses 40 seats")
    print("cost = ",compute_cost(8,0))
    print()

    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(compute_cost(nbbus40,nbbus30))

    print("Option 1")
                 
    mdl.solve()

    for v in mdl.iter_integer_vars():
        print(v," = ",v.solution_value)
        
    print("cost = ",compute_cost(nbbus40.solution_value,nbbus30.solution_value))
        

    mdl.minimize(compute_cost2(nbbus40,nbbus30))

    print()
    print("Option 2")
                 
    mdl.solve()

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

    print("cost = ",compute_cost2(nbbus40.solution_value,nbbus30.solution_value))

     

     

    gives

     

    naive way without optimization : 8 buses 40 seats
    cost =  4000.0

    Option 1
    nbBus40  =  6.0
    nbBus30  =  2.0
    cost =  3800.0

    Option 2
    nbBus40  =  0
    nbBus30  =  10.0
    cost =  3000.0

    regards


    #CPLEXOptimizers
    #DecisionOptimization