Todo lo que he construido en Axoloit y más allá. Habla con Raymundo y ve las demos interactivas en acción.
Versión web del agente de IA de Axoloit. Pregúntale sobre los proyectos, tecnologías o Kenneth.
Raymundo · Axoloit
¡Hola! Soy Raymundo, el agente de IA de Axoloit. Puedo contarte sobre todos los proyectos de Kenneth: TraceTrash, RayGPT, PythonProjects, y más. También sé sobre su trayectoria en la UAEMéx, SAP ABAP y Axoloit como startup.
Escribe tu pregunta para comenzar 👇
Sugerencias:
Visualizaciones reales de cada proyecto
3 camiones de recolección en ruta simulada — Tejupilco de Hidalgo, Estado de México
Evolución de una población resolviendo el problema del viajante (TSP)
Haz clic en el canvas para colocar ciudades, ajusta parámetros y evoluciona
Añade 5+ ciudades · El AG usa cruce OX + mutación swap · Selección por torneo
Flujo de datos entre componentes del sistema Raymundo
Arquitectura modular de RayGPT · Ver repo completo
Fragmentos reales de PythonProjects
# Algoritmo Genético — Problema del Viajante (TSP)
# PythonProjects · KenJes / Kenneth Alcalá
import random
import math
def distance(a, b):
return math.sqrt((a[0]-b[0])**2 + (a[1]-b[1])**2)
def total_distance(route, cities):
return sum(distance(cities[route[i]], cities[route[(i+1) % len(route)]])
for i in range(len(route)))
def crossover(parent1, parent2):
"""Order crossover (OX)"""
size = len(parent1)
a, b = sorted(random.sample(range(size), 2))
child = [-1] * size
child[a:b] = parent1[a:b]
remaining = [g for g in parent2 if g not in child]
j = 0
for i in range(size):
if child[i] == -1:
child[i] = remaining[j]; j += 1
return child
def mutate(route, rate=0.02):
"""Intercambio aleatorio de dos ciudades"""
for i in range(len(route)):
if random.random() < rate:
j = random.randint(0, len(route)-1)
route[i], route[j] = route[j], route[i]
return route
def evolve(population, cities, elite=5):
scored = sorted(population, key=lambda r: total_distance(r, cities))
next_gen = scored[:elite]
while len(next_gen) < len(population):
p1, p2 = random.choices(scored[:20], k=2)
child = mutate(crossover(p1, p2))
next_gen.append(child)
return next_gen