Work is now continued in the Julia project PipeLayout.
This library (implemented in Python) provides tools to find a suitable layout and design for a flow network. The main motivation comes from gas pipeline networks, where a diameter is chosen for each segment. The friction establishes a nonlinear relationship between flow along edges and pressure at nodes. Using Steiner trees with variable positions of the Steiner nodes, a cost-minimal network can be found.
- utilities for networks and plane geometry
- network flow
- convex optimization to minimize transport given a topology
- wrapper for GeoSteiner program
- convex optimization to find junction location with minimum pipe cost
- enumeration of full Steiner tree topologies (with isomorphism check)
Many of these are only needed for specific features.
- GeoSteiner
- Gurobi (via Python interface)
All of my code is distributed with MIT License. GeoSteiner is only called as a subprocess. Gurobi offers an academic license.