Skip to main content

Inquiry Regarding Gurobi's Recent Improvements in Network Simplex Algorithm

Ongoing

Comments

3 comments

  • David Torres Sanchez
    • Gurobi Staff Gurobi Staff

    Hi Lizheng,

    We do not have any specific references regarding our implementation.

    There are, however, some recent papers on this topic where you can find details of state-of-the-art implementations (not just the network simplex but also other algorithms):

    • Kovács, P. (2015). Minimum-cost flow algorithms: an experimental evaluation. Optimization Methods and Software, 30(1), 94-127. Test suite, docs, source code.

    Cheers, 
    David

    0
  • OneCable OneCable
    • First Comment
    • First Question

    Hi David, 

    I have a follow-up to this. When it is stated that Gurobi implements the network simplex algorithm, does this mean that there is a C API which directly allows the user to input the nodes, arcs, lower/upper bounds on arcs, costs, and the supplies/demands at various nodes without explicitly formulating the network problem as a linear program?

    Or, does it mean that the user has to enter a traditional linear program with only at most one +1 and one -1 in a column and then Gurobi will "intelligently" recognize this as a network problem and solve it using the network simplex algorithm? That is, behind the scenes, Gurobi will create nodes (corresponding to constraints) and arcs (corresponding to columns) and then create a basis tree, pivot using an entering arc, find out the leaving arc, etc.

    I ask this for two reasons:

    (a) Going through the documentation, here, and your answer from here, it appears that the user has to indeed formulate it as a traditional linear program and request Gurobi to solve it by invoking the network simplex.

    (b) CPLEX offers a C API where the LP does not need to be formulated but instead the user can directly specify the arcs, costs, supplies, demands, etc. and invoke the network simplex. Please see here.

    Lastly, are there query/control callbacks available to the user to query/control the various steps of the network simplex iterations -- query the currently chosen entering arc, current basis tree, currently chosen exitting arc, etc.

    Thanks.

    0
  • David Torres Sanchez
    • Gurobi Staff Gurobi Staff

    Hi,

    Or, does it mean that the user has to enter a traditional linear program with only at most one +1 and one -1 in a column and then Gurobi will "intelligently" recognize this as a network problem and solve it using the network simplex algorithm? That is, behind the scenes, Gurobi will create nodes (corresponding to constraints) and arcs (corresponding to columns) and then create a basis tree, pivot using an entering arc, find out the leaving arc, etc.

    This option. We automatically detect the structure, additionally, you will have to set the parameter NetworkAlg=1 to enable network simplex.

    (b) CPLEX offers a C API where the LP does not need to be formulated but instead the user can directly specify the arcs, costs, supplies, demands, etc. and invoke the network simplex. Please see here.

    Would this be interesting for you? I can create a feature request, similarly for the callback options as these are not available. I'm not sure this will be implemented, if you want this level of customisation I suggest you look into open source network simplex implementations.

    Cheers, 
    David

     

    1

Please sign in to leave a comment.