ELAI S.r.l.

Llegan todos los datos. ¿La IA sigue decidiendo sobre el pasado?

Llegan todos los datos. ¿La IA sigue decidiendo sobre el pasado? Un ejemplo explica método, supuestos y límites.

Llegan todos los datos. ¿La IA sigue decidiendo sobre el pasado?

El dato llega, pero describe un momento lejano

La IA recibe humedad para decidir sobre el estado actual de un invernadero. Procesa todos los mensajes por orden, pero la historia se acumula más rápido de lo que se sirve y las decisiones envejecen. Contar finalizaciones no mide frescura. Estudiamos edad de información con una traza determinista verificable.

Tres tiempos distintos

Cada medida tiene generación g y entrega d; su tiempo de sistema es d−g. En t, u(t) es la generación más reciente entregada: edad Δ(t)=t−u(t). Usamos un reloj ideal en segundos, sin deriva ni red añadida. Entregar un dato de tres segundos no pone la edad a cero, sino a tres.

u(t) = max { g_i : d_i ≤ t }; Δ(t) = t − u(t)

Hace falta una actualización entregada o estado inicial declarado. Promediamos solo de t=3, primera entrega en ambas políticas, a t=15, sin inventar frescura previa. Con paquetes desordenados, el máximo de generación impide retroceder u(t).

El mismo servidor, dos reglas de cola

Generamos diez medidas en 0,1,…,9 y cada servicio dura tres segundos. FIFO conserva todo: entrega generaciones 0,1,…,9 en 3,6,…,30. Sin paralelismo ni interrupciones. En t=15 acaba de entregar g=4: edad once segundos. Trabajar continuamente no impide describir un pasado creciente.

La segunda conserva solo la actualización más reciente en espera, sin interrumpir servicio. En empates, la llegada al terminar es elegible antes de elegir. Procesa generaciones 0,3,6,9, entregadas en 3,6,9,12; sustituye seis esperas. En t=15 g=9 da edad seis. Mejora frescura renunciando a completitud.

Promediar sin borrar los saltos

La media temporal es área bajo Δ(t) dividida por duración. Entre entregas u es constante y la edad sube con pendiente uno. En [a, b) el área es (b²−a²)/2−u(b−a). El código integra entre eventos, no promedia solo entregas, que respondería otra pregunta. Promediar puntos gráficos sería aproximación.

mean_age_[3,15] = (1/12) ∫_(3..15) [t−u(t)] dt

Las áreas FIFO son 13,5;19,5;25,5;31,5 segundos cuadrados: total 90, entre doce da 7,5 segundos. Último en espera tiene cuatro áreas 13,5: total 54 y media 4,5. Un salto en t=15 cambia edad instantánea pero no integral: un punto dura cero. Diferencias de media y extremo no tienen que coincidir.

PolíticaEdad media 3–15 sEdad en 15 s
17.511
24.56
Seguir edad, no cantidad de mensajes: cada entrega actualiza la fecha de medida. Traza determinista, medias integradas exactamente entre saltos.
Seguir edad, no cantidad de mensajes: cada entrega actualiza la fecha de medida. Traza determinista, medias integradas exactamente entre saltos.

Cuándo descartar sería incorrecto

Una medida de estado puede quedar superada; un evento contable o alarma aislada puede ser irremplazable. Historial completo prohíbe descartes aunque mejore edad. Aquí las llegadas acaban en nueve y toda edad termina creciendo: no se crean muestras. No probamos optimalidad para redes, cargas aleatorias o varios sensores.

La revisión de Yates y colegas de 2021 fundamenta métrica y análisis en sección II; no reproducimos benchmarks. Nuestra traza Python es determinista. Desplegar exige relojes alineados, fuentes y medidas de pérdidas, errores y consecuencias. Frescura no es exactitud: una medida nueva puede estar mal. No es prueba de instalación EL-AI.

Procesarlo todo no evita decidir con datos viejos. Hay que separar completitud histórica y frescura del estado: medir ambas revela lo que oculta el porcentaje de entregas.

Yates et al. (2021) — Age of Information, Section II.

import json,sys
from pathlib import Path
arrivals=list(range(10));service=3
fifo=[dict(generated=g,delivered=3*(g+1)) for g in arrivals]
# Arrivals at completion time are eligible before selecting the next job.
latest=[dict(generated=g,delivered=g+3) for g in [0,3,6,9]]
def age(events,t):return t-max(e['generated'] for e in events if e['delivered']<=t)
def mean_age(events,a=3,b=15):
 points=sorted({a,b}|{e['delivered'] for e in events if a<e['delivered']<b});total=0
 for x,y in zip(points,points[1:]):
  u=max(e['generated'] for e in events if e['delivered']<=x);total+=(y*y-x*x)/2-u*(y-x)
 return total/(b-a)
times=[3+i/20 for i in range(241)]
r=dict(python=sys.version.split()[0],seed=None,scope='Deterministic finite queue simulation, no network or sensor measurements',arrivalSeconds=arrivals,serviceSeconds=service,tieRule='Arrival at t is available when service completing at t selects next waiting update',FIFO=fifo,latestWaiting=latest,times=times,fifoAge=[age(fifo,t) for t in times],latestAge=[age(latest,t) for t in times],fifoMean=mean_age(fifo),latestMean=mean_age(latest),fifoAt15=age(fifo,15),latestAt15=age(latest,15))
assert r['fifoMean']==7.5 and r['latestMean']==4.5 and r['fifoAt15']==11 and r['latestAt15']==6
Path(__file__).with_name('results.json').write_text(json.dumps(r,indent=2),encoding='utf8')

Código, datos e instrucciones · JSON. Cálculos didácticos ejecutados con Python 3.14.0; figuras con Matplotlib 3.11.2. Análisis asistido por IA, sin afirmar revisión por pares ni humana. Portada original ImageGen ilustrativa: no documenta personas, sedes ni instalaciones de EL-AI. Fuentes consultadas el 25 de octubre de 2026.