Skip to main content

GPU-Accelerated Optimization

Accelerate single-objective and multi-objective optimization tasks using CuPy and GPU tensor backends.

Single-Objective GPU Optimization​

import cupy as cp

from opytimizer import Opytimizer
from opytimizer.core import Environment, Function, NoImprovement
from opytimizer.optimizers.single_objective.swarm import PSOCuda
from opytimizer.spaces import SearchSpace


def no_shifted_sphere(x):
return cp.sum(cp.square(x), axis=1)


n_agents = 60
n_variables = 30
n_objectives = 1

lower_bound = [-30.0] * n_variables
upper_bound = [30.0] * n_variables

device_gpu = Environment().set_backend("cupy").set_dtype("float32")

my_search_space = SearchSpace(
n_agents,
n_variables,
n_objectives,
lower_bound,
upper_bound,
env=device_gpu,
tensorized=True,
)

stopping_criteria = NoImprovement(patience=10, min_delta=1e-5)
my_func = Function(no_shifted_sphere)

my_pso = PSOCuda()

opt = Opytimizer(space=my_search_space, optimizer=my_pso, function=my_func)

opt.start(stopping_criteria=stopping_criteria)