Skip to content

Unit and Integration Tests for JuMP NLP and MINLP solvers

License

Notifications You must be signed in to change notification settings

jump-dev/MINLPTests.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MINLPTests.jl

This is a collection of JuMP models for testing nonlinear/polynomial solvers with and without discrete variables in JuMP.

This version is compatible with the current release of JuMP (using MathOptInterface).

Build Status

Test Design Guidelines

  • The tests are organized into broad categories based on the scope of typical (e.g. continuous, convex functions, polynomial, ...)
  • Unit tests for JuMP integration testing should be "easy" models. For example, it should be possible for a non-global solver to find the global solution in these tests
  • Mathematical property tests can be more difficult but should strive to be as simple as possible

Test Naming Conventions

Directories:

  • nlp - nonconvex NLP models
  • nlp-cvx - convex NLP models
  • nlp-mi - nonconvex MINLP models
  • nlp-mi-cvx - convex MINLP models
  • poly - nonconvex polynomial models
  • poly-cvx - convex polynomial models
  • poly-mi - nonconvex polynomial models
  • poly-mi-cvx - convex polynomial models

File Names:

  • 0xx_yyz - unit tests
  • 1xx_yyz - 2D mathematical properties
  • 2xx_yyz - 3D mathematical properties
  • 5xx_yyz - nD mathematical properties
  • 9xx_yyz - integration tests

z indicates a variant of a base problem

Test Coverage Overview

NLP

  • non-linear model without stating values (nlp/003_010)

  • non-linear model with stating values (nlp/002_010)

  • non-linear model partial stating values (nlp/001_010)

  • non-linear objective only (nlp/001_010)

  • non-linear constraints only (nlp/002_010)

  • non-linear objective and constraints (nlp/003_010)

  • non-linear objective + linear constraints (nlp/004_010)

  • non-linear objective + linear constraints (as NL) (nlp/004_011)

  • non-linear objective + quard constraints (nlp/004_010)

  • non-linear objective + quard constraints (as NL) (nlp/004_011)

  • minimization objective (nlp/001_010)

  • maximization objective (nlp/003_010)

  • linear objective + non-linear constraints (nlp/003_012)

  • linear objective (as NL) + non-linear constraints (nlp/003_013)

  • quad objective + non-linear constraints (nlp/003_014)

  • quad objective (as NL) + non-linear constraints (nlp/003_015)

  • non-linear objective (with offset const) + non-linear constraints (nlp/003_011)

  • objective (with offset const) + non-linear constraints (nlp/003_016)

  • status infeasible (nlp/007_010)

  • get duals (nlp/008_010, 008_011)

  • non-linear functions

    • * (nlp/004_010)
    • / (nlp/005_010)
    • ^ (nlp/001_010)
    • sqrt (nlp/003_010)
    • abs (nlp/004_010)
    • exp (nlp/001_010)
    • log (nlp/002_010)
    • sin (nlp/003_010)
    • cos (nlp/001_010)
    • tan (nlp/004_010)
    • user defined (nlp/006_010)

MINLP

  • non-linear integer variable (nlp-mi/001_010)

  • non-linear binary variable (nlp-mi/002_010)

  • mix of continuous and discrete variables (nlp-mi/001_010)

  • non-linear model without stating values (nlp-mi/003_010)

  • non-linear model with stating values (nlp-mi/002_010)

  • non-linear model partial stating values (nlp-mi/001_010)

  • non-linear objective only (nlp-mi/001_010)

  • non-linear constraints only (nlp-mi/002_010)

  • non-linear objective and constraints (nlp-mi/003_010)

  • non-linear objective + linear constraints (nlp-mi/004_010)

  • non-linear objective + linear constraints (as NL) (nlp-mi/004_011)

  • non-linear objective + quard constraints (nlp-mi/004_010)

  • non-linear objective + quard constraints (as NL) (nlp-mi/004_011)

  • minimization objective (nlp-mi/001_010)

  • maximization objective (nlp-mi/003_010)

  • linear objective + non-linear constraints (nlp-mi/003_012)

  • linear objective (as NL) + non-linear constraints (nlp-mi/003_013)

  • quad objective + non-linear constraints (nlp-mi/003_014)

  • quad objective (as NL) + non-linear constraints (nlp-mi/003_015)

  • non-linear objective (with offset const) + non-linear constraints (nlp-mi/003_011)

  • objective (with offset const) + non-linear constraints (nlp-mi/003_016)

  • status infeasible (nlp-mi/007_010, nlp-mi/070_020)

  • non-linear functions

    • * (nlp-mi/004_010)
    • / (nlp-mi/005_010)
    • ^ (nlp-mi/001_010)
    • sqrt (nlp-mi/003_010)
    • abs (nlp-mi/004_010)
    • exp (nlp-mi/001_010)
    • log (nlp-mi/002_010)
    • sin (nlp-mi/003_010)
    • cos (nlp-mi/001_010)
    • tan (nlp-mi/004_010)
    • user defined (nlp-mi/006_010)

Untested Julia Functions

A complete list is available here

  • roots
    • cbrt
    • hypot
  • exponentials
    • log2
    • log10
    • exp2
    • exp10
  • transcendentals
    • sincos
    • sind, cosd, tand
    • sinh, cosh, tanh
    • asin, acos, atan (x and x,y)
    • sec, csc, cot
    • asec, acsc, acot
    • sech, csch, coth
    • asinh, acosh, atanh
    • asech, acsch, acoth
  • discontinuous
    • rem
    • mod
    • ceil
    • floor
    • min
    • max