Saltar al contenido principal

Programación automática

Generar los enfrentamientos decide quién juega contra quién. Programar decide cuándo y dónde. FairGame se encarga de la segunda parte con un solucionador de restricciones: describes el torneo y coloca todos los partidos.

Si añades un equipo a un grupo de todos contra todos después de crear los partidos, la siguiente programación automática para el día de ese grupo crea los encuentros que faltan antes de asignarles horario y campo. En esa ejecución, los partidos ya programados y disputados conservan sus posiciones, y el resultado indica cuántos encuentros se crearon. La generación de partidos solo añade los enfrentamientos que faltan; nunca modifica los existentes. En el diálogo de la página de partidos, elige Añadir partidos faltantes cuando la categoría ya tenga encuentros. Los grupos suizos y las ejecuciones solo de eliminatorias no generan partidos de todos contra todos. Coloca los partidos nuevos alrededor de los existentes, incluso en una categoría o un día que ya está lleno de partidos. El resultado indica además cuántos partidos existentes se mantuvieron donde estaban, y el recuento de partidos asignados incluye solo los nuevos.

El botón de información junto al planificador automático explica el motor seleccionado y sus reglas. El descanso mínimo y cualquier error al guardar siguen visibles en la confirmación.

Qué garantiza​

Haga lo que haga, un calendario generado nunca contiene:

  • dos partidos en el mismo campo a la misma hora;
  • un equipo jugando dos partidos a la vez;
  • un partido fuera de la disponibilidad de su campo;
  • una infracción de una regla de programación que hayas marcado como obligatoria.

Estas son restricciones estrictas. Si no se pueden cumplir todas, el solucionador te lo indica en lugar de publicar un calendario que incumpla una de ellas sin avisar. El programador estándar omite las reglas marcadas como Requires the advanced scheduler; consulta los dos motores más abajo.

Qué optimiza​

Entre los calendarios válidos, prefiere los que son mejores para jugar y para gestionar:

  • Descansos equilibrados. Los equipos tienen intervalos comparables entre sus partidos, en lugar de que un equipo juegue tres seguidos mientras otro espera cuatro horas. Con un descanso mínimo configurado, el planificador estándar también evita esperas innecesarias: cuando hay más grupos de los que los campos pueden tener en juego a la vez, completa unos pocos grupos cada vez —así cada equipo espera más o menos un partido entre los suyos—, siempre que quepa en el mismo día. Con Concentrar lo hace aunque la jornada termine más tarde.
  • Días cortos. Los campos se mantienen ocupados y, con Distribuir (la opción predeterminada) en Uso de campos, el día termina lo antes posible dentro de las restricciones. El tiempo de campo inactivo es lo que convierte un torneo de siete horas en uno de diez.
  • Rondas en orden. El programador estándar coloca cada grupo ronda por ronda. Una ronda es un conjunto de partidos del grupo en el que cada equipo juega como máximo una vez, y la ronda 2 solo se coloca después de la ronda 1, de modo que los partidos de un equipo siempre están separados por una ronda completa. En un grupo en el que todos juegan contra todos, hacen falta una ronda menos que equipos cuando el número es par (tres rondas para cuatro equipos), y tantas rondas como equipos cuando es impar: un equipo descansa en cada ronda. Un grupo suizo conserva las rondas en las que se sorteó con cualquiera de los dos programadores, y ninguna de sus rondas comienza antes del inicio del último partido de la ronda anterior. La ronda en la que se colocó un partido aparece en la lista de partidos y en el panel Partidos sin programar del tablero de programación como Grupo A · Ronda 3; allí, los enfrentamientos sin programar aparecen ordenados primero por fecha y después por ronda.
  • Estructura predecible. Cuando una regla lo exige, la última ronda de un grupo comienza simultáneamente para que no se decida nada al conocer el otro resultado.

Cómo ejecutarlo​

Programación automática, en el tablero de programación, programa el día que estás viendo. Su confirmación muestra lo que hará la ejecución antes de mover nada:

  • Autoplanificador: el motor. El Programador estándar es rápido y llena las franjas libres partido a partido; mantiene el descanso mínimo de Settings → Schedule & format, contado en rondas para un grupo suizo, y omite cualquier regla marcada como Requires the advanced scheduler. El Programador avanzado (beta) resuelve todo el día de una vez, respeta todas las reglas que has activado y te indica el motivo cuando no existe un calendario válido. Cambiar esta opción modifica el motor para todas las ejecuciones del torneo, igual que en Settings.
  • Programar toda la fase de grupos: en un torneo con varios días de partidos, resuelve todos los días en una sola ejecución, incluida la fase eliminatoria. Cuando los partidos de grupo se extienden durante varios días, esto evita que un día no pueda resolverse por sí solo.
  • Programar solo las categorías seleccionadas: en un torneo con más de una categoría, programa únicamente las categorías que marques en Categorías que se programan. Las demás categorías se quedan como están: sus partidos colocados conservan campo y hora, no se coloca nada encima de ellos y sus partidos sin colocar permanecen en el panel Partidos sin programar. Úsalo para montar el calendario categoría por categoría o para rehacer una categoría sin tocar el resto. Al activarlo se marcan las categorías que aún tienen partidos por asignar, y cada categoría de la lista muestra cuántos de sus partidos están programados y cuántos faltan por asignar, o Ya programada cuando no queda ninguno.
  • Uso de campos: con el Programador estándar, lo que la ejecución prioriza. Distribuir, la opción predeterminada, usa tantos campos como haga falta para terminar lo antes posible, y los equipos pueden esperar más que el descanso mínimo entre partidos. Concentrar da a cada equipo el descanso mínimo y no más, siempre que sea posible, y la jornada puede alargarse: los grupos suizos completan sus categorías de una en una, con cada ronda en paralelo, y los grupos de liguilla juegan unos pocos a la vez. Si un grupo suizo solo tuviera parte de los campos que necesita una ronda, empieza más tarde en lugar de repartir la ronda en dos inicios. Además encaja los grupos entre sí para que los campos jueguen sin pausas, dejando cualquier campo libre al principio o al final de la jornada en lugar de entre sus partidos, sin que la jornada termine más tarde. Un equipo que descansa en un grupo suizo sigue sin jugar esa ronda. En un grupo suizo el descanso se cuenta en rondas con cualquiera de las dos opciones: los partidos de un equipo están separados al menos por el número fijado de rondas de su grupo (consulta reglas de programación). La confirmación recuerda tu última elección mientras sigas en el tablero. El programador avanzado coloca los partidos a su manera y no ofrece esta opción.
  • Mantener en su sitio los partidos publicados: una vez publicado el calendario; consulta volver a resolver durante el torneo.

En un torneo de fase de grupos y eliminatoria cuyos cuadros todavía no se han sorteado, la ejecución de un día de grupos también los sortea y coloca sus partidos provisionales en el día de la eliminatoria (o en el último día de partidos, si no se ha definido ninguno). La confirmación lo indica y nombra ese día, también en el tablero del móvil, y el resultado informa de dónde se colocaron los partidos provisionales. Una vez que existen los cuadros, una ejecución solo afecta al día para el que se inició. Una ejecución para categorías seleccionadas solo sortea y coloca los cuadros de esas categorías.

Ejecutar programación automática la inicia. Los torneos grandes tardan entre unos segundos y un par de minutos; la ejecución muestra el progreso y se puede cancelar. Cuando termina, los partidos aparecen en el tablero, en tu borrador. Nada llega al sitio público hasta que publiques. Si no se han podido colocar algunos partidos, permanecen en el panel Partidos sin programar y Resultados del calendario automático indica el motivo y qué puedes intentar. La comparación entre los minutos de campo que necesitan tus partidos y los que ofrecen tus ventanas de disponibilidad solo aparece cuando la ejecución se quedó realmente corta.

Si vuelves a ejecutarlo en el mismo día, se vuelve a optimizar cada partido colocado que no hayas bloqueado; los partidos bloqueados y disputados permanecen en su sitio. Con Programar solo las categorías seleccionadas activado, eso se aplica a las categorías que hayas marcado: las demás se mantienen como si todos sus partidos estuvieran bloqueados, solo durante esa ejecución, y la ejecución sigue respetando el descanso de cada equipo respecto a ellos. Cada ejecución que coloca partidos se guarda en el Historial, por lo que puedes restaurar con una sola acción la distribución anterior. Borrar el calendario de un día para empezar de nuevo es una sola acción, y los partidos bloqueados sobreviven; consulta editar el calendario manualmente.

Un torneo que vuelve a sortear sus grupos cada día —una clasificación en la que los grupos del segundo día se forman a partir de las tablas del primer día— se resuelve día a día incluso cuando seleccionas todos los días a la vez: los grupos de cada día se colocan teniendo en cuenta lo que ya se ha fijado en los días anteriores.

Un grupo suizo adaptativo es la excepción. Sus inicios se distribuyen al aplicar el formato, no mediante la programación automática: cada ronda se coloca completa y en orden, en tandas dimensionadas para cubrir tus campos, y esos inicios no vuelven a moverse. La programación automática los trata como ocupados y coloca el resto de partidos a su alrededor. Una ejecución que no encuentra nada que pueda mover muestra Nada que reprogramar; en un día con inicios adaptativos añade que permanecen retenidos hasta que se sorteen sus equipos. Si se acaba el tiempo de campo antes de que todas las rondas tengan un inicio, se indica la categoría junto con el número de rondas que caben; consulta rondas adaptativas para saber qué puedes cambiar.

Una vez iniciada una ejecución del Programador avanzado (beta), salir del tablero, cambiar de día, recargar la página o pulsar Atrás no la cancela. Vuelve en el mismo navegador antes de que transcurran 30 minutos desde el inicio para recuperar el progreso, incluso en otra pestaña. Solo Cancelar solicita la cancelación; el progreso sigue visible hasta que se confirma. Si la cancelación falla, la ejecución sigue visible y puedes volver a pulsar Cancelar. Las ejecuciones estándar siguen deteniéndose al cambiar de día.

Cuando no encuentra un calendario​

Un día imposible de resolver casi siempre está demasiado restringido, no averiado. Por orden de probabilidad:

No hay suficientes horas de campo. Campos × horas disponibles ÷ (tiempo de juego + descanso entre partidos) es tu límite. Si los partidos no caben, ninguna distribución lo solucionará; Resultados del calendario automático compara los minutos de campo que necesitan tus partidos con los que proporcionan tus franjas de disponibilidad. Añade un campo, amplía el día, acorta los partidos o reduce el número de equipos. La comparación aparece cuando algunos partidos no se pudieron asignar. Cuando un día ya está lleno mientras los demás tienen hueco, indica ese día, porque una fase puede desbordar su día aunque el total parezca suficiente. Amplía el horario de ese día, añade un día a la fase o acorta los partidos.

El requisito de descanso es demasiado generoso. Un descanso de 120 minutos para equipos que juegan cuatro partidos requiere un día largo. El descanso es la causa más habitual de un calendario imposible; redúcelo y comprueba si el día se puede resolver.

La disponibilidad es más limitada de lo que pretendías. Comprueba las franjas de cada campo: es fácil pasar por alto una disponibilidad configurada para el sábado y no ajustada para el domingo.

Las reglas entran en conflicto. Dos equipos que deben terminar antes de las 14:00 y jugar cuatro partidos con 90 minutos de descanso pueden hacer que el calendario conjunto sea imposible. FairGame informa de qué restricciones no ha podido satisfacer al mismo tiempo.

Calendarios parciales y partidos fijados​

No tienes que dejar todo el día en manos del solucionador. Bloquea los partidos que ya hayas colocado manualmente y el resto se resolverá a su alrededor; resulta útil para una final con un inicio fijo, un espacio para la ceremonia de apertura o un partido para el que un club ya ha viajado. Bloquear partido en una tarjeta bloquea uno; Bloquear todos los partidos de este día congela el día tal como está. Consulta editar el calendario manualmente.

Volver a resolver durante el torneo​

Que un campo cierre al mediodía es algo normal. Reduce su disponibilidad para ese día y vuelve a ejecutar la programación automática: los partidos disputados y en directo permanecen en su sitio, no se coloca nada nuevo antes del último partido ya disputado y el resto se vuelve a colocar teniendo en cuenta lo que ya ha ocurrido.

Una vez publicado el calendario, la opción Mantener en su sitio los partidos publicados de la confirmación está activada de forma predeterminada: todos los partidos que sigan en el campo y la hora publicados permanecen allí, y la ejecución solo coloca lo que todavía no está colocado. Eso es lo que necesitas cuando añades un partido atrasado. Cuando los partidos publicados tengan que moverse —por ejemplo, para sacarlos del campo que acabas de perder— desactívala y bloquea los que deban permanecer en su sitio.

Revisa el resultado, publica el cambio y anúncialo: el calendario que consulta la gente está en sus teléfonos y no se actualiza por sí solo en sus cabezas.