M MMM.config
En esta página
Referencia

API del motor

El motor es un módulo ES independiente (js/engine.js). Las horas se expresan en horas simuladas y las tasas son por hora.

Acceso desde la consola

Con el simulador abierto, la consola del navegador expone un objeto de solo lectura:

MMM.engine        // instancia activa de QueueEngine (o null)
MMM.stats         // equivale a MMM.engine.getStats()

Constructor

Los valores inválidos (vacíos, negativos, NaN) se corrigen al rango permitido.

import { QueueEngine } from './js/engine.js';

const e = new QueueEngine({
  mode: 'standard',   // 'standard' | 'psych'
  lambda: 40,         // llegadas/h        (0–1000)
  mu: 15,             // atención/h        (0.1–1000)
  servers: 5,         // servidores        (1–20)
  queues: 3,          // colas generales   (1–10)
  hours: 8,           // jornada           (1–24)
  vipCount: 1,        // cajas VIP         (0–servers)
  vipPercent: 30,     // % clientes VIP    (0–100)
  ticket: 25,         // ingreso/cliente
  costInsumo: 2.5,    // costo/cliente
  patience: 15,       // min (psych)       (1–240)
  tolerance: 10       // clientes/cola (psych) (1–100)
});

while (e.advance(1)) {}   // corre la jornada completa
console.log(e.getStats());

Métodos

MétodoDescripción
advance(hours)Avanza hours horas en sub-pasos de 0.004 h. Devuelve false cuando la jornada y la cola terminaron.
step(dt)Un solo paso de dt horas (uso avanzado; prefiere advance).
updateLive(p)Aplica en caliente μ, vipPercent, ticket, costInsumo, patience, tolerance y hours.
setLambda(v)Cambia λ (por ejemplo, para hora pico).
getStats()Devuelve el resumen de métricas (ver abajo).
getTotalQueueSize()Personas en espera ahora.
hayGente()true si hay alguien en cola o en servicio.

getStats()

{
  prefQ: 0, genQ: 3,          // en cola ahora (VIP / general)
  atendidos: 324, abandonos: 0, rechazos: 0,
  esperaTotal: 1.2,           // horas acumuladas
  maxQueueLength: 4,
  utilization: 0.51,          // 0–1
  avgWait: 0.2,               // minutos
  overtime: 0.10,             // horas extra
  ticket: 25, cost: 2.5
}

Propiedades y esquemas

ObjetoCampos
enginenow, reloj, tiempoExtra, abierto, trabajando, servidores, qPref, qGen, history
Clientet (llegada, h), type ('PREF'|'GEN'), patience (h)
Servidorid, type, busy, timer (h), clientType, totalBusyTime
history[i]t (h), q (en cola), busy (servidores ocupados); una muestra cada 0.05 h
warning
Los módulos ES no se cargan al abrir el archivo con doble clic (file://): sirve la carpeta con un servidor local, por ejemplo python3 -m http.server.