All Projects → lanl-ansi → MINLPLib.jl

lanl-ansi / MINLPLib.jl

Licence: other
A JuMP-based library of Non-Linear and Mixed-Integer Non-Linear Programs

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to MINLPLib.jl

Pajarito.jl
A solver for mixed-integer convex optimization
Stars: ✭ 98 (+226.67%)
Mutual labels:  nonlinear-optimization, mixed-integer-programming
opfunu
A collection of Benchmark functions for numerical optimization problems (https://opfunu.readthedocs.io)
Stars: ✭ 31 (+3.33%)
Mutual labels:  global-optimization
jaxfg
Factor graphs and nonlinear optimization for JAX
Stars: ✭ 124 (+313.33%)
Mutual labels:  nonlinear-optimization
dfogn
DFO-GN: Derivative-Free Optimization using Gauss-Newton
Stars: ✭ 20 (-33.33%)
Mutual labels:  nonlinear-optimization
LBFGS-Lite
LBFGS-Lite: A header-only L-BFGS unconstrained optimizer.
Stars: ✭ 98 (+226.67%)
Mutual labels:  nonlinear-optimization
OptimisationAlgorithms
Searching global optima with firefly algorithm and solving traveling salesmen problem with genetic algorithm
Stars: ✭ 20 (-33.33%)
Mutual labels:  global-optimization
pdfo
Powell's Derivative-Free Optimization solvers
Stars: ✭ 56 (+86.67%)
Mutual labels:  nonlinear-optimization
FLAME
FLAME: a library for atomistic modeling environments
Stars: ✭ 18 (-40%)
Mutual labels:  global-optimization
PyDE
Differential evolution global optimization in Python.
Stars: ✭ 28 (-6.67%)
Mutual labels:  global-optimization
Nonlinear-Optimization-Algorithms
MATLAB implementations of a variety of nonlinear programming algorithms.
Stars: ✭ 86 (+186.67%)
Mutual labels:  nonlinear-optimization
NMPC-DCLF-DCBF
A collection of work using nonlinear model predictive control (NMPC) with discrete-time control Lyapunov functions (CLFs) and control barrier functions (CBFs)
Stars: ✭ 38 (+26.67%)
Mutual labels:  nonlinear-optimization
articulated-pose
[CVPR 2020, Oral] Category-Level Articulated Object Pose Estimation
Stars: ✭ 85 (+183.33%)
Mutual labels:  nonlinear-optimization
EAGO.jl
A development environment for robust and global optimization
Stars: ✭ 106 (+253.33%)
Mutual labels:  global-optimization
car-racing
A toolkit for testing control and planning algorithm for car racing.
Stars: ✭ 30 (+0%)
Mutual labels:  nonlinear-optimization
Hyperopt.jl
Hyperparameter optimization in Julia.
Stars: ✭ 144 (+380%)
Mutual labels:  global-optimization
lbfgsb-gpu
An open source library for the GPU-implementation of L-BFGS-B algorithm
Stars: ✭ 70 (+133.33%)
Mutual labels:  nonlinear-optimization
pytorch
Improved LBFGS optimizer in PyTorch.
Stars: ✭ 16 (-46.67%)
Mutual labels:  nonlinear-optimization
cplex-scala
A scala library for IBM ILOG CPLEX
Stars: ✭ 20 (-33.33%)
Mutual labels:  mixed-integer-programming
CalibrationWizard
[ICCV'19] Calibration Wizard: A Guidance System for Camera Calibration Based on Modelling Geometric and Corner Uncertainty
Stars: ✭ 80 (+166.67%)
Mutual labels:  global-optimization
axxb calibration
A Comprehensive AX = XB Calibration Solvers in Matlab
Stars: ✭ 19 (-36.67%)
Mutual labels:  global-optimization

MINLPLib

STATUS: CI Documentation

MINLPLib.jl is an extensive collection of Mixed-Integer and Continuous Nonlinear Programming Instances in the native JuMP.jl format. Numerous instances in this library are based on the standard MINLPLib.org instances in addition to hundreds of global optimization instances which appear in the litearature. This library can be useful for:

  • Benchmarking the Julia-based MINLP solvers, like Alpine.jl and Juniper.jl, by performing rigorous numerical experiments

  • Viewing meta information of each instance to assist your analyses and experiments

Included Libraries

For more details of the libraries included in this package, please see documentation.

Installation

To install, at your Julia command prompt,

Pkg.clone("https://github.com/lanl-ansi/MINLPLib.jl.git")

Fetching a model

Fetch an instance by its libname/name just like the following,

using MINLPLib
m = fetch_model("minlp2/blend029")

or

using MINLPLib
m = fetch_model("minlp2", "blend029")

For special built-in model that requires additional inputs,

using MINLPLib
m = fetch_model("special", "multiKND", options=Dict(:K=>3, :N=>3, :D=>1))

The above script initializes an optimization JuMP model multiKND. The formulation is controlled with parameter :K, :N, and :D, which yields the following problem:

Max x[1] * x[2] * x[3] + x[3] * x[4] * x[5] + x[5] * x[6] * x[7]
Subject to
 x[1] + x[2] + x[3] <= 3
 x[3] + x[4] + x[5] <= 3
 x[5] + x[6] + x[7] <= 3
 0.1 <= x[i] <= 10 for all i in {1,2,..,6,7}

Viewing instance's meta info

To know a instance better, you can do the following to get a dictionary of meta info. Note that as we continue to develop and test. More verified attributes will be added to the meta.

julia> meta = MINLPLib.fetch_meta("minlp2", "blend029")
Dict{String,Any} with 18 entries:
  "NINTVARS"   => 0
  "NLINCONS"   => 202
  "OBJBOUND"   => nothing
  "NAME"       => "blend029"
  "OBJVAL"     => nothing
  "LIBRARY"    => "minlp2"
  "NCONS"      => 214
  "NVARS"      => 103
  "OBJTYPE"    => "linear"
  "NLOPERATOR" => Any["mul"]
  "LOAD"       => 1.7414
  "OBJSENSE"   => "Max"
  "NSDPCONS"   => 0
  "NNLCONS"    => 12
  "NBINVARS"   => 36
  "NQUADCONS"  => 0
  "NSOSCONS"   => 0

Customize your own instance library

Currently, MINLPLib.jl contains over 6000 instances. Experimenting with all of them can be computationally heavy and risky. For your research projects, the scope may be limited to a specific type of problems. Hence, it is necessary to construct you very own library for research experiments. Below, we write a small .jl script that will generate a user instance library (without actually copying the problem) called USERLib that collect all instances with exp function. The directory will be created with name instance/USERLib. Please see our PODLib designed for testing Alpine.jl solver. This customized library contains instances reference as well as full instances. Note that each instance can be drastically different with different formulations and implementations (peak into the library called special and you will see some examples). It is up to you to select and construct your own instance library for more exciting and convenient experiments.

using MINLPLib

# Collect target problem from these libraries
for lib in ["bcp", "global", "ibm", "inf", "minlp", "minlp2"]
    NAMES = MINLPLib.fetch_names(lib)   # Fetch a list of instance names
    for i in NAMES
        Meta = MINLPLib.fetch_meta(lib, i)  # Fetch instance meta
        isempty(Meta) && continue
        !haskey(Meta, "NLOPERATOR") && continue
        if occursin("exp", in Meta["NLOPERATOR"][1])
            MINLPLib.add_to_lib("USERLib", lib, i)  # Collect instance
        else
            continue
        end
    end
end
println(MINLPLib.fetch_names("USERLib"))
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].