Este tutorial minimiza Ackley en dos dimensiones con PSO, comprueba 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.

Partículas candidatas exploran un paisaje de búsqueda

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()

PSO convergence

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.

EvoX overview

Consulte el código versionado y la documentación. Compruebe 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.

← Volver a noticiasVolver arriba ↑