Decision Optimization

Decision Optimization

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


#Analytics
#DecisionOptimization
#DecisionOptimization
 View Only

Very simple docplex : warmstart through mst file

  • 1.  Very simple docplex : warmstart through mst file

    Posted 03/22/19 12:29 PM

    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/

     

    Warmstart is essential and let's see how we can do that through files with docplex.

     

    First, let us see how to write a .mst file

    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)

    sol=mdl.solve()

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

    sol.export_as_mst(path="C:/", basename="file.mst")

    generates file.mst

    <?xml version = "1.0" standalone="yes"?>
    <?xml-stylesheet href="https://www.ilog.com/products/cplex/xmlv1.0/solution.xsl" type="text/xsl"?>

    <!-- This file has been generated by DOcplex version 2.4.61  -->
    <CPLEXSolution version="1.0">
     <header
       problemName="buses"
       objectiveValue="3480"
      />
     <variables>
      <variable name="nbBus40" index="0" value="6"/>
      <variable name="nbBus30" index="1" value="2"/>
     </variables>
    </CPLEXSolution>

     

    and then to warm start from there:

     

    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.get_cplex().MIP_starts.read("c:/file.mst")

    sol=mdl.solve(log_output=True)

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

    which will display

    1 of 1 MIP starts provided solutions.
    MIP start 'm1' defined initial solution with objective 3480.0000.

    regards

    PS:

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

     

     

     

     


    #CPLEXOptimizers
    #DecisionOptimization