linopy: Linear optimization with N-D labeled variables#
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.