This documentation is still under construction. If you need help with JuMP, read the JuMP documentation instead. If you are writing a solver interface and need help with MOI, join the developer chatroom and ask away!

# MathOptInterface

# What is MathOptInterface?

MathOptInterface.jl (MOI) is an abstraction layer designed to provide a unified interface to mathematical optimization solvers so that users do not need to understand multiple solver-specific APIs.

This documentation is aimed at developers writing software interfaces to solvers and modeling languages using the MathOptInterface API. If you are a user interested in solving optimization problems, we encourage you instead to use MOI through a higher-level modeling interface like JuMP or Convex.jl.

## How the documentation is structured

Having a high-level overview of how this documentation is structured will help you know where to look for certain things.

- The
**Background**section contains articles on the motivation and theory behind MathOptInterface. Look here if you want to understand*why*, rather than*how*. - The
**Tutorials**section contains articles on how to use and implement the MathOptInteraface API. Look here if you want to write a model in MOI, or write an interface to a new solver. - The
**Manual**contains short code-snippets that explain how to use the MOI API. Look here for more details on particular areas of MOI. - The
**API Reference**contains a complete list of functions and types that comprise the MOI API. Look here is you want to know how to use (or implement) a particular function. - The
**Submodules**section contains stand-alone documentation for each of the submodules within MOI. These submodules are not required to interface a solver with MOI, but they make the job much easier.

## Citing MathOptInterface

A paper describing the design and features of MathOptInterface is available on arXiv.

If you find MathOptInterface useful in your work, we kindly request that you cite the following paper:

```
@misc{
legat2020mathoptinterface,
title = {MathOptInterface: a data structure for mathematical optimization problems},
author = {Beno{\^i}t Legat and Oscar Dowson and Joaquim Dias Garcia and Miles Lubin},
year = {2020},
eprint = {2002.03447},
archivePrefix = {arXiv},
primaryClass = {math.OC},
url = {https://arxiv.org/abs/2002.03447},
}
```