Skip to content
  •  
  •  
  •  
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@
*.jl.*.cov
*.jl.mem
Manifest.toml
*.bib
2 changes: 1 addition & 1 deletion docs/src/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ Here is a to-do list, to help you add new problems:
- `src/Meta/problem_name.jl`
In both cases, the function must have the same name `problem_name` as the file.
* When submitting a problem, please pay particular attention to the documentation. We would like to gather as much information as possible on the provenance of problems, other problem sets where the problems are present, and general information on the problem.
The documentation should be added to the file in the `PureJuMP` folder.
The documentation should be added to the corresponding fields in the `Meta` folder.
* New problems can be scalable, see [ADNLPProblems/arglina.jl](https://github.com/JuliaSmoothOptimizers/OptimizationProblems.jl/blob/main/src/ADNLPProblems/arglina.jl) and [PureJuMP/arglina.jl](https://github.com/JuliaSmoothOptimizers/OptimizationProblems.jl/blob/main/src/PureJuMP/arglina.jl) for examples. In that case, the first keyword parameter should be the number of variables `n::Int` and have the default value `default_nvar` (constant predefined in the module). If your problem has restrictions on the number of variables, e.g., `n` should be odd, or `n` should have the form `4k + 3`, then, instead of throwing errors when the restrictions are not satisfied, you should instead use the number of variables to be as close to `n` as possible. For example, if you want `n` odd and `n = 100` is passed, you can internally convert to `n = 99`. If you want `n = 4k + 3`, and `n = 100` is passed, then compute `k = round(Int, (n - 3) / 4)` and update `n`.
* A first version of the `meta` can be generated using `generate_meta`. A `String` is returned that can be copy-pasted into the `Meta` folder, and then edited.

Expand Down
50 changes: 49 additions & 1 deletion docs/src/meta.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,52 @@ OptimizationProblems.get_lanczos1_nls_nequ()
To filter all NLS problems in the metadata DataFrame:
```@example 1
nls_problems = OptimizationProblems.meta[OptimizationProblems.meta.objtype .== :least_squares, :name]
```
```

### Test-set membership (`:lib`)

The `:lib` column records membership in named optimization test-set collections.
Each entry is a comma-separated list of `"Collection:ID"` pairs; an empty string
means the problem has no known test-set membership.

```@example 1
OptimizationProblems.hs1_meta[:lib] # "CUTEst:HS1, HS:1"
```

Known collections (keys of `OptimizationProblems.LIB_REFERENCES`):

| Key | Description |
|-----|-------------|
| `AMPGO` | Gavana's Global Optimization benchmark suite |
| `COPS` | COPS 3.0 collection (Dolan & Moré, 2004) |
| `CUTEst` | CUTEst testing environment (Gould et al., 2015) |
| `HS` | Hock & Schittkowski (1981), Vol. 187 |
| `HS2` | Schittkowski (1987), Vol. 282 |
| `Luksan` | Luksan, Matonoha & Vlček (2003) — Modified CUTE problems |
| `LuksanSparse` | Luksan, Matonoha & Vlček (2010) — Sparse test problems |
| `MGH` | Moré, Garbow & Hillstrom (1981) |
| `NIST` | NIST/ITL Statistical Reference Datasets |

To filter by collection, use Julia's `contains` function:

```@example 1
meta = OptimizationProblems.meta
cops_problems = meta[contains.(meta.lib, "COPS"), [:name, :lib]]
```

```@example 1
cutest_problems = meta[contains.(meta.lib, "CUTEst"), [:name, :lib]]
```

`OptimizationProblems.LIB_REFERENCES` provides the canonical BibTeX entry for
each collection, and [`export_bibtex`](@ref) automatically appends them when
`include_lib_refs = true` (the default).

## Problem'source information

The following code will create a .bib file regrouping all the BibTex citations.
```julia
using OptimizationProblems
export_bibtex()
```
Fields documenting the origin of the problem may be incomplete and any help is welcome.
20 changes: 20 additions & 0 deletions src/Meta/AMPGO02.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO02_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 2 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:2",
)
get_AMPGO02_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO02_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO03.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO03_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 3 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:3",
)
get_AMPGO03_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO03_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO04.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO04_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 4 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:4",
)
get_AMPGO04_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO04_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO05.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO05_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 5 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:5",
)
get_AMPGO05_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO05_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO06.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO06_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 6 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:6",
)
get_AMPGO06_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO06_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO07.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO07_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 7 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:7",
)
get_AMPGO07_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO07_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO08.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO08_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 8 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:8",
)
get_AMPGO08_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO08_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO09.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO09_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 9 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:9",
)
get_AMPGO09_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO09_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO10.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO10_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 10 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:10",
)
get_AMPGO10_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO10_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO11.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO11_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 11 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:11",
)
get_AMPGO11_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO11_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO12.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO12_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 12 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:12",
)
get_AMPGO12_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO12_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
20 changes: 20 additions & 0 deletions src/Meta/AMPGO13.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,26 @@ AMPGO13_meta = Dict(
:is_feasible => true,
:defined_everywhere => missing,
:origin => :unknown,
:url => "http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions",
:notes => raw"""
A one dimensional optimization problem
""",
:origin_notes => raw"""
Problem 13 in
http://infinity77.net/global_optimization/test_functions_1d.html#d-test-functions
Andrea Gavana
S. Goyette, Sherbrooke 2016/2017
""",
:reference => raw"""
@misc{GavanaGOTestSuite,
author = {Gavana, Andrea},
title = {Global Optimization Benchmarks},
year = {2013},
howpublished = {\url{http://infinity77.net/global_optimization/}},
note = {Collection of benchmark functions and algorithm comparisons for global optimization (including AMPGO)}
}
""",
:lib => "AMPGO:13",
)
get_AMPGO13_nvar(; n::Integer = default_nvar, kwargs...) = 1
get_AMPGO13_ncon(; n::Integer = default_nvar, kwargs...) = 0
Expand Down
Loading
Loading