linopy: Linear optimization with N-D labeled variables
linopy is an open-source python package that facilitates linear or mixed-integer optimisation with real world data. It builds a bridge between data analysis packages like xarray & pandas and linear problem solvers like cbc, gurobi (see the full list below). The project aims to make linear programming in python easy, highly-flexible and performant.
Main features
linopy is heavily based on xarray which allows for many flexible data-handling features:
Define (arrays of) contnuous or binary variables with coordinates, e.g. time, consumers, etc.
Apply arithmetic operations on the variables like adding, subtracting, multiplying with all the broadcasting potentials of xarray
Apply arithmetic operations on the linear expressions (combination of variables)
Group terms of a linear expression by coordinates
Get insight into the clear and transparent data model
Modify and delete assigned variables and constraints on the fly
Use lazy operations for large linear programs with dask
Choose from different commercial and non-commercial solvers
Fast import and export a linear model using xarray’s netcdf IO
Installation
So far linopy is available on the PyPI repository
pip install linopy
Supported solvers
linopy supports the following solvers
Note that these do have to be installed by the user separately.
License
Copyright 2021-2023 Fabian Hofmann
This package is published under MIT license.