An open API service indexing awesome lists of open source software.

https://github.com/jump-dev/baron.jl

A Julia interface to the BARON mixed-integer nonlinear programming solver
https://github.com/jump-dev/baron.jl

julia jump-jl mixed-integer-programming nonlinear-programming

Last synced: 6 months ago
JSON representation

A Julia interface to the BARON mixed-integer nonlinear programming solver

Awesome Lists containing this project

README

          

# BARON.jl

[![Build Status](https://github.com/jump-dev/BARON.jl/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/jump-dev/BARON.jl/actions?query=workflow%3ACI)
[![codecov](https://codecov.io/gh/jump-dev/BARON.jl/branch/master/graph/badge.svg)](https://codecov.io/gh/jump-dev/BARON.jl)

[BARON.jl](https://github.com/jump-dev/BARON.jl) is a wrapper for
[BARON by The Optimization Firm](http://minlp.com/baron).

## Affiliation

This wrapper is maintained by the JuMP community and is not officially supported
by The Optimization Firm.

## Getting help

If you need help, please ask a question on the [JuMP community forum](https://jump.dev/forum).

If you have a reproducible example of a bug, please [open a GitHub issue](https://github.com/jump-dev/BARON.jl/issues/new).

## License

`BARON.jl` is licensed under the [MIT License](https://github.com/jump-dev/BARON.jl/blob/master/LICENSE.md).

The underlying solver is a closed-source commercial product for which you must
obtain a license from [The Optimization Firm](http://minlp.com), although a
small trial version is available for free.

## Installation

First, download a copy of [the BARON solver](http://minlp.com/) and unpack the
executable in a location of your choosing.

Once installed, set the `BARON_EXEC` environment variable pointing to the BARON
executable (full path, including file name as it differs across platforms), and
run `Pkg.add("BARON")`. For example:

```julia
ENV["BARON_EXEC"] = "/path/to/baron.exe"
using Pkg
Pkg.add("BARON")
```

The `baronlice.txt` license file should be placed in the same directory as the
BARON executable, or in your current working directory.

## Use with JuMP

```julia
using JuMP, BARON
model = Model(BARON.Optimizer)
set_attribute(m, "PrLevel", 1)
```

## MathOptInterface API

The BARON optimizer supports the following constraints and attributes.

List of supported objective functions:

* [`MOI.ObjectiveFunction{MOI.ScalarAffineFunction{Float64}}`](@ref)
* [`MOI.ObjectiveFunction{MOI.ScalarQuadraticFunction{Float64}}`](@ref)
* [`MOI.ObjectiveFunction{MOI.ScalarNonlinearFunction}`](@ref)

List of supported variable types:

* [`MOI.Reals`](@ref)

List of supported constraint types:

* [`MOI.ScalarAffineFunction{Float64}`](@ref) in [`MOI.EqualTo{Float64}`](@ref)
* [`MOI.ScalarAffineFunction{Float64}`](@ref) in [`MOI.GreaterThan{Float64}`](@ref)
* [`MOI.ScalarAffineFunction{Float64}`](@ref) in [`MOI.Interval{Float64}`](@ref)
* [`MOI.ScalarAffineFunction{Float64}`](@ref) in [`MOI.LessThan{Float64}`](@ref)
* [`MOI.ScalarQuadraticFunction{Float64}`](@ref) in [`MOI.EqualTo{Float64}`](@ref)
* [`MOI.ScalarQuadraticFunction{Float64}`](@ref) in [`MOI.GreaterThan{Float64}`](@ref)
* [`MOI.ScalarQuadraticFunction{Float64}`](@ref) in [`MOI.Interval{Float64}`](@ref)
* [`MOI.ScalarQuadraticFunction{Float64}`](@ref) in [`MOI.LessThan{Float64}`](@ref)
* [`MOI.ScalarNonlinearFunction`](@ref) in [`MOI.EqualTo{Float64}`](@ref)
* [`MOI.ScalarNonlinearFunction`](@ref) in [`MOI.GreaterThan{Float64}`](@ref)
* [`MOI.ScalarNonlinearFunction`](@ref) in [`MOI.Interval{Float64}`](@ref)
* [`MOI.ScalarNonlinearFunction`](@ref) in [`MOI.LessThan{Float64}`](@ref)
* [`MOI.VariableIndex`](@ref) in [`MOI.EqualTo{Float64}`](@ref)
* [`MOI.VariableIndex`](@ref) in [`MOI.GreaterThan{Float64}`](@ref)
* [`MOI.VariableIndex`](@ref) in [`MOI.Integer`](@ref)
* [`MOI.VariableIndex`](@ref) in [`MOI.Interval{Float64}`](@ref)
* [`MOI.VariableIndex`](@ref) in [`MOI.LessThan{Float64}`](@ref)
* [`MOI.VariableIndex`](@ref) in [`MOI.ZeroOne`](@ref)

List of supported model attributes:

* [`MOI.NLPBlock()`](@ref)
* [`MOI.ObjectiveSense()`](@ref)