## Optimus

Optimus is a library for Linear and Quadratic mathematical optimization written in Scala programming language.

## 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.

## Features

- 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.

- 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)

- Available solvers:

- Open source LpSolve can be used for LP and MIP.
- Open source oJSolver can be used for LP, QP and MIP.
- Proprietary solver Gurobi can be used for efficiently solving LP, QP, QCQP and MIP.
- Proprietary solver Mosek can be used for efficiently solving LP, QP, QCQP and MIP.

## Building

## Documentation

## Contributions

Contributions are welcome, for details see 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}
}
```