Sistema de solvers
dispatchatlas.solve detém os metadados de solvers, a seleção, a construção de
escalonamentos, o reparo, as salvaguardas de desempenho, as famílias de linha-base, os
adaptadores opcionais, e a família NDSO.
O pacote importa apenas dispatchatlas.core. Os testes de integração de fumaça com
benchmarks vivem em tests/solve/ para que o pacote de runtime não dependa de geradores
de benchmarks concretos.
Exemplo executável: examples/compare_solvers.py escalona uma coorte de solvers em paralelo e a ancora com um ótimo exato comprovado.
Registro
SolverRegistry armazena fábricas de solvers sem-estado com metadados ricos:
- rótulos de capacidade como
capacity-aware,precedence-aware,repair,local-search, endso - objetivos suportados como
makespan,energy, ecost - restrições declaradas expressas por meio de rótulos de capacidade
- critérios de parada padrão
- comportamento de replay determinístico ou estocástico-semeado
- codificação de solução (
permutation,mapping,assignment, ounative) - declarações de dependência opcionais e divulgação de backend-comercial
- visibilidade de nível-de-evidência para exportações escalonadas
- uma citação canônica, ou uma justificativa explícita de citação-não-aplicável
Cada família de solver nomeada carrega uma citação que falha fechando: uma família com uma origem seminal canônica que omite sua referência não pode ser construída, e uma família sem uma única origem canônica registra a razão em vez de fabricar uma.
from dispatchatlas.solve import SolverCapability, default_solver_registry
registry = default_solver_registry()
metaheuristics = registry.select(
required_capabilities=(SolverCapability.METAHEURISTIC,),
objective="makespan",
)Catálogo do registro
Cada solver do registro, em uma tabela ordenável e pesquisável. A tabela e seus totais são
gerados a partir de default_solver_registry(), de modo que as contagens abaixo são
contáveis a partir das próprias linhas. Um gráfico de cobertura de capacidades acima da
tabela resume quantos solvers do registro declaram cada capacidade declarada.
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.
Aplicabilidade do solver
Quais solvers se aplicam a qual família de benchmark, lido da matriz de aplicabilidade. Cada célula é aplicabilidade declarada, nunca uma alegação de desempenho: células verificadas citam uma campanha pública, citação ou teste nomeado, e células aproximadas são derivadas das capacidades declaradas do solver e das características da família de benchmark. A tabela abaixo é gerada a partir do pacote público de aplicabilidade, portanto seus totais de status são contáveis a partir das próprias linhas.
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.
Linhas-base de despacho
As linhas-base determinísticas empacotadas são solvers construtivos de escalonamento-por-lista. Cada um controla a ordem de tarefas; o construtor serial honra as demandas de recurso declaradas de cada tarefa e atribui cada tarefa ao seu recurso demandado de disponibilidade-mais-cedo. Cada família nomeia sua referência seminal canônica.
| Solver | Base de prioridade | Referência canônica |
|---|---|---|
earliest-start | ordem topológica de entrada | não aplicável (linha-base de identidade) |
shortest-processing-time | tarefa de menor duração primeiro | Smith (1956) |
longest-processing-time | tarefa de maior duração primeiro | Graham (1969) |
earliest-deadline | deadline mais cedo primeiro (consciente-de-deadline) | Jackson (1955) |
earliest-finish-time | fim alcançável mais cedo primeiro | Topcuoglu et al. (2002) |
minimum-slack | menor folga de escalonamento primeiro | Conway, Maxwell & Miller (1967) |
greedy-completion | conclusão consciente-do-estado mais cedo primeiro | Graham (1966) |
apparent-tardiness-cost | maior índice de custo-de-atraso-aparente primeiro (consciente-de-deadline) | Vepsalainen & Morton (1987) |
Famílias de despacho aposentadas
As famílias de mapeamento-de-recursos são registradas explicitamente em vez de dobradas silenciosamente em um tipo genérico. Elas controlam a atribuição de recursos, não a ordem de tarefas, e o construtor serial respeitoso-da-demanda não expõe nenhuma decisão de mapeamento livre sob o modelo de problema núcleo atual:
- Mapeamento de recursos (
olb,met,mct,round-robin,load-balanced): o construtor atribui cada tarefa ao seu recurso declarado, de modo que essas heurísticas não têm grau de liberdade realizável; o mapeamento consciente-do-tempo-de-execução é propriedade do trabalho de objetivos e restrições, não desta base. - Rótulos de tipo ausentes (
type-aware,domain-aware): requerem rótulos de tipo-de-tarefa e tipo-de-recurso que o modelo de problema núcleo atual não carrega.
retired_dispatching_families() retorna o livro-razão completo com justificativa e citação
por-família.
Escalonadores de lista baseados em posto
Três escalonadores de lista conscientes-de-heterogeneidade compartilham uma forma de duas-fases: uma fase de priorização estática classifica cada tarefa sobre o DAG de precedência a partir de tempos-de-execução médios e custos de comunicação, e uma fase de seleção-de-processador vincula cada tarefa em ordem de prioridade por meio da regra de fim-mais-cedo do construtor serial. Os tempos-de-execução por-recurso vêm dos modos de execução declarados de uma tarefa moldável, e uma tarefa rígida degenera para a especialização homogênea documentada.
| Solver | Base de prioridade | Referência canônica |
|---|---|---|
heft | posto ascendente | Topcuoglu, Hariri & Wu (2002) |
cpop | posto ascendente-mais-descendente combinado, tarefas de caminho-crítico primeiro | Topcuoglu, Hariri & Wu (2002) |
peft | posto de tabela-de-custo-otimista | Arabnejad & Barbosa (2014) |
Regras de mapeamento do conjunto-pronto
Três regras de mapeamento em lote pontuam cada tarefa pronta-em-precedência por sua conclusão
mais cedo sobre suas vinculações candidatas, e então mapeiam uma tarefa por passo. As regras
publicadas mapeiam um lote de tarefas independentes; aqui o lote é o conjunto
pronto-em-precedência, de modo que as regras se estendem a cargas-de-trabalho dependentes e se
reduzem ao comportamento publicado em instâncias de tarefas-independentes. Essas famílias
deixaram o livro-razão aposentado para registro de primeira-classe uma vez que os
TaskSpec.modes moldáveis tornaram representável sua matriz de conclusão-esperada por-máquina.
| Solver | Base de prioridade | Referência canônica |
|---|---|---|
min-min | menor melhor-conclusão a seguir | Ibarra & Kim (1977); Braun et al. (2001) |
max-min | maior melhor-conclusão a seguir | Ibarra & Kim (1977); Braun et al. (2001) |
sufferage | maior lacuna de conclusão segunda-melhor-menos-melhor a seguir | Maheswaran et al. (1999) |
Linhas-base de guloso-iterado, tabu, e RCPSP
Três métodos publicados de solução-única buscam o espaço de ordem-de-tarefas
seguro-em-precedência, cada um projetando seu mecanismo canônico sobre a costura compartilhada
de ordem-execução. serial-sgs-justification é o primeiro solver de escalonamento-de-projeto
com-restrição-de-recursos (RCPSP) da plataforma.
| Solver | Mecanismo | Referência canônica |
|---|---|---|
iterated-greedy-rs | semente NEH com um laço de destruição-reconstrução e aceitação de temperatura-fixa | Ruiz & Stutzle (2007) |
critical-path-tabu | busca tabu avançada sobre movimentos de bloco de caminho-crítico | Nowicki & Smutnicki (2005) |
serial-sgs-justification | decode de esquema-de-geração-de-escalonamento serial com dupla justificação direita-depois-esquerda | Valls, Ballestin & Quintanilla (2005) |
Linhas-base metaheurísticas
As linhas-base metaheurísticas semeadas representativas compartilham os mesmos operadores de factibilidade, reparo, pontuação, e busca-local, cada uma com sua referência canônica: algoritmo genético (Holland 1975), recozimento simulado (Kirkpatrick et al. 1983), colônia de formigas (Dorigo, Maniezzo & Colorni 1996), enxame de partículas (Kennedy & Eberhart 1995), e evolução diferencial (Storn & Price 1997).
Solvers de adaptador codificado
A otimização por enxame de partículas com aprendizado abrangente e a evolução diferencial adaptativa por histórico-de-sucessos buscam um vetor contínuo de valores-reais com um componente por tarefa. Cada núcleo é genérico sobre um objetivo contínuo, de modo que seu comportamento de convergência é validado diretamente sobre um benchmark contínuo, e é vinculado ao problema de escalonamento por meio de um adaptador de codificação que decodifica um vetor em uma ordem de tarefas factível-em-precedência.
| Solver | Inspiração | Adaptação | Codificação |
|---|---|---|---|
clpso | Enxame de partículas com aprendizado abrangente (Liang et al. 2006) | Enxame contínuo decodificado a uma ordem de precedência | random-key |
d-clpso | Enxame de partículas com aprendizado abrangente (Liang et al. 2006) | Adaptador discreto sobre o decode de menor-valor-de-posição | spv |
lshade | DE adaptativa por histórico-de-sucessos com redução linear de população (Tanabe & Fukunaga 2014) | Evolução diferencial contínua decodificada a uma ordem de precedência | random-key |
d-lshade | DE adaptativa por histórico-de-sucessos com redução linear de população (Tanabe & Fukunaga 2014) | Adaptador discreto sobre o arredondamento por posto-inteiro | rounding |
CLPSO aprende cada dimensão de um exemplar de aprendizado-abrangente em vez de um único melhor-global, de modo que a melhor aptidão do enxame melhora monotonicamente sobre uma bacia unimodal. L-SHADE adapta as memórias de cruzamento e fator-de-escala de seu histórico de sucessos e encolhe a população linearmente até um mínimo de quatro indivíduos. Ambos reportam uma trajetória de convergência, e um teste de correção-de-convergência falha quando a trajetória observada contradiz o comportamento de referência publicado, separado das verificações de reprodutibilidade-de-semente.
Esses solvers são otimizadores contínuos adaptados a um domínio discreto por meio de uma ponte de codificação; eles não são reimplementações exatas de nenhum código anterior, e nenhuma afirmação de desempenho é feita antes de as campanhas comparativas rodarem.
Adaptadores de codificação
Cada codificação contínua-para-discreta nomeada é um adaptador distinto com uma política de reparo explícita, de modo que nenhuma codificação é dobrada silenciosamente em um decodificador genérico. Cada adaptador repara sua ordem decodificada em uma ordem factível-em-precedência e registra se o reparo disparou.
| Adaptador | Transferência | Regra de decode | Estado de citação |
|---|---|---|---|
random-key | identidade | ordenar por chave limitada | canônica (Bean 1994) |
spv | identidade | menor valor de posição | canônica (Tasgetiren et al. 2007) |
rounding | identidade | slots de posto inteiro | não-aplicável |
sigmoid | sigmoide em S | sorteio probabilístico ponderado | canônica (Kennedy & Eberhart 1997) |
v-shaped | magnitude em V | sorteio probabilístico ponderado | canônica (Mirjalili & Lewis 2013) |
tanh | tangente hiperbólica deslocada | sorteio probabilístico ponderado | canônica (Mirjalili & Lewis 2013) |
Os decodes determinísticos (random-key, spv, rounding) ignoram a fonte aleatória; os
decodes de função-de-transferência consomem uma fonte semeada e se replicam sob uma semente
fixa. O adaptador rounding registra citação-não-aplicável porque o arredondamento por
posto ao-inteiro-mais-próximo é uma discretização genérica sem uma única origem seminal
canônica.
Conjunto de competidores diversificado
O conjunto de competidores diversificado amplia a comparação além das linhas-base representativas com um pequeno punhado de pares recentes e fortes, cada um um solver nomeado com sua referência de texto-completo projetada sobre o espaço de decisão de somente-ordem, em vez de uma lista volumosa de linhas-base clássicas. Um par permanece no campo público apenas quando supera uma barra de força-de-veículo: publicado dentro da janela de vigência pós-2020 em um veículo indexado e revisado-por-pares, com o nível do veículo registrado para que um leitor o pondere por evidência em vez de por prestígio.
| Solver | Mecanismo | Veículo | Citação |
|---|---|---|---|
epso | Enxame com inicialização-enviesada-por-carga com coleta de caminhos | Electronics (MDPI), 2023 — indexado | Anbarkhan & Rakrouki (2023) |
adpso | Busca por enxame com inércia descendente adaptativa-ao-sucesso | Sensors (MDPI), 2022 — indexado | Nabi et al. (2022) |
ccgp | Coevolução cooperativa de árvores de regras-de-prioridade | Computers & Operations Research (Elsevier), 2024 — OR de primeiro-nível | Zaki et al. (2024) |
Cada par carrega forças, ressalvas, e uma classe de evidência de linha-base-executável em seus metadados para que o recomendador possa explicar por que um solver se ajusta a um contexto. Um conjunto mais amplo de linhas-base clássicas — algoritmos genéticos de chave-inteira, chave-aleatória-enviesada, e estimação-de-distribuição, e buscas de grande-vizinhança, gulosas-iteradas, tabu, vizinhança-variável, e meméticas — permanece registrado para comparação interna mas é mantido fora do campo público, já que as heurísticas representativas já carregam seu sinal de mecanismo. Nenhuma afirmação de desempenho é feita antes de as campanhas comparativas rodarem.
Âncora de vigência
O conjunto de competidores e trabalho-relacionado é posicionado contra o trabalho da década-atual por meio de uma âncora de vigência pós-2020: Karimi-Mamaghan, Mohammadi, Pasdeloup, e Meyer (2023, aprender a selecionar operadores via Q-learning integrado em greedy iterado para o flowshop de permutação, European Journal of Operational Research 304(3):1296-1330, doi:10.1016/j.ejor.2022.03.054) e o algoritmo evolutivo multi-objetivo colaborativo dirigido-por-indicador de 2024 IEEE Transactions on Evolutionary Computation para o escalonamento de grupos de flowshop distribuído (doi:10.1109/TEVC.2023.3339558).
Competidores multi-objetivo
Dois competidores de Pareto evoluem uma população de ordens de tarefas seguras-em-precedência
sobre um vetor multi-objetivo, distintos da superfície de muitos-objetivos nsga3. nsga2 é
o competidor baseado-em-dominância — ordenação não-dominada rápida com desempate por
distância-de-aglomeração — e moead é o contrapeso baseado-em-decomposição, dividindo o
problema em subproblemas escalares de Tchebycheff ao longo de uma grade estruturada de pesos
no simplex e substituindo os incumbentes através da vizinhança de peso-mais-próximo de cada
subproblema.
| Solver | Mecanismo | Referência canônica |
|---|---|---|
nsga2 | Pareto baseado-em-dominância: ordenação não-dominada rápida, distância-de-aglomeração | Deb et al. (2002) |
moead | Pareto baseado-em-decomposição: escalarização de Tchebycheff sobre uma grade de pesos no simplex | Zhang & Li (2007) |
Competidor de muitos-objetivos
nsga3 é o competidor de muitos-objetivos nomeado (Deb & Jain 2014,
doi:10.1109/TEVC.2013.2281535), distinto da superfície de competidor bi-objetivo. Mantém
uma população sobre ordens de tarefas seguras-em-precedência, avalia cada ordem em um vetor
multi-objetivo (makespan, atraso, e equidade de carga), e sobrevive a cada geração por uma
seleção de nichamento-por-pontos-de-referência sobre os pontos de referência estruturados de
Das & Dennis no simplex unitário. O design de pontos-de-referência, a associação de soluções
à sua direção de referência mais próxima, e a seleção de contagem-de-nicho são a assinatura
algorítmica; o solver declara a capacidade many-objective junto a multi-objective para
que uma campanha possa selecioná-lo explicitamente.
Correspondência de capacidades
SolverRegistry.select corresponde solvers por capacidade, restrição, e objetivo. Os
requisitos de capacidade e restrição são ambos expressos como rótulos de capacidade e
correspondidos como uma conjunção: uma campanha de muitos-objetivos que também precisa de
consciência-de-deadline passa required_capabilities=(SolverCapability.MANY_OBJECTIVE,) e
required_constraints=(SolverCapability.DEADLINE_AWARE,), e o registro retorna apenas
solvers que declaram ambas. Um filtro objective restringe ainda mais o resultado a solvers
que declaram suporte para aquele objetivo nomeado.
Família NDSO
A família NDSO é a família de solver de codificação-nativa do registro: busca diretamente
sobre escalonamentos factíveis. Cada escalonamento que produz é factível por construção (um
construtor de validade-por-design constrói uma ordem respeitosa-da-precedência a cada
passo), de modo que a família carrega a codificação native e nunca executa um passo de
codificar/decodificar nem uma passada de reparo. A família compõe um pequeno conjunto de
mecanismos nomeados:
- Matriz de confiança — um armazenamento esparso de confiança aprendida por célula (posição, tarefa), atualizado conforme os melhores escalonamentos reforçam suas células.
- Votação ponderada-por-confiança — sintetiza o escalonamento elite votando através da população ponderada pela Matriz de confiança; a variante rápida usa em vez disso um voto majoritário não-ponderado.
- Escalonamentos de quantidade-e-qualidade — o escalonamento de Quantidade define quanto um candidato muda; o escalonamento de Qualidade define de qual fonte de orientação ele aprende.
- Orientação de três-fontes — um candidato aprende da elite sintetizada (exploração- produtiva), um par (diversidade), ou uma fonte de conhecimento-desaparecido (exploração radical).
- Coeficiente adaptativo unificado — um escalonamento não-linear desloca a família da exploração para a exploração-produtiva e impulsiona tanto a sensibilidade quanto o foco-de-aprendizado; a variante rápida o fixa a um valor fixo.
| Variante | Composição |
|---|---|
ndso-core | Votação ponderada-por-confiança, coeficiente adaptativo, orientação de três-fontes |
ndso-fast | síntese por voto-majoritário, coeficiente fixo, fonte de orientação única |
ndso-summit | Conselho Inter-Enxame coordenando vários enxames com síntese abrangente |
Conselho Inter-Enxame
A variante ndso-summit é a composição de qualidade: roda vários enxames em paralelo e os
coordena através de um conselho. Cada enxame compõe os mecanismos núcleo sobre sua própria
população; o conselho Inter-Enxame mantém esses enxames trabalhando como uma única busca em
vez de várias execuções isoladas e sintetiza seus resultados em uma única elite abrangente —
o escalonamento por trás do qual toda a cúpula se posiciona. O conselho é o que distingue a
variante à primeira vista: ndso-core e ndso-fast buscam cada um com uma população,
enquanto ndso-summit é a composição construída para busca multi-enxame coordenada.
O comportamento de coordenação do conselho e os diagnósticos por-enxame são configuráveis, e cada escalonamento que produz permanece factível por construção.
Mapa de ablação
O mapa de ablação enumera uma configuração isolante por mecanismo nomeado para que a análise posterior possa atribuir a contribuição de cada mecanismo. As entradas intra-enxame cada uma desabilitam um interruptor núcleo — a Matriz de confiança, a Votação ponderada-por-confiança, o escalonamento de Quantidade, o escalonamento de Qualidade, a estrutura de orientação multi-fonte, a fonte par, a fonte de conhecimento-desaparecido, e o coeficiente adaptativo. As entradas de coordenação cada uma desabilitam um parâmetro do conselho — a coordenação Intra- versus Inter-Enxame e a síntese abrangente. Cada entrada declara o piso de contagem-de-execuções no qual a camada de análise amostra sua comparação e nomeia os testes estatísticos que essa camada aplica (um teste de significância não-paramétrico pareado, um post-hoc de posto-médio de Friedman com uma correção de comparação-múltipla de Holm, e um tamanho-de-efeito de delta-de-Cliff). A comparação amostrada é materializada pelo motor de experimentos posterior; o runner em-processo prova que cada isolamento é factível.
Um filtro de exportação escalonado governa quais mecanismos um escopo de relatório pode expor: o escopo base expõe apenas os mecanismos fundacionais, e um gate fail-closed levanta em vez de vazar um mecanismo mais-rápido ou de maior-qualidade sob um escopo base, de modo que os escopos fundacional e rápido não podem expor os mecanismos somente-de-conselho. Os diagnósticos de convergência — diversidade de população, entropia da Matriz-de-confiança, razão de exploração, carga de recursos, temporização, e o traço de melhoria — são opcionais e não adicionam sobrecarga quando desabilitados, e o conselho exporta um manifesto JSON que a camada de análise ingere sem importar nenhum tipo de solver.
Adaptadores exatos
Os adaptadores exatos tomam uma de duas formas. Os adaptadores de backend-opcional declaram
uma dependência opcional e verificam sua raiz de importação em runtime; se o backend está
ausente eles levantam MissingOptionalDependencyError com o nome do extra, o propósito, a
flag comercial, e a nota de licenciamento em vez de importar uma dependência pesada durante
a importação do pacote. Os adaptadores nativo-limitados não carregam dependência de
terceiros e resolvem instâncias pequenas exatamente por sua própria busca limitada —
enumerando ordens factíveis-em-precedência em um caso, branch-and-bound de
diagrama-de-decisão no outro —, levantando UnsupportedCapabilityError quando a instância
excede a contagem de tarefas suportada.
| Solver | Método | Backend | Extra | Comercial |
|---|---|---|---|---|
ortools-cp-sat | CP-SAT | ortools | exact | não |
pulp-milp | MILP / MIP | pulp | exact | não |
branch-and-bound | branch-and-bound / cut | ortools | exact | não |
logic-based-benders-decomposition | decomposição de Benders baseada-em-lógica | pulp | exact | não |
exhaustive-enumeration | enumeração exaustiva | nativo (sem backend) | — | não |
decision-diagram-sequencing | branch-and-bound de diagrama-de-decisão | nativo (sem backend) | — | não |
gurobi-exact | MILP / MIP | gurobipy | exact-commercial | sim |
O punhado exato público é o conjunto aberto representativo — CP-SAT, MILP,
branch-and-bound, e decomposição de Benders baseada-em-lógica — mais os dois solvers nativos
limitados e o invólucro de Gurobi genuinamente invocante.
O invólucro comercial de Gurobi permanece atrás do extra exact-commercial, nunca é
empacotado, e carrega uma nota de licenciamento explícita; há uma licença acadêmica
disponível. Um pool mais amplo de backends opcionais permanece registrado para uso interno.
Camada de seleção e aprendizado
A camada de seleção classifica solvers para um problema sem nunca afirmar um solver
globalmente melhor. Consome um registro SelectionFeatures — difficulty, heterogeneity,
objective_conflict, uncertainty, dynamism, e solver_sensitivity — e metadados
públicos de solver, e retorna linhas SolverRecommendation classificadas. Cada recomendação
carrega um RecommendationSource (metadata ou learned-model), um ConfidenceLabel, e
notas de limitação explícitas, de modo que uma recomendação de metadados nunca é confundida
com uma aprendida.
FEATURE_ORIGIN rastreia cada característica até a métrica de caracterização de benchmark
que lê; o consumidor mapeia as métricas de caracterização de dispatchatlas.bench no
contrato de características, de modo que dispatchatlas.solve ainda importa apenas
dispatchatlas.core. Dois seletores são enviados: RuleBasedSelector classifica a partir
de capacidades declaradas e caracterização apenas (uma recomendação de metadados), e
SupervisedSelector classifica a partir de um corpus rotulado por um modelo determinístico
de vizinho-mais-próximo ponderado-por-distância (uma recomendação de modelo-aprendido).
O seletor supervisionado reporta generalização em-reserva, nunca ajuste de treinamento. O
protocolo de validação-cruzada particiona um corpus rotulado de modo que nenhuma instância,
nenhuma família de benchmark, e nenhum registro de caracterização apareça em ambas as
partições de treinamento e de teste (partition_by_families, leave_one_family_out,
leakage_report), treina sobre as famílias restantes, e pontua a família em-reserva
(held_out_generalization, cross_validate). Sua confiança sobe acima de somente-metadados
apenas quando uma avaliação em-reserva livre-de-vazamento a respalda.
learning_interface_catalog() registra sete interfaces de aprendizado e híbridas nomeadas —
seleção de algoritmo supervisionada, busca assistida-por-substituto, ganchos de
aprendizado-por-reforço, hiper-heurísticas, reparo guiado-por-política, inicialização
aprendida, e uma linha-base somente-de-benchmark. Cada uma declara uma
LearningEvidencePolicy (dados de treinamento, controles de vazamento, reprodutibilidade,
classe de evidência, elegibilidade de nível-de-evidência). Duas estão implementadas aqui; as
outras cinco são interfaces diferidas registradas cuja realização está condicionada às
campanhas comparativas que produzem dados de treinamento. Os backends de estimador pesados
permanecem atrás do extra opcional learning e são sondados por raiz de importação, nunca
importados durante a importação do pacote; a ausência levanta
MissingOptionalDependencyError enquanto o fallback determinístico permanece disponível.
Salvaguardas de desempenho
A pontuação em lote é explícita por meio de BatchScoringProfile. O kernel atual usa um
fallback de biblioteca-padrão e registra esse fallback nos diagnósticos. Isso mantém a API
pronta para kernels vetorizados ou acelerados enquanto preserva um caminho testado e
portável.