linopy: Linear optimization with N-D labeled variables

linopy: Linear optimization with N-D labeled variables#

PyPI CI License

Welcome to Linopy! This Python library is designed to make linear programming easy, flexible, and performant. Whether you’re dealing with Linear, Integer, Mixed-Integer, or Quadratic Programming, Linopy is as a user-friendly interface to define variables and constraints. It serves as a bridge, connecting data analysis packages such like xarray & pandas with problem solvers.

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

  • Support of various solvers - Cbc - GLPK - HiGHS - MindOpt - Gurobi - Xpress - Cplex - MOSEK - COPT

Citing Linopy#

If you use Linopy in your research, please cite it as follows:

Hofmann, F., (2023). Linopy: Linear optimization with n-dimensional labeled variables. Journal of Open Source Software, 8(84), 4823, https://doi.org/10.21105/joss.04823

A BibTeX entry for LaTeX users is

@article{Hofmann2023, doi = {10.21105/joss.04823}, url = {https://doi.org/10.21105/joss.04823}, year = {2023}, publisher = {The Open Journal}, volume = {8}, number = {84}, pages = {4823}, author = {Fabian Hofmann}, title = {Linopy: Linear optimization with n-dimensional labeled variables}, journal = {Journal of Open Source Software} }

License#

Copyright 2021-2023 Fabian Hofmann

This package is published under MIT license.