Este tutorial minimiza Ackley en dos dimensiones con PSO, verifica el dispositivo y representa el historial. Corresponde a EvoX 1.4.1 con PyTorch, no a la API experimental 2.x. La tarea pequeña explica el flujo; no es un benchmark GPU.

Preparar un entorno aislado
Utilice Python 3.10 o posterior. Cree un entorno virtual y actívelo según su terminal.
python -m venv .venv
En macOS/Linux:
source .venv/bin/activate
En Windows PowerShell:
.\.venv\Scripts\Activate.ps1
Instalar los paquetes adecuados
Seleccione el comando para su sistema y hardware en el instalador oficial de PyTorch. CUDA requiere un controlador compatible; instalar EvoX no garantiza una GPU disponible. Instale después la versión fijada:
python -m pip install "evox[vis]==1.4.1"
Ejecutar un experimento completo
Guarde el código como script Python. Selecciona CUDA si está disponible y CPU en caso contrario, muestra la elección y mantiene estado y seguimiento en ese dispositivo. Una semilla fija ayuda a repetir experimentos, pero los resultados pueden variar entre dispositivos y versiones.
import torch
from evox.algorithms import PSO
from evox.problems.numerical import Ackley
from evox.workflows import StdWorkflow, EvalMonitor
torch.manual_seed(42)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
torch.set_default_device(device)
algorithm = PSO(
pop_size=50,
lb=-32 * torch.ones(2, device=device),
ub=32 * torch.ones(2, device=device),
device=device,
)
problem = Ackley()
monitor = EvalMonitor(device=device, history_device=device)
workflow = StdWorkflow(algorithm, problem, monitor)
workflow.init_step()
for _ in range(100):
workflow.step()
print("Device:", device)
print("Best fitness:", monitor.get_best_fitness().item())
Comprender y visualizar el resultado
PSO mantiene candidatos, Ackley los evalúa, StdWorkflow conecta componentes y EvalMonitor registra el progreso. Menor es mejor; el óptimo teórico es cero en el origen. El valor final es aleatorio, sin puntuación fija garantizada.
Ejecute lo siguiente tras la búsqueda en el mismo proceso. Las dependencias de visualización están incluidas. La imagen procede del tutorial original y no garantiza la salida de esta semilla.
monitor.plot()

Ampliar el experimento con criterio
Cambie dimensión, población o semilla de una en una. Un problema propio debe devolver un valor por candidato. La optimización multiobjetivo también exige algoritmo, forma de salida y monitor compatibles.
Separe compilación y calentamiento de la ejecución estable, sincronice CUDA al medir y compare presupuestos iguales. Las tareas pequeñas pueden ser más rápidas en CPU. Estudie la compilación después de verificar la referencia.
Recursos y agradecimientos
El tutorial original fue escrito por Boqing Xu, Xinmeng Yu, Bowen Zheng y Xinyao Li, y editado y publicado por Beichen Huang. Se conserva su figura de presentación.

Consulte el código versionado y la documentación. Verifique la versión antes de copiar API de material más reciente.
Antes de ampliar el ejemplo, guarde juntos versiones, dispositivo, semilla y mejor aptitud. Cambie un ajuste y repita el mismo presupuesto. La explicación de EvoMO presenta las decisiones adicionales de selección y evaluación con objetivos en conflicto.