A Julia/JuMP Package for Petroleum Network Optimization
Author lanl-ansi
2 Stars
Updated Last
3 Years Ago
Started In
March 2020


PetroleumModels logo


Dev: Build Status codecov

PetroleumModels.jl is a Julia/JuMP package for Steady-State Petroleum (petroleum products) Network Optimization. It is designed to optimize the operations of existing single liquid commodity pipeline systems subject to physical flow and pump engineering constraints. The code is engineered to decouple problem specifications from the network formulations. This enables the definition of a variety of liquid network formulations and their comparison on common problem specifications.

Core Problem Specifications

  • Optimal Petro Flow (opf)

Core Network Formulations

  • LP

Basic Usage

Once PetroleumModels is installed, a optimizer is installed, and a network data file has been acquired, a Petro Flow can be executed with,

using PetroleumModels
using <solver_package>

run_opf("foo.m", FooPetroleumModel, FooSolver())

Similarly, an expansion optimizer can be executed with,

run_ne("foo.m", FooPetroleumModel, FooSolver())

where FooPetroleumModel is the implementation of the mathematical program of the Petroleum equations you plan to use (i.e. ) and FooSolver is the JuMP optimizer you want to use to solve the optimization problem (i.e. IpoptSolver).


This code has been developed as part of the Advanced Network Science Initiative at Los Alamos National Laboratory. The primary developer is Elena Khlebnikova, with significant contributions from Kaarthik Sundar and Russell Bent.


This code is provided under a BSD license as part of the Multi-Infrastructure Control and Optimization Toolkit (MICOT) project, LA-CC-13-108.

Used By Packages

No packages found.