Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions include/common.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,16 +35,9 @@ using FunctionType = std::function<Float(const Vector &)>;

namespace constants
{
extern Float max_dsigma;
extern Float min_dsigma;
extern Float tol_condition_cov;
extern Float stagnation_quantile;
extern Float sigma_threshold;
extern size_t cache_max_doubles;
extern size_t cache_min_samples;
extern bool cache_samples;
extern Float lb_sigma;
extern Float ub_sigma;
extern bool clip_sigma;
}

Expand Down
22 changes: 20 additions & 2 deletions include/restart_criteria.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ namespace restart

Criterion(const std::string& name): met(false), name(name) {}

virtual ~Criterion() = default;

void reset(const parameters::Parameters &p);

virtual void update(const parameters::Parameters &p) = 0;
Expand Down Expand Up @@ -69,9 +71,17 @@ namespace restart
void on_reset(const parameters::Parameters &p) override;
};

struct SigmaOutOfBounds: Criterion
struct MaxSigma: Criterion
{
static inline Float tolerance = 1e4;
MaxSigma(): Criterion("MaxSigma"){}
void update(const parameters::Parameters &p) override;
};

struct MinSigma: Criterion
{
SigmaOutOfBounds(): Criterion("SigmaOutOfBounds"){}
static inline Float tolerance = 1e-20;
MinSigma(): Criterion("MinSigma"){}
void update(const parameters::Parameters &p) override;
};

Expand All @@ -94,6 +104,7 @@ namespace restart

struct TolX: Criterion
{
static inline Float tolerance = 10e-12;
Vector tolx_vector;
TolX(): Criterion("TolX"){}
void update(const parameters::Parameters &p) override;
Expand All @@ -103,37 +114,44 @@ namespace restart

struct MaxDSigma: Criterion
{
static inline Float tolerance = std::pow(10., 20.);
MaxDSigma(): Criterion("MaxDSigma"){}
void update(const parameters::Parameters &p) override;
};

struct MinDSigma: Criterion
{
static inline Float tolerance = 1e-8;
MinDSigma(): Criterion("MinDSigma"){}
void update(const parameters::Parameters &p) override;
};


struct ConditionC: Criterion
{
static inline Float tolerance = std::pow(10., 14.);
ConditionC(): Criterion("ConditionC"){}
void update(const parameters::Parameters &p) override;
};

struct NoEffectAxis: Criterion
{
static inline Float tolerance = 0.;
NoEffectAxis(): Criterion("NoEffectAxis"){}
void update(const parameters::Parameters &p) override;
};

struct NoEffectCoord: Criterion
{
static inline Float tolerance = 0.;
NoEffectCoord(): Criterion("NoEffectCoord"){}
void update(const parameters::Parameters &p) override;
};

struct Stagnation: Criterion
{
static inline Float tolerance = 0.3;

size_t n_stagnation;
std::vector<Float> median_fitnesses;
std::vector<Float> best_fitnesses;
Expand Down
58 changes: 21 additions & 37 deletions modcma/c_maes/cmaescpp/__init__.pyi
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from typing import Any, Callable, List, Optional, Union, overload, ClassVar
from typing import Any, Callable, List, overload, ClassVar

import numpy
from . import (
Expand All @@ -21,30 +21,10 @@ class constants:
cache_max_doubles: ClassVar[int] = ...
cache_min_samples: ClassVar[int] = ...
cache_samples: ClassVar[bool] = ...
sigma_threshold: ClassVar[float] = ...
stagnation_quantile: ClassVar[float] = ...
tol_condition_cov: ClassVar[float] = ...
tol_min_sigma: ClassVar[float] = ...
tolup_sigma: ClassVar[float] = ...
clip_sigma: ClassVar[bool] = ...
def __init__(self, *args, **kwargs) -> None: ...

class ModularCMAES:
@overload
def __init__(self, parameters: Parameters) -> None: ...
@overload
def __init__(self, dimension: int) -> None: ...
@overload
def __init__(self, settings: parameters.Settings) -> None: ...
def adapt(self, objective: Callable[[numpy.ndarray], float]) -> None: ...
def break_conditions(self) -> bool: ...
def mutate(self, arg0: Callable[[numpy.ndarray], float]) -> None: ...
def recombine(self) -> None: ...
def run(self, objective: Callable[[numpy.ndarray], float]) -> None: ...
def select(self) -> None: ...
def step(self, objective: Callable[[numpy.ndarray], float]) -> bool: ...
def __call__(self, objective: Callable[[numpy.ndarray], float]) -> None: ...
@property
def p(self) -> Parameters: ...


class Population:
X: numpy.ndarray
Expand Down Expand Up @@ -108,17 +88,21 @@ class Parameters:
def start(
self, objective: Callable[[numpy.ndarray[numpy.float64[m, 1]]], float]
) -> None: ...

class constants:
cache_max_doubles: ClassVar[int] = ...
cache_min_samples: ClassVar[int] = ...
cache_samples: ClassVar[bool] = ...
clip_sigma: ClassVar[bool] = ...
lb_sigma: ClassVar[float] = ...
max_dsigma: ClassVar[float] = ...
min_dsigma: ClassVar[float] = ...
sigma_threshold: ClassVar[float] = ...
stagnation_quantile: ClassVar[float] = ...
tol_condition_cov: ClassVar[float] = ...
ub_sigma: ClassVar[float] = ...
def __init__(self, *args, **kwargs) -> None: ...

class ModularCMAES:
@overload
def __init__(self, parameters: Parameters) -> None: ...
@overload
def __init__(self, dimension: int) -> None: ...
@overload
def __init__(self, settings: parameters.Settings) -> None: ...
def adapt(self) -> None: ...
def break_conditions(self) -> bool: ...
def mutate(self, arg0: Callable[[numpy.ndarray], float]) -> None: ...
def recombine(self) -> None: ...
def run(self, objective: Callable[[numpy.ndarray], float]) -> None: ...
def select(self) -> None: ...
def step(self, objective: Callable[[numpy.ndarray], float]) -> bool: ...
def __call__(self, objective: Callable[[numpy.ndarray], float]) -> None: ...
@property
def p(self) -> Parameters: ...
55 changes: 35 additions & 20 deletions modcma/c_maes/cmaescpp/restart.pyi
Original file line number Diff line number Diff line change
@@ -1,15 +1,35 @@
from typing import ClassVar

import numpy

class Strategy:
def __init__(self, *args, **kwargs) -> None: ...
def update(self, parameters) -> float: ...

class BIPOP(Strategy):
budget: int
budget_large: int
budget_small: int
lambda_init: int
lambda_large: int
lambda_small: int
mu_factor: float
def __init__(self, *args, **kwargs) -> None: ...
def large(self) -> bool: ...
@property
def used_budget(self) -> int: ...

class IPOP(Strategy):
ipop_factor: float
def __init__(self, *args, **kwargs) -> None: ...

class Criterion:
last_restart: int
met: bool
name: str
def __init__(self, *args, **kwargs) -> None: ...
def reset(self, parameters) -> None: ...
def on_reset(self, parameters) -> None: ...
def update(self, parameters) -> None: ...

class Criteria:
Expand All @@ -20,20 +40,8 @@ class Criteria:
@property
def any(self) -> bool: ...

class BIPOP(Strategy):
budget: int
budget_large: int
budget_small: int
lambda_init: int
lambda_large: int
lambda_small: int
mu_factor: float
def __init__(self, *args, **kwargs) -> None: ...
def large(self) -> bool: ...
@property
def used_budget(self) -> int: ...

class ConditionC(Criterion):
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class ExceededMaxIter(Criterion):
Expand All @@ -42,42 +50,49 @@ class ExceededMaxIter(Criterion):

class FlatFitness(Criterion):
flat_fitness_index: int
flat_fitnesses: numpy.ndarray[numpy.int32[m, 1]]
flat_fitnesses: numpy.ndarray[numpy.int32]
max_flat_fitness: int
def __init__(self) -> None: ...

class IPOP(Strategy):
ipop_factor: float
def __init__(self, *args, **kwargs) -> None: ...

class MaxDSigma(Criterion):
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class MinDSigma(Criterion):
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class NoEffectAxis(Criterion):
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class NoEffectCoord(Criterion):
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class NoImprovement(Criterion):
best_fitnesses: list[float]
n_bin: int
def __init__(self) -> None: ...

class SigmaOutOfBounds(Criterion):
class MinSigma(Criterion):
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class MaxSigma(Criterion):
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class Stagnation(Criterion):
best_fitnesses: list[float]
median_fitnesses: list[float]
n_stagnation: int
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class TolX(Criterion):
tolx_vector: numpy.ndarray[numpy.float64[m, 1]]
tolx_vector: numpy.ndarray[numpy.float64]
tolerance: ClassVar[float] = ...
def __init__(self) -> None: ...

class UnableToAdapt(Criterion):
Expand Down
7 changes: 0 additions & 7 deletions src/common.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,9 @@ std::ostream& operator<<(std::ostream& os, const std::vector<T>& x)

namespace constants
{
Float max_dsigma = std::pow(10., 20.);
Float min_dsigma = 1e-8;
Float tol_condition_cov = pow(10., 14.);
Float stagnation_quantile = 0.3;
Float sigma_threshold = 1e-4;
size_t cache_max_doubles = 2'000'000;
size_t cache_min_samples = 128;
bool cache_samples = false;
Float lb_sigma = 1e-20;
Float ub_sigma = 1e4;
bool clip_sigma = false;
}

Expand Down
Loading
Loading