ArtificialLandscapes is a pure-Julia collection of well-known optimization test problems. It is designed to be fast by avoiding non-Julia libraries and using manually-coded derivatives. Combined with usual tricks like memory preallocation, type stability, and minimal abstraction, gradients can often be evaluated orders of magnitude faster than in similar packages.
This project is in its infancy. At the moment, only starting points, objective functions and gradients are provided; no Hessian yet. Also, only unconstrained problems have been added so far.
To install:
] add ArtificialLandscapesFunctions stored in the dictionary landscapes generate problems as @NamedTuple. To see the full list of problems:
using ArtificialLandscapes
keys(landscapes)All problems provide a starting point, objective and an in-place gradient function. To generate a problem:
x0, obj, grad! = landscapes["LUKSAN11LS"]()Solving using Optim:
using Optim
optimize(obj, grad!, x0, Optim.Options(iterations = 10000))The problems can be generated with varying precisions, and sometimes varying specifications:
x0, obj, grad! = landscapes["Extended Powell"](;n = 100, T = Float16)To learn more about a problem and its available keyword arguments, it must be extracted from the dictionary.
p = landscapes["LUKSAN11LS"]
? pProblems should as faithful as possible to their original versions. A notable exception are those from the CUTEst library. Since they have become a widely accepted standard, every effort is made to match the outputs of CUTEst.jl, even in the rare occasions when they deviate from the source problem.
OptimTestProblems.jl, OptimizationTestFunctions.jl, BenchmarkFunctions.jl, CUTEst.jl, OptimizationProblems.jl, S2MPJ.