Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vagmcs/optimus
Optimus is a mathematical programming library for Scala.
https://github.com/vagmcs/optimus
algebra integer-programming linear-programming optimization quadratic-programming scala
Last synced: 2 days ago
JSON representation
Optimus is a mathematical programming library for Scala.
- Host: GitHub
- URL: https://github.com/vagmcs/optimus
- Owner: vagmcs
- License: lgpl-3.0
- Created: 2014-12-23T12:23:36.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-12-02T16:41:19.000Z (25 days ago)
- Last Synced: 2024-12-25T10:04:22.570Z (2 days ago)
- Topics: algebra, integer-programming, linear-programming, optimization, quadratic-programming, scala
- Language: Scala
- Homepage:
- Size: 506 KB
- Stars: 141
- Watchers: 8
- Forks: 28
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
## Optimus
[![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0)
![Optimus workflow](https://github.com/vagmcs/Optimus/actions/workflows/ci.yaml/badge.svg)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.github.vagmcs/optimus_2.13/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.github.vagmcs/optimus_2.13)
[![javadoc](https://javadoc.io/badge2/com.github.vagmcs/optimus_2.13/javadoc.svg)](https://javadoc.io/doc/com.github.vagmcs/optimus_2.13)
![GitHub issues](https://img.shields.io/github/issues-raw/vagmcs/Optimus)
[![Conventional Commits](https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg)](https://conventionalcommits.org)Optimus is a library for Linear and Quadratic mathematical optimization written in [Scala programming language](http://scala-lang.org).
## License
This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions; See the [GNU Lesser General Public License v3 for more details](http://www.gnu.org/licenses/lgpl-3.0.en.html).
## Features
1. High level mathematical modeling in Scala using algebraic expressions
* Linear and quadratic objective and constraint expressions.
* Higher order expressions cannot be defined or handled by the solvers yet.
* Addition, subtraction and multiplication operations can be performed on expressions.
* Expression simplification produces the simpler form of the expression.
2. Supports various optimization settings by using existing mathematical programming solvers
* Linear programming (LP)
* Quadratic programming (QP)
* Quadratic constraint quadratic programming (QCQP)
* Mixed integer programming (MIP)
3. Available solvers:
* Open source [LpSolve](http://sourceforge.net/projects/lpsolve/) can be used for LP and MIP.
* Open source [oJSolver](http://ojalgo.org/) can be used for LP, QP and MIP.
* Proprietary solver [Gurobi 12](http://www.gurobi.com/) can be used for efficiently solving LP, QP, QCQP and MIP.
* Proprietary solver [Mosek 9](https://www.mosek.com/) can be used for efficiently solving LP, QP, QCQP and MIP.## How to get Optimus
Optimus is published to Maven Central for Scala 2.12, 2.13 and 3.3.4!
Add the following dependencies to your SBT build file in order to get started:
```scala
libraryDependencies ++= Seq(
"com.github.vagmcs" %% "optimus" % "3.4.5",
"com.github.vagmcs" %% "optimus-solver-oj" % "3.4.5",
"com.github.vagmcs" %% "optimus-solver-lp" % "3.4.5"
)
```Optionally, you can also add the following extra dependencies for proprietary solvers:
```scala
"com.github.vagmcs" %% "optimus-solver-gurobi" % "3.4.5"
"com.github.vagmcs" %% "optimus-solver-mosek" % "3.4.5"
```For more information see [Building and Linking](docs/building_and_linking.md)
## Documentation
- [Linear Programming](docs/linear.md)
- [Quadratic Programming](docs/quadratic.md)
- [Mixed Integer Programming](docs/mixed_integer.md)
- [Model Specification](docs/model_spec.md)## Contributions
Contributions are welcome, for details see [CONTRIBUTING.md](CONTRIBUTING.md).
## Reference for Scientific Publications
Please use the following BibTeX entry to cite Optimus in your papers:
```
@misc{Optimus,
author = {Evangelos Michelioudakis and Anastasios Skarlatidis},
title = {Optimus: an open-source mathematical optimization library},
url = {https://github.com/vagmcs/Optimus}
}
```