Sistema de solvers
dispatchatlas.solve posee los metadatos de solvers, la selección, la construcción de
horarios, la reparación, las salvaguardas de rendimiento, las familias de referencia, los
adaptadores opcionales, y la familia NDSO.
El paquete importa dispatchatlas.core solamente. Las pruebas de integración de prueba de
benchmarks viven en tests/solve/ para que el paquete en tiempo de ejecución no dependa de
generadores de benchmarks concretos.
Ejemplo ejecutable: examples/compare_solvers.py planifica una cohorte de solvers en paralelo y la ancla con un óptimo exacto probado.
Registro
SolverRegistry almacena fábricas de solvers sin estado con metadatos ricos:
- etiquetas de capacidad como
capacity-aware,precedence-aware,repair,local-search, yndso - objetivos soportados como
makespan,energy, ycost - restricciones declaradas expresadas mediante etiquetas de capacidad
- criterios de parada por defecto
- comportamiento de repetición determinista o estocástico-sembrado
- codificación de solución (
permutation,mapping,assignment, onative) - declaraciones de dependencia opcional y divulgación de backend comercial
- visibilidad de nivel-de-evidencia para exportaciones por etapas
- una citación canónica, o una justificación explícita de citación-no-aplicable
Cada familia de solver nombrada lleva una citación que falla en cerrado: una familia con un origen seminal canónico que omite su referencia no puede construirse, y una familia sin un único origen canónico registra el motivo en vez de fabricar uno.
from dispatchatlas.solve import SolverCapability, default_solver_registry
registry = default_solver_registry()
metaheuristics = registry.select(
required_capabilities=(SolverCapability.METAHEURISTIC,),
objective="makespan",
)Catálogo del registro
Cada solver del registro, en una tabla única ordenable y buscable. La tabla y sus totales
se generan a partir de default_solver_registry(), de modo que los conteos de abajo son
contables desde las propias filas. Un gráfico de cobertura-de-capacidades encima de la
tabla resume cuántos solvers del registro declaran cada capacidad anunciada.
Generated from the solver registry: 87 solvers across 6 groups — constructive (5), dispatching (14), exact (7), learning (11), metaheuristic (47), ndso (3).
Showing 87 of 87 solvers.
| Supported objectives | Notes | ||
|---|---|---|---|
adpso | metaheuristic | makespan, energy, cost | Inspect
|
age-moea-ii | metaheuristic | makespan, lateness, fairness, energy, cost, carbon | Inspect
|
ant-colony | metaheuristic | makespan, energy, cost | Inspect
|
apparent-tardiness-cost | dispatching | makespan, lateness, energy, cost | Inspect
|
arithmetic-optimization | metaheuristic | makespan, energy, cost | Inspect
|
artificial-bee-colony | metaheuristic | makespan, energy, cost | Inspect
|
artificial-fish-swarm | metaheuristic | makespan, energy, cost | Inspect
|
beam-search | constructive | makespan, energy, cost | Inspect
|
branch-and-bound | exact | makespan, energy, cost | Inspect
|
ccgp | metaheuristic | makespan, energy, cost | Inspect
|
clpso | metaheuristic | makespan, energy, cost | Inspect
|
cma-es | metaheuristic | makespan, energy, cost | Inspect
|
cpop | dispatching | makespan, energy, cost | Inspect
|
critical-path-tabu | metaheuristic | makespan, energy, cost | Inspect
|
cuckoo-search | metaheuristic | makespan, energy, cost | Inspect
|
d-clpso | metaheuristic | makespan, energy, cost | Inspect
|
d-depso | metaheuristic | makespan, energy, cost | Inspect
|
d-lshade | metaheuristic | makespan, energy, cost | Inspect
|
dan-dual-attention | learning | makespan, energy, cost | Inspect
|
decima-dag-rl | learning | makespan, energy, cost | Inspect
|
decision-diagram-sequencing | exact | makespan, energy, cost | Inspect
|
differential-evolution | metaheuristic | makespan, energy, cost | Inspect
|
earliest-deadline | dispatching | makespan, energy, cost | Inspect
|
earliest-finish-time | dispatching | makespan, energy, cost | Inspect
|
earliest-start | dispatching | makespan, energy, cost | Inspect
|
epso | metaheuristic | makespan, energy, cost | Inspect
|
exhaustive-enumeration | exact | makespan, energy, cost | Inspect
|
firefly-algorithm | metaheuristic | makespan, energy, cost | Inspect
|
fjsp-hgnn-drl | learning | makespan, energy, cost | Inspect
|
genetic-algorithm | metaheuristic | makespan, energy, cost | Inspect
|
grasshopper-optimization | metaheuristic | makespan, energy, cost | Inspect
|
gravitational-search | metaheuristic | makespan, energy, cost | Inspect
|
greedy-completion | dispatching | makespan, energy, cost | Inspect
|
grey-wolf-optimizer | metaheuristic | makespan, energy, cost | Inspect
|
guided-local-search | metaheuristic | makespan, energy, cost | Inspect
|
gurobi-exact | exact | makespan, energy, cost | Inspect
|
harris-hawks-optimization | metaheuristic | makespan, energy, cost | Inspect
|
heft | dispatching | makespan, energy, cost | Inspect
|
ibea | metaheuristic | makespan, lateness, fairness, energy, cost, carbon | Inspect
|
iterated-greedy-rs | metaheuristic | makespan, energy, cost | Inspect
|
jaya-algorithm | metaheuristic | makespan, energy, cost | Inspect
|
l2d-disjunctive-gnn | learning | makespan, energy, cost | Inspect
|
l2s-improvement | learning | makespan, energy, cost | Inspect
|
learned-priority-policy | learning | makespan, energy, cost | Inspect
|
logic-based-benders-decomposition | exact | makespan, energy, cost | Inspect
|
longest-processing-time | dispatching | makespan, energy, cost | Inspect
|
lshade | metaheuristic | makespan, energy, cost | Inspect
|
marine-predators | metaheuristic | makespan, energy, cost | Inspect
|
matheuristic-restricted-neighbourhood | metaheuristic | makespan | Inspect
|
max-min | dispatching | makespan, energy, cost | Inspect
|
min-min | dispatching | makespan, energy, cost | Inspect
|
minimum-slack | dispatching | makespan, energy, cost | Inspect
|
moead | metaheuristic | makespan, lateness, fairness, energy, cost | Inspect
|
monte-carlo-tree-search | metaheuristic | makespan, energy, cost | Inspect
|
moth-flame-optimization | metaheuristic | makespan, energy, cost | Inspect
|
ndso-core | ndso | makespan, energy, cost | Inspect
|
ndso-fast | ndso | makespan, energy, cost | Inspect
|
ndso-summit | ndso | makespan, energy, cost | Inspect
|
neh | constructive | makespan, energy, cost | Inspect
|
nsga2 | metaheuristic | makespan, lateness, fairness, energy, cost | Inspect
|
nsga3 | metaheuristic | makespan, lateness, fairness, energy, cost, carbon | Inspect
|
ortools-cp-sat | exact | makespan, energy, cost | Inspect
|
particle-swarm | metaheuristic | makespan, energy, cost | Inspect
|
peft | dispatching | makespan, energy, cost | Inspect
|
pulp-milp | exact | makespan, energy, cost | Inspect
|
residual-scheduling | learning | makespan, energy, cost | Inspect
|
rl-dispatching | learning | makespan, energy, cost | Inspect
|
rollout | constructive | makespan, energy, cost | Inspect
|
rvea | metaheuristic | makespan, lateness, fairness, energy, cost, carbon | Inspect
|
salp-swarm | metaheuristic | makespan, energy, cost | Inspect
|
sarsa-dispatching | learning | makespan, energy, cost | Inspect
|
scatter-search | metaheuristic | makespan, energy, cost | Inspect
|
selection-hyper-heuristic | metaheuristic | makespan, energy, cost | Inspect
|
serial-sgs-justification | constructive | makespan, energy, cost | Inspect
|
shifting-bottleneck | constructive | makespan, energy, cost | Inspect
|
shortest-processing-time | dispatching | makespan, energy, cost | Inspect
|
simulated-annealing | metaheuristic | makespan, energy, cost | Inspect
|
sine-cosine-algorithm | metaheuristic | makespan, energy, cost | Inspect
|
slim-self-labeling | learning | makespan, energy, cost | Inspect
|
sms-emoa | metaheuristic | makespan, lateness, fairness, energy, cost, carbon | Inspect
|
spea2 | metaheuristic | makespan, lateness, fairness, energy, cost, carbon | Inspect
|
squeaky-wheel | metaheuristic | makespan, energy, cost | Inspect
|
sufferage | dispatching | makespan, energy, cost | Inspect
|
surrogate-assisted-gp-hh | learning | makespan, energy, cost | Inspect
|
tabu-mrcpsp-mode-search | metaheuristic | makespan, energy, cost | Inspect
|
teaching-learning-optimization | metaheuristic | makespan, energy, cost | Inspect
|
whale-optimization | metaheuristic | makespan, energy, cost | Inspect
|
All objective support is declared registry metadata, not a performance claim. The solver recommender ranks these solvers by declared fit.
Aplicabilidad del solucionador
Qué solucionadores se aplican a qué familia de referencia, leído de la matriz de aplicabilidad. Cada celda es aplicabilidad declarada, nunca una afirmación de rendimiento: las celdas verificadas citan una campaña pública, cita o prueba con nombre, y las celdas aproximadas se derivan de las capacidades declaradas del solucionador y de los rasgos de la familia de referencia. La tabla siguiente se genera a partir del paquete público de aplicabilidad, por lo que sus totales de estado se pueden contar desde las propias filas.
Generated from the applicability matrix: 69 benchmark families by 87 public solvers. 10 verified · 5835 approximate · 158 not applicable.
Cell status is declared applicability, never a performance claim. Verified cells cite a named public campaign artifact, citation source, or test; approximate cells are derived from declared solver capabilities and benchmark-family traits and are labeled as such.
Showing 6003 of 6003 cells.
| Basis | |||
|---|---|---|---|
accelerator-coschedulingdistributed-computing | adpso | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; searches a continuous space decoded via the random-key-adapter with topological repair. |
accelerator-coschedulingdistributed-computing | age-moea-ii | Approximate | family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | ant-colony | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | apparent-tardiness-cost | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | arithmetic-optimization | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | artificial-bee-colony | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | artificial-fish-swarm | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | beam-search | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | branch-and-bound | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | ccgp | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | clpso | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; searches a continuous space decoded via the random-key-adapter with topological repair. |
accelerator-coschedulingdistributed-computing | cma-es | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | cpop | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | critical-path-tabu | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | cuckoo-search | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | d-clpso | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; searches a continuous space decoded via the spv-adapter with topological repair. |
accelerator-coschedulingdistributed-computing | d-depso | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | d-lshade | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; searches a continuous space decoded via the rounding-adapter with topological repair. |
accelerator-coschedulingdistributed-computing | dan-dual-attention | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | decima-dag-rl | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | decision-diagram-sequencing | Not applicable | native exact search caps at 12 tasks; family instances carry 96; optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | differential-evolution | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | earliest-deadline | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | earliest-finish-time | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | earliest-start | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | epso | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; searches a continuous space decoded via the random-key-adapter with topological repair. |
accelerator-coschedulingdistributed-computing | exhaustive-enumeration | Not applicable | native exact search caps at 8 tasks; family instances carry 96; optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | firefly-algorithm | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | fjsp-hgnn-drl | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | genetic-algorithm | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | grasshopper-optimization | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | gravitational-search | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | greedy-completion | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | grey-wolf-optimizer | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | guided-local-search | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | gurobi-exact | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | harris-hawks-optimization | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | heft | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | ibea | Approximate | family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | iterated-greedy-rs | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | jaya-algorithm | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | l2d-disjunctive-gnn | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | l2s-improvement | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | learned-priority-policy | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | logic-based-benders-decomposition | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | longest-processing-time | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
accelerator-coschedulingdistributed-computing | lshade | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; searches a continuous space decoded via the random-key-adapter with topological repair. |
accelerator-coschedulingdistributed-computing | marine-predators | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling. |
accelerator-coschedulingdistributed-computing | matheuristic-restricted-neighbourhood | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity; produces a static schedule for a family with dynamic arrivals/rescheduling; no repair or dispatching mechanism for the family's declared uncertainty. |
accelerator-coschedulingdistributed-computing | max-min | Approximate | optimizes one objective axis of a multi-objective family; family declares constraint features with no capability-tag counterpart: affinity. |
Cell status is declared applicability, never a performance claim. Verified cells cite a named public campaign, citation, or test; approximate cells are derived from declared solver capabilities and benchmark-family traits. The solver recommender scores solvers against this matrix by scheduling family.
Líneas-base de despacho
Las líneas-base deterministas empaquetadas son solvers constructivos de planificación-por-listas. Cada uno controla el orden de las tareas; el constructor serial honra las demandas de recursos declaradas de cada tarea y asigna cada tarea a su recurso demandado disponible-más-temprano. Cada familia nombra su referencia seminal canónica.
| Solver | Base de prioridad | Referencia canónica |
|---|---|---|
earliest-start | orden topológico de entrada | no aplicable (línea-base identidad) |
shortest-processing-time | tarea de duración más corta primero | Smith (1956) |
longest-processing-time | tarea de duración más larga primero | Graham (1969) |
earliest-deadline | deadline más temprano primero (consciente-de-deadline) | Jackson (1955) |
earliest-finish-time | fin alcanzable más temprano primero | Topcuoglu et al. (2002) |
minimum-slack | menor holgura de horario primero | Conway, Maxwell & Miller (1967) |
greedy-completion | finalización consciente-del-estado más temprana primero | Graham (1966) |
apparent-tardiness-cost | mayor índice de apparent-tardiness-cost primero (consciente-de-deadline) | Vepsalainen & Morton (1987) |
Familias de despacho retiradas
Las familias de mapeo-de-recursos se registran explícitamente en vez de plegarse silenciosamente en un tipo genérico. Controlan la asignación de recursos, no el orden de las tareas, y el constructor serial respetuoso-de-demandas no expone ninguna decisión de mapeo libre bajo el modelo de problema núcleo actual:
- Mapeo de recursos (
olb,met,mct,round-robin,load-balanced): el constructor asigna cada tarea a su recurso declarado, de modo que estas heurísticas no tienen grado de libertad realizable; el mapeo consciente-del-tiempo-de-ejecución es propiedad del trabajo de objetivos y restricciones, no de esta fundación. - Etiquetas de tipo ausentes (
type-aware,domain-aware): requieren etiquetas de tipo-de-tarea y tipo-de-recurso que el modelo de problema núcleo actual no lleva.
retired_dispatching_families() devuelve el libro mayor completo con justificación y
citación por-familia.
Planificadores por listas basados en rango
Tres planificadores por listas conscientes-de-heterogeneidad comparten una forma de dos fases: una fase de priorización estática clasifica cada tarea sobre el DAG de precedencia a partir de tiempos de ejecución medios y costos de comunicación, y una fase de selección-de-procesador enlaza cada tarea en orden de prioridad mediante la regla de fin-más-temprano del constructor serial. Los tiempos de ejecución por-recurso provienen de los modos de ejecución declarados de una tarea moldeable, y una tarea rígida degenera a la especialización homogénea documentada.
| Solver | Base de prioridad | Referencia canónica |
|---|---|---|
heft | rango ascendente | Topcuoglu, Hariri & Wu (2002) |
cpop | rango combinado ascendente-más-descendente, tareas de ruta-crítica primero | Topcuoglu, Hariri & Wu (2002) |
peft | rango de tabla-de-costo-optimista | Arabnejad & Barbosa (2014) |
Reglas de mapeo del conjunto-listo
Tres reglas de mapeo por lotes puntúan cada tarea lista-en-precedencia por su
finalización más temprana sobre sus enlaces candidatos, y luego mapean una tarea por
paso. Las reglas publicadas mapean un lote de tareas independientes; aquí el lote es el
conjunto listo-en-precedencia, de modo que las reglas se extienden a cargas de trabajo
dependientes y se reducen al comportamiento publicado en instancias de
tareas-independientes. Estas familias dejaron el libro mayor de retiradas para su
registro de primera-clase una vez que los TaskSpec.modes moldeables hicieron
representable su matriz de finalización-esperada por-máquina.
| Solver | Base de prioridad | Referencia canónica |
|---|---|---|
min-min | menor mejor-finalización a continuación | Ibarra & Kim (1977); Braun et al. (2001) |
max-min | mayor mejor-finalización a continuación | Ibarra & Kim (1977); Braun et al. (2001) |
sufferage | mayor brecha de finalización segundo-mejor-menos-mejor a continuación | Maheswaran et al. (1999) |
Líneas-base de Iterated-Greedy, Tabu y RCPSP
Tres métodos publicados de solución-única buscan el espacio de orden-de-tareas
seguro-en-precedencia, cada uno proyectando su mecanismo canónico sobre la costura
compartida de orden-y-ejecución. serial-sgs-justification es el primer solver de
planificación-de-proyectos con-recursos-restringidos (RCPSP) de la plataforma.
| Solver | Mecanismo | Referencia canónica |
|---|---|---|
iterated-greedy-rs | semilla NEH con un bucle de destrucción-reconstrucción y aceptación de temperatura-fija | Ruiz & Stutzle (2007) |
critical-path-tabu | búsqueda tabú avanzada sobre movimientos de bloques de ruta-crítica | Nowicki & Smutnicki (2005) |
serial-sgs-justification | decodificación de esquema-de-generación-de-horarios serial con doble justificación derecha-luego-izquierda | Valls, Ballestin & Quintanilla (2005) |
Líneas-base metaheurísticas
Las líneas-base metaheurísticas sembradas representativas comparten los mismos operadores de factibilidad, reparación, puntuación, y búsqueda-local, cada una con su referencia canónica: genetic algorithm (Holland 1975), simulated annealing (Kirkpatrick et al. 1983), ant colony (Dorigo, Maniezzo & Colorni 1996), particle swarm (Kennedy & Eberhart 1995), y differential evolution (Storn & Price 1997).
Solvers adaptadores codificados
La comprehensive learning particle swarm optimization y la success-history adaptive differential evolution buscan un vector continuo de valores-reales con un componente por tarea. Cada núcleo es genérico sobre un objetivo continuo, de modo que su comportamiento de convergencia se valida directamente en un benchmark continuo, y se enlaza al problema de planificación mediante un adaptador de codificación que decodifica un vector en un orden de tareas factible-en-precedencia.
| Solver | Inspiración | Adaptación | Codificación |
|---|---|---|---|
clpso | Comprehensive learning particle swarm (Liang et al. 2006) | Enjambre continuo decodificado a un orden de precedencia | random-key |
d-clpso | Comprehensive learning particle swarm (Liang et al. 2006) | Adaptador discreto sobre la decodificación smallest-position-value | spv |
lshade | Success-history adaptive DE con reducción lineal de población (Tanabe & Fukunaga 2014) | Differential evolution continua decodificada a un orden de precedencia | random-key |
d-lshade | Success-history adaptive DE con reducción lineal de población (Tanabe & Fukunaga 2014) | Adaptador discreto sobre redondeo de rango-entero | rounding |
CLPSO aprende cada dimensión de un ejemplar de comprehensive-learning en vez de un único mejor-global, de modo que la mejor aptitud del enjambre mejora monótonamente sobre una cuenca unimodal. L-SHADE adapta las memorias de cruce y factor-de-escala desde su historial de éxito y reduce la población linealmente hasta un mínimo de cuatro individuos. Ambos reportan una trayectoria de convergencia, y una prueba de convergencia-correcta falla cuando la trayectoria observada contradice el comportamiento de referencia publicado, separada de las comprobaciones de reproducibilidad-de-semilla.
Estos solvers son optimizadores continuos adaptados a un dominio discreto mediante un puente de codificación; no son reimplementaciones exactas de ningún código previo, y no se hace ninguna afirmación de rendimiento antes de que corran las campañas comparativas.
Adaptadores de codificación
Cada codificación continua-a-discreta nombrada es un adaptador distinto con una política de reparación explícita, de modo que ninguna codificación se pliega silenciosamente en un decodificador genérico. Cada adaptador repara su orden decodificado en un orden factible-en-precedencia y registra si la reparación se disparó.
| Adaptador | Transferencia | Regla de decodificación | Estado de citación |
|---|---|---|---|
random-key | identidad | ordenar por clave fijada | canónica (Bean 1994) |
spv | identidad | smallest position value | canónica (Tasgetiren et al. 2007) |
rounding | identidad | ranuras de rango-entero | no-aplicable |
sigmoid | sigmoide en-S | sorteo probabilístico ponderado | canónica (Kennedy & Eberhart 1997) |
v-shaped | magnitud en-V | sorteo probabilístico ponderado | canónica (Mirjalili & Lewis 2013) |
tanh | tangente hiperbólica desplazada | sorteo probabilístico ponderado | canónica (Mirjalili & Lewis 2013) |
Las decodificaciones deterministas (random-key, spv, rounding) ignoran la fuente
aleatoria; las decodificaciones de función-de-transferencia consumen una fuente sembrada y se
repiten bajo una semilla fija. El adaptador rounding registra citación-no-aplicable porque
el redondeo de rango al-entero-más-cercano es una discretización genérica sin un único
origen seminal canónico.
Conjunto diversificado de competidores
El conjunto diversificado de competidores amplía la comparación más allá de las líneas-base representativas con un pequeño puñado de pares recientes y fuertes, cada uno un solver nombrado con su referencia de texto-completo proyectada sobre el espacio de decisión solo-de-orden, en vez de una lista voluminosa de líneas-base clásicas. Un par permanece en el campo público solo cuando supera un umbral de fuerza-de-sede: publicado dentro de la ventana de vigencia post-2020 en una sede indexada y revisada-por-pares, con el nivel de la sede registrado para que un lector lo pondere por evidencia en vez de por prestigio.
| Solver | Mecanismo | Sede | Citación |
|---|---|---|---|
epso | Enjambre con inicialización-sesgada-por-carga con reunión de caminos | Electronics (MDPI), 2023 — indexado | Anbarkhan & Rakrouki (2023) |
adpso | Búsqueda por enjambre con inercia descendente adaptativa-al-éxito | Sensors (MDPI), 2022 — indexado | Nabi et al. (2022) |
ccgp | Coevolución cooperativa de árboles de reglas-de-prioridad | Computers & Operations Research (Elsevier), 2024 — OR de primer-nivel | Zaki et al. (2024) |
Cada par lleva fortalezas, advertencias, y una clase de evidencia de línea-base-ejecutable en sus metadatos para que el recomendador pueda explicar por qué un solver encaja en un contexto. Un conjunto más amplio de líneas-base clásicas — genetic algorithms de clave-entera, biased-random-key, y estimation-of-distribution, y búsquedas large-neighborhood, iterated greedy, tabu, variable-neighborhood, y memetic — permanece registrado para comparación interna pero se mantiene fuera del campo público, ya que las heurísticas representativas ya llevan su señal de mecanismo. No se hace ninguna afirmación de rendimiento antes de que corran las campañas comparativas.
Ancla de vigencia
El conjunto de competidores y trabajo-relacionado se posiciona contra el trabajo de la década-actual mediante un ancla de vigencia post-2020: Karimi-Mamaghan, Mohammadi, Pasdeloup, y Meyer (2023, aprender a seleccionar operadores vía Q-learning integrado en iterated greedy para el permutation flowshop, European Journal of Operational Research 304(3):1296-1330, doi:10.1016/j.ejor.2022.03.054) y el algoritmo evolutivo multi-objetivo colaborativo guiado-por-indicador de 2024 IEEE Transactions on Evolutionary Computation para la planificación de grupos de distributed flowshop (doi:10.1109/TEVC.2023.3339558).
Competidores multi-objetivo
Dos competidores de Pareto evolucionan una población de órdenes de tareas
seguros-en-precedencia sobre un vector multi-objetivo, distinta de la superficie de
muchos-objetivos nsga3. nsga2 es el competidor basado-en-dominancia — ordenamiento
no-dominado rápido con desempate por distancia-de-aglomeración — y moead es el
contrapeso basado-en-descomposición, dividiendo el problema en subproblemas escalares de
Tchebycheff a lo largo de una malla de pesos de símplex estructurada y reemplazando
titulares a través del vecindario de peso-más-cercano de cada subproblema.
| Solver | Mecanismo | Referencia canónica |
|---|---|---|
nsga2 | Pareto basado-en-dominancia: ordenamiento no-dominado rápido, distancia de aglomeración | Deb et al. (2002) |
moead | Pareto basado-en-descomposición: escalarización de Tchebycheff sobre una malla de pesos de símplex | Zhang & Li (2007) |
Competidor de muchos-objetivos
nsga3 es el competidor de muchos-objetivos nombrado (Deb & Jain 2014,
doi:10.1109/TEVC.2013.2281535), distinto de la superficie de competidor bi-objetivo. Mantiene
una población sobre órdenes de tareas seguros-en-precedencia, evalúa cada orden sobre un
vector multi-objetivo (makespan, tardanza, y equidad de carga), y sobrevive cada generación
por una selección de nichos por puntos-de-referencia sobre puntos-de-referencia
estructurados de Das & Dennis sobre el símplex unitario. El diseño de puntos-de-referencia,
la asociación de soluciones a su dirección de referencia más cercana, y la selección por
conteo-de-nicho son la firma algorítmica; el solver declara la capacidad many-objective
junto a multi-objective para que una campaña pueda seleccionarlo explícitamente.
Emparejamiento de capacidades
SolverRegistry.select empareja solvers por capacidad, restricción, y objetivo. Los
requisitos de capacidad y restricción se expresan ambos como etiquetas de capacidad y se
emparejan como una conjunción: una campaña de muchos-objetivos que también necesita
conciencia-de-deadline pasa required_capabilities=(SolverCapability.MANY_OBJECTIVE,) y
required_constraints=(SolverCapability.DEADLINE_AWARE,), y el registro devuelve solo los
solvers que declaran ambos. Un filtro objective restringe aún más el resultado a los
solvers que declaran soporte para ese objetivo nombrado.
Familia NDSO
La familia NDSO es la familia de solvers de codificación-nativa del registro: busca
directamente sobre horarios factibles. Cada horario que produce es factible por construcción
(un constructor válido-por-diseño construye un orden respetuoso-de-precedencia en cada paso),
de modo que la familia lleva la codificación native y nunca corre un paso de
codificar/decodificar ni una pasada de reparación. La familia compone un pequeño conjunto de
mecanismos nombrados:
- Confidence Matrix — un almacén disperso de confianza aprendida por celda (posición, tarea), actualizado conforme mejores horarios refuerzan sus celdas.
- Confidence-Weighted Voting — sintetiza el horario élite votando a través de la población ponderada por la Confidence Matrix; la variante rápida usa un voto de mayoría no-ponderado en su lugar.
- Horarios Quantity-and-Quality — el horario Quantity fija cuánto cambia un candidato; el horario Quality fija de qué fuente de guía aprende.
- Guía de tres-fuentes — un candidato aprende del élite sintetizado (explotación), de un par (diversidad), o de una fuente de conocimiento-desvanecido (exploración radical).
- Coeficiente adaptativo unificado — un horario no-lineal desplaza la familia de la exploración a la explotación e impulsa tanto la sensibilidad como el foco de aprendizaje; la variante rápida lo fija a un valor fijo.
| Variante | Composición |
|---|---|
ndso-core | Confidence-Weighted Voting, coeficiente adaptativo, guía de tres-fuentes |
ndso-fast | síntesis por voto-de-mayoría, coeficiente fijo, fuente de guía única |
ndso-summit | Consejo Inter-Enjambre coordinando varios enjambres con síntesis sobre-arqueante |
Consejo Inter-Enjambre
La variante ndso-summit es la composición de calidad: corre varios enjambres en paralelo y
los coordina a través de un consejo. Cada enjambre compone los mecanismos núcleo sobre su
propia población; el consejo Inter-Enjambre mantiene esos enjambres trabajando como una sola
búsqueda en vez de varias corridas aisladas y sintetiza sus resultados en un único élite
sobre-arqueante — el horario que toda la cumbre respalda. El consejo es lo que distingue la
variante a primera vista: ndso-core y ndso-fast buscan cada uno con una población,
mientras que ndso-summit es la composición construida para búsqueda multi-enjambre
coordinada.
El comportamiento de coordinación del consejo y los diagnósticos por-enjambre son configurables, y cada horario que produce permanece factible por construcción.
Mapa de ablación
El mapa de ablación enumera una configuración aislante por mecanismo nombrado para que el análisis posterior pueda atribuir la contribución de cada mecanismo. Las entradas intra-enjambre cada una deshabilitan un interruptor núcleo — la Confidence Matrix, la Confidence-Weighted Voting, el horario Quantity, el horario Quality, la estructura de guía multi-fuente, la fuente par, la fuente de conocimiento-desvanecido, y el coeficiente adaptativo. Las entradas de coordinación cada una deshabilitan un parámetro del consejo — la coordinación Intra- versus Inter-Enjambre y la síntesis sobre-arqueante. Cada entrada declara el piso de conteo-de-corridas en el que la capa de análisis muestrea su comparación y nombra las pruebas estadísticas que esa capa aplica (una prueba de significancia no-paramétrica pareada, un post-hoc de rango-promedio de Friedman con una corrección de comparación-múltiple de Holm, y un tamaño-de-efecto Cliff's-delta). La comparación muestreada se materializa por el motor de experimentos posterior; el ejecutor en-proceso prueba que cada aislamiento es factible.
Un filtro de exportación por-etapas gobierna qué mecanismos puede exponer un alcance de reporte: el alcance base expone solo los mecanismos fundacionales, y un gate fail-closed alza en vez de filtrar un mecanismo más-rápido o de mayor-calidad bajo un alcance base, de modo que los alcances fundacional y rápido no pueden exponer los mecanismos solo-del-consejo. Los diagnósticos de convergencia — diversidad de población, entropía de la Confidence-Matrix, ratio de exploración, carga de recursos, temporización, y la traza de mejora — son opcionales y no añaden sobrecarga cuando están deshabilitados, y el consejo exporta un manifiesto JSON que la capa de análisis ingiere sin importar ningún tipo de solver.
Adaptadores exactos
Los adaptadores exactos toman una de dos formas. Los adaptadores de backend-opcional declaran
una dependencia opcional y comprueban su raíz de importación en tiempo de ejecución; si el
backend está ausente alzan MissingOptionalDependencyError con el nombre del extra, el
propósito, la bandera comercial, y la nota de licencia en vez de importar una dependencia
pesada durante la importación del paquete. Los adaptadores nativos-acotados no llevan
dependencia de terceros y resuelven instancias pequeñas exactamente mediante su propia
búsqueda acotada — enumerando órdenes factibles-en-precedencia en un caso, branch-and-bound
de diagrama-de-decisión en el otro —, alzando UnsupportedCapabilityError cuando la
instancia excede el conteo de tareas soportado.
| Solver | Método | Backend | Extra | Comercial |
|---|---|---|---|---|
ortools-cp-sat | CP-SAT | ortools | exact | no |
pulp-milp | MILP / MIP | pulp | exact | no |
branch-and-bound | branch-and-bound / cut | ortools | exact | no |
logic-based-benders-decomposition | descomposición de Benders basada-en-lógica | pulp | exact | no |
exhaustive-enumeration | enumeración exhaustiva | nativo (sin backend) | — | no |
decision-diagram-sequencing | branch-and-bound de diagrama-de-decisión | nativo (sin backend) | — | no |
gurobi-exact | MILP / MIP | gurobipy | exact-commercial | sí |
El puñado exacto público es el conjunto abierto representativo — CP-SAT, MILP,
branch-and-bound, y descomposición de Benders basada-en-lógica — más los dos solvers nativos
acotados y el envoltorio de Gurobi genuinamente invocante.
El envoltorio comercial de Gurobi permanece detrás del extra exact-commercial, nunca se
empaqueta, y lleva una nota de licencia explícita; hay disponible una licencia académica. Un
pool más amplio de backends opcionales permanece registrado para uso interno.
Capa de selección y aprendizaje
La capa de selección clasifica solvers para un problema sin jamás afirmar un solver
globalmente mejor. Consume un registro SelectionFeatures — difficulty, heterogeneity,
objective_conflict, uncertainty, dynamism, y solver_sensitivity — y metadatos
públicos de solver, y devuelve filas SolverRecommendation clasificadas. Cada recomendación
lleva un RecommendationSource (metadata o learned-model), un ConfidenceLabel, y notas
de limitación explícitas, de modo que una recomendación de metadatos nunca se confunde con
una aprendida.
FEATURE_ORIGIN rastrea cada característica hasta la métrica de caracterización de benchmark
que lee; el consumidor mapea las métricas de caracterización de dispatchatlas.bench en el
contrato de características, de modo que dispatchatlas.solve aún importa
dispatchatlas.core solamente. Se envían dos selectores: RuleBasedSelector clasifica desde
capacidades declaradas y caracterización sola (una recomendación de metadatos), y
SupervisedSelector clasifica desde un corpus etiquetado por un modelo determinista de
vecino-más-cercano ponderado-por-distancia (una recomendación de modelo-aprendido).
El selector supervisado reporta generalización fuera-de-muestra, nunca el ajuste de
entrenamiento. El protocolo de validación-cruzada particiona un corpus etiquetado de modo que
ninguna instancia, ninguna familia de benchmark, y ningún registro de caracterización
aparezca en ambas particiones de entrenamiento y de prueba (partition_by_families,
leave_one_family_out, leakage_report), entrena sobre las familias restantes, y puntúa la
familia retenida (held_out_generalization, cross_validate). Su confianza se eleva por
encima de solo-metadatos solo cuando una evaluación retenida libre-de-fuga lo respalda.
learning_interface_catalog() registra siete interfaces de aprendizaje e híbridas nombradas
— selección de algoritmo supervisada, búsqueda asistida-por-sustituto, hooks de
aprendizaje-por-refuerzo, hiper-heurísticas, reparación guiada-por-política, inicialización
aprendida, y una línea-base solo-de-benchmark. Cada una declara una LearningEvidencePolicy
(datos de entrenamiento, controles de fuga, reproducibilidad, clase de evidencia,
elegibilidad de nivel-de-evidencia). Dos están implementadas aquí; las otras cinco son
interfaces diferidas registradas cuya realización está condicionada a las campañas
comparativas que producen datos de entrenamiento. Los backends de estimador pesados
permanecen detrás del extra opcional learning y se prueban por raíz de importación, nunca
se importan durante la importación del paquete; la ausencia alza
MissingOptionalDependencyError mientras el respaldo determinista permanece disponible.
Salvaguardas de rendimiento
La puntuación por lotes es explícita mediante BatchScoringProfile. El kernel actual usa un
respaldo de biblioteca-estándar y registra ese respaldo en los diagnósticos. Esto mantiene la
API lista para kernels vectorizados o acelerados mientras preserva una ruta probada y
portátil.