CEC Functions#

Examples using CEC competition benchmark functions.


CEC 2013 Functions#

import numpy as np
from surfaces.test_functions.cec.cec2013 import (
    RotatedRastrigin,
    RotatedBentCigar,
    CompositionFunction1,
)

# Create functions
functions = [
    RotatedRastrigin(n_dim=10),
    RotatedBentCigar(n_dim=10),
    CompositionFunction1(n_dim=10),
]

for func in functions:
    space = func.search_space
    sample = {k: np.random.choice(v) for k, v in space.items()}
    result = func(sample)
    print(f"{func.__class__.__name__}: {result:.4f}")

Shifted Optima#

"""Demonstrate that CEC optima are NOT at the origin."""

from surfaces.test_functions.cec.cec2013 import RotatedRastrigin
from surfaces.test_functions.algebraic import RastriginFunction

# Standard Rastrigin - optimum at origin
standard = RastriginFunction(n_dim=5)
origin = {f"x{i}": 0.0 for i in range(5)}
print(f"Standard Rastrigin at origin: {standard(origin):.6f}")

# CEC Rastrigin - optimum is shifted
cec = RotatedRastrigin(n_dim=5)
print(f"CEC Rastrigin at origin: {cec(origin):.6f}")
print("(Not the minimum - optimum is shifted!)")

Composition Functions#

"""CEC composition functions combine multiple landscapes."""

import numpy as np
from surfaces.test_functions.cec.cec2013 import (
    CompositionFunction1,
    CompositionFunction2,
    CompositionFunction3,
)

compositions = [
    CompositionFunction1(n_dim=10),
    CompositionFunction2(n_dim=10),
    CompositionFunction3(n_dim=10),
]

for func in compositions:
    space = func.search_space
    results = []
    for _ in range(100):
        sample = {k: np.random.choice(v) for k, v in space.items()}
        results.append(func(sample))
    print(f"{func.__class__.__name__}:")
    print(f"  Min: {min(results):.2f}, Max: {max(results):.2f}")