Skip to content

grlap/Agos.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

104 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Agos.jl

CI codecov

A Julia package for surrogate-based optimization and parameter space exploration. Agos.jl provides tools for defining complex search spaces, sampling strategies, and surrogate models for approximating expensive objective functions.

Features

  • Hierarchical search spacesHypercubeSearchSpace for independent dimensions, HypergridSearchSpace for conditional/hierarchical parameter spaces
  • Multiple sampling strategies — Random, Latin Hypercube, Sobol sequences, and distribution-based sampling
  • Surrogate models — Support Vector Machines (LIBSVM), Gaussian Processes, and XGBoost-based Random Forests with uncertainty quantification
  • Flexible dimension types — Numerical intervals, interval sets, and categorical dimensions
  • Adapter system — Transform between parameter spaces (e.g., categorical to numerical) with bidirectional support

Installation

using Pkg
Pkg.add(url="https://github.com/grlap/Agos.jl")

Quick Start

Define a Search Space

using Agos

# Simple hypercube space
space = HypercubeSearchSpace("params", [
    IntervalDimension("x", Interval(0.0, 1.0)),
    IntervalDimension("y", Interval(-5.0, 5.0)),
    CategoricalDimension("kernel", CategoricalSet([:rbf, :matern]))
])

# Hierarchical space with conditional parameters
grid = HypergridSearchSpace("config", [
    CategoricalDimension("optimizer", CategoricalSet([:adam, :sgd]))
])
adam_space = HypercubeSearchSpace("adam_params", [
    IntervalDimension("learning_rate", Interval(1e-4, 1e-1)),
    IntervalDimension("beta1", Interval(0.8, 0.999))
])
join!(grid, adam_space, "optimizer", :adam)

Sample Points

sampler = LatinHypercubeSampler()
points = sample!(sampler, space, 100)  # returns a DataFrame

Fit a Surrogate Model

# Gaussian Process
gp = GPSurrogateModel()
add_points!(gp, X, y)
predictions = predict(gp, X_new)

# Random Forest with uncertainty
rf = RandomForestSurrogateModel()
add_points!(rf, X, y)
v = variance(rf, X_new)
q = quantiles(rf, X_new)

Components

Component Description
Dimensions IntervalDimension, IntervalSetDimension, CategoricalDimension
Search Spaces HypercubeSearchSpace, HypergridSearchSpace
Samplers RandomSampler, LatinHypercubeSampler, SobolSampler, DistributionSampler
Surrogate Models SVMSurrogateModel, GPSurrogateModel, RandomForestSurrogateModel
Adapters CategoricalToNumericalDimensionAdapter, DimensionalSearchSpaceAdapter

Examples

See the example/ directory for usage examples including sampling, surrogate modeling, visualization, and interval operations.

License

MIT License — see LICENSE for details.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages