{
  "artifact_hash": "5ebf82a448aa74b07330d686598622c7ad7a81d293a846c16d5f42a162c516c3",
  "artifact_type": "dispatchatlas.solver_registry",
  "evidence_class": "metadata-only",
  "group_counts": {
    "constructive": 5,
    "dispatching": 14,
    "exact": 7,
    "learning": 11,
    "metaheuristic": 47,
    "ndso": 3
  },
  "producer": "dispatchatlas.solve",
  "schema_version": "1.0",
  "solver_count": 87,
  "solvers": [
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "success-rate feedback is noisy on small swarms",
        "competitor": "adpso",
        "currency_anchor": "Sensors (MDPI), 2022",
        "encoding_adapter": "random-key",
        "evidence_class": "runnable-baseline",
        "mechanism": "swarm search with success-adaptive descending inertia",
        "strengths": "inertia tracks search progress instead of a fixed ramp",
        "venue_tier": "indexed-peer-reviewed"
      },
      "solver_id": "adpso",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "geometry estimate is noisy on tiny first fronts",
        "competitor": "age-moea-ii",
        "evidence_class": "runnable-baseline",
        "geometry": "Newton-Raphson curvature fit of the sum(x^p)=1 surface",
        "mechanism": "adaptive front-geometry estimation with geodesic survival",
        "strengths": "spread faithful to convex, linear, and concave fronts"
      },
      "solver_id": "age-moea-ii",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "mechanism": "rate-gated adjacent swaps of the incumbent order",
        "metaheuristic": "ant-colony",
        "realization": "no pheromone trail matrix or cooperating colony is implemented; the citation marks lineage, not mechanism fidelity",
        "scheduling_contract": "permutation-decode-to-schedule"
      },
      "solver_id": "ant-colony",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "apparent-tardiness-cost",
        "priority_basis": "highest apparent-tardiness-cost index first (unweighted, k=2)"
      },
      "solver_id": "apparent-tardiness-cost",
      "supported_objectives": [
        "makespan",
        "lateness",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "every member is regenerated around the best vector each iteration, so the returned order is the best observed rather than a monotone incumbent",
        "discrete_adaptation": "Abualigah, L., Diabat, A., & Abd Elaziz, M. (2021). Intelligent workflow scheduling for Big Data applications in IoT cloud computing environments. Cluster Computing, 24, 2957-2976. doi:10.1007/s10586-021-03291-7",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search whose accelerator schedule shifts from wide-scatter division and multiplication moves to tight addition and subtraction moves around the best vector as the budget elapses",
        "strengths": "the two operator pairs give a clean exploration-to-exploitation handover governed only by the iteration ratio"
      },
      "solver_id": "arithmetic-optimization",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the per-component neighbor move explores slowly on long priority vectors, so many iterations may be needed at large task counts",
        "discrete_adaptation": "Pan, Q.-K., Tasgetiren, M. F., Suganthan, P. N., & Chua, T. J. (2011). A discrete artificial bee colony algorithm for the lot-streaming flow shop scheduling problem. Information Sciences, 181(12), 2455-2468. doi:10.1016/j.ins.2009.12.025",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search with three phases per iteration: a greedy neighbor perturbation of every member toward a random peer, a fitness-weighted resample that perturbs promising members again, and a re-initialization of any member that fails to improve for a set number of trials",
        "strengths": "the fitness-weighted resample concentrates effort on promising members while the trial-limit re-initialization sustains diversity"
      },
      "solver_id": "artificial-bee-colony",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "each behaviour re-scores candidate positions, so an iteration costs several schedule evaluations per member",
        "discrete_adaptation": "Ibadi, A. M., & Rahman, R. A. (2024). Modified artificial fish swarm algorithm to solve unrelated parallel machine scheduling problem under fuzzy environment. AIMS Mathematics, 9(1), 1679-1705. doi:10.3934/math.20241679",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search where each member adopts the better of a swarm move toward nearby members' centre and a follow move toward the best nearby member, each falling back to a local random probe when its move condition fails",
        "strengths": "the crowding test spreads members across several basins rather than collapsing them onto one centre"
      },
      "solver_id": "artificial-fish-swarm",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "constructive",
      "notes": {
        "beam_width": "3",
        "mechanism": "breadth-bounded constructive search",
        "priority_basis": "best topological completion score"
      },
      "solver_id": "beam-search",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "exact",
      "notes": {
        "commercial": "false",
        "dependency": "ortools",
        "dependency_extra": "exact",
        "dependency_purpose": "branch-and-bound / branch-and-cut adapter",
        "dependency_requirement": "optional",
        "exact_method": "branch-and-bound",
        "license_note": "OR-Tools is Apache-2.0 licensed; no commercial terms.",
        "optimality_verification": "solves-to-optimal-verified"
      },
      "solver_id": "branch-and-bound",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "rule evaluation cost grows with population and graph size",
        "competitor": "ccgp",
        "currency_anchor": "Computers & Operations Research (Elsevier), 2024",
        "evidence_class": "runnable-baseline",
        "mechanism": "cooperative coevolution of priority-rule trees",
        "strengths": "learns instance-feature priority rules instead of orders",
        "venue_tier": "top-tier-operations-research"
      },
      "solver_id": "ccgp",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "decode_rule": "random-key",
        "encoded_solver": "clpso",
        "encoding_adapter": "random-key",
        "repair_policy": "topological-normalize",
        "transfer": "identity"
      },
      "solver_id": "clpso",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the random-key encoding is a documented adaptation of the continuous method to the discrete order space",
        "encoding": "tasks sequenced by ascending random key, repaired to precedence feasibility",
        "evidence_class": "runnable-baseline",
        "mechanism": "covariance-matrix-adaptation evolution strategy over a random-key encoding of the task order",
        "recombination": "weighted mean of the best mu offspring with rank-one and rank-mu covariance updates",
        "step_size_control": "cumulative step-size adaptation with the h_sigma stall guard",
        "strengths": "adapts an anisotropic search distribution to the objective landscape without hand-tuned scaling"
      },
      "solver_id": "cma-es",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "mechanism": "combined upward-and-downward rank list scheduling",
        "priority_basis": "upward plus downward rank; critical tasks first",
        "rank_basis": "combined-rank",
        "realization": "rank-ordered dispatch; resource and mode binding by the serial constructor's earliest-finish rule, a documented variant of the published critical-path-processor pinning"
      },
      "solver_id": "cpop",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "path relinking between elite solutions is not realized; a documented reduction of the published method",
        "competitor": "critical-path-tabu",
        "evidence_class": "runnable-baseline",
        "mechanism": "critical-path block-boundary tabu search",
        "relates_to": "tabu-search: the mechanism-diversified competitor realization",
        "strengths": "moves concentrate on the makespan-defining chain"
      },
      "solver_id": "critical-path-tabu",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the Levy move is greedy per member, so progress depends on the incumbent and the step scale rather than a monotone population",
        "discrete_adaptation": "Marichelvam, M. K., Prabaharan, T., & Yang, X.-S. (2014). Improved cuckoo search algorithm for hybrid flow shop scheduling problems to minimize makespan. Applied Soft Computing, 19, 93-101. doi:10.1016/j.asoc.2014.02.005",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search that steps every member toward the best-so-far solution by a heavy-tailed Levy displacement, keeps the step only when it improves, and re-initializes a fixed fraction of the worst members each iteration",
        "strengths": "the heavy-tailed step occasionally makes a large jump that escapes local optima while the discovery step sustains diversity"
      },
      "solver_id": "cuckoo-search",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "decode_rule": "spv",
        "encoded_solver": "d-clpso",
        "encoding_adapter": "spv",
        "repair_policy": "topological-normalize",
        "search_domain": "[-1.0, 1.0]",
        "transfer": "identity"
      },
      "solver_id": "d-clpso",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "hybrid_of": "differential-evolution + particle-swarm",
        "scheduling_contract": "permutation-decode-to-schedule",
        "scheduling_variant": "d-depso"
      },
      "solver_id": "d-depso",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "decode_rule": "rounding",
        "encoded_solver": "d-lshade",
        "encoding_adapter": "rounding",
        "repair_policy": "topological-normalize",
        "transfer": "identity"
      },
      "solver_id": "d-lshade",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "faithful dual-attention architecture -- the operation message attention block over the precedence window and the machine message attention block over the machine-competition graph -- adapting the published amortized PPO-clip training to single-instance REINFORCE over seeded rollouts, greedy order decode, and the platform's uniform per-machine durations that collapse the (operation, machine) action to the operation order the serial decoder scores",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "policy-gradient dual-attention construction",
        "mechanism": "dual-attention network + policy-gradient PDR scheduler",
        "optional_extra": "learning",
        "policy_basis": "dual-attention network with an operation message attention block over the precedence window and a machine message attention block over the machine-competition graph, scoring compatible operation-machine pairs for a size-agnostic dispatching policy",
        "training": "single-instance REINFORCE over seeded rollouts with a terminal normalized-improvement reward and a mean-return baseline"
      },
      "solver_id": "dan-dual-attention",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "faithful Decima two-level DAG message passing and REINFORCE policy gradient; the composite (node, parallelism-limit) action collapses to node selection because the platform exposes no parallelism-limit control, per-node critical-path features replace the reference executor and job-level features that have no platform counterpart, and single-instance training with a greedy decode and a terminal normalized schedule-score reward adapt the published cross-instance training and time-in-system reward to the platform's per-instance solve contract",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "policy-gradient GNN construction (REINFORCE)",
        "mechanism": "Decima two-level DAG-GNN + REINFORCE construction scheduler",
        "optional_extra": "learning",
        "policy_basis": "two-level DAG message passing with per-node, per-DAG, and global summaries",
        "training": "single-instance REINFORCE over seeded rollouts with a running-mean baseline and a terminal normalized-improvement reward"
      },
      "solver_id": "decima-dag-rl",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "exact",
      "notes": {
        "commercial": "false",
        "exact_method": "decision-diagram",
        "license_note": "Native pure-Python decision-diagram branch and bound; no third-party backend and no licensing constraints.",
        "native_task_cap": "12",
        "optimality_verification": "solves-to-optimal-verified"
      },
      "solver_id": "decision-diagram-sequencing",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "mechanism": "positional nudge toward a uniformly drawn donor order",
        "metaheuristic": "differential-evolution",
        "realization": "a discrete recombination, not the cited difference-vector arithmetic; the citation marks lineage, not mechanism fidelity",
        "scheduling_contract": "permutation-decode-to-schedule"
      },
      "solver_id": "differential-evolution",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "earliest-deadline",
        "priority_basis": "earliest declared deadline first (EDD / deadline-aware)"
      },
      "solver_id": "earliest-deadline",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "earliest-finish-time",
        "priority_basis": "earliest reachable finish first (release + duration)"
      },
      "solver_id": "earliest-finish-time",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "input-order",
        "priority_basis": "input order"
      },
      "solver_id": "earliest-start",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "path gathering can over-constrain loosely coupled graphs",
        "competitor": "epso",
        "currency_anchor": "Electronics (MDPI), 2023",
        "encoding_adapter": "random-key",
        "evidence_class": "runnable-baseline",
        "mechanism": "workload-biased-initialization swarm with path gathering",
        "strengths": "quality-seeded swarm over a reduced particle dimension",
        "venue_tier": "indexed-peer-reviewed"
      },
      "solver_id": "epso",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "exact",
      "notes": {
        "commercial": "false",
        "exact_method": "exhaustive-enumeration",
        "license_note": "Native pure-Python exact enumeration; no third-party backend and no licensing constraints.",
        "native_task_cap": "8",
        "optimality_verification": "solves-to-optimal-verified"
      },
      "solver_id": "exhaustive-enumeration",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the pairwise attraction is quadratic in the population size, and positions move unconditionally so the returned order is the best observed rather than a monotone incumbent",
        "discrete_adaptation": "Sayadi, M. K., Hafezalkotob, A., & Naini, S. G. J. (2013). Firefly-inspired algorithm for discrete optimization problems: An application to manufacturing cell formation. Journal of Manufacturing Systems, 32(1), 78-84. doi:10.1016/j.jmsy.2012.06.004",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search attracting every priority vector toward every brighter member by a distance-decaying step plus a randomization term that shrinks over the budget",
        "strengths": "distance-decaying attraction lets subgroups converge on several basins before the randomization term fades"
      },
      "solver_id": "firefly-algorithm",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "faithful HGNN architecture; single-instance training, greedy order decode, and uniform per-machine durations adapt the published amortized FJSP scheduler to the platform's per-instance task-order model",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "policy-gradient GNN construction (PPO)",
        "mechanism": "heterogeneous-GNN + PPO construction scheduler",
        "optional_extra": "learning",
        "policy_basis": "heterogeneous graph attention over operations and machines",
        "training": "single-instance proximal policy optimization over seeded rollouts with a terminal normalized-improvement reward"
      },
      "solver_id": "fjsp-hgnn-drl",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "mechanism": "elite-pair order crossover with adjacent-swap mutation",
        "metaheuristic": "genetic-algorithm",
        "realization": "selection-crossover-mutation loop over a permutation population; faithful in kind to the cited scheme at baseline scale",
        "scheduling_contract": "permutation-decode-to-schedule"
      },
      "solver_id": "genetic-algorithm",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the pairwise social forces are quadratic in the population size, and positions move unconditionally each iteration; on a Largest Order Value decode the published update adds little beyond its initial population, because it replaces each position with the target plus the force sum rather than perturbing it, and the resulting displacement peaks near a tenth of the gap between adjacent priorities -- short of the separation a rank swap needs. The shortfall is scale-free in the priority span and does not close with population size, so it is a property of the method on this encoding rather than a tuning choice",
        "discrete_adaptation": "Naveen Durai, S. K., & Duraisamy, B. (2022). Hybrid Invasive Weed Improved Grasshopper Optimization Algorithm for Cloud Load Balancing. Intelligent Automation & Soft Computing, 34(1), 467-483. doi:10.32604/iasc.2022.026020",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search displacing every member by the sum of pairwise attraction/repulsion forces from all others, scaled toward the best-so-far target by a comfort coefficient that decays over the budget",
        "strengths": "the decaying comfort coefficient shrinks the repulsion zone so the swarm settles from exploration onto the target"
      },
      "solver_id": "grasshopper-optimization",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the pairwise forces are quadratic in the population size, and the velocity carries momentum that can overshoot on a coarse budget",
        "discrete_adaptation": "Choudhary, A., Gupta, I., Singh, V., & Jana, P. K. (2018). A GSA based hybrid algorithm for bi-objective workflow scheduling in cloud computing. Future Generation Computer Systems, 83, 14-26. doi:10.1016/j.future.2018.01.005",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search that gives every member a mass from its fitness, accelerates each member by the summed pairwise attractive forces of the others (each force scaling with the product of masses and decaying with separation), and integrates a velocity and position under a coefficient that shrinks over the budget",
        "strengths": "heavier better-scoring members exert more pull, so the population is drawn toward high-quality regions as the coefficient decay sharpens the search"
      },
      "solver_id": "gravitational-search",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "greedy-completion",
        "priority_basis": "state-aware earliest completion next"
      },
      "solver_id": "greedy-completion",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "positions move unconditionally each iteration, so the returned order is the best observed rather than a monotone incumbent",
        "discrete_adaptation": "Hosseini Shirvani, M. (2022). A Novel Discrete Grey Wolf Optimizer for Scientific Workflow Scheduling in Heterogeneous Cloud Computing Platforms. Scientia Iranica. doi:10.24200/sci.2022.57262.5144",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search drawing every priority vector toward the three best-ranked members with an encircling coefficient that descends linearly over the budget",
        "strengths": "the descending coefficient shifts the search from exploration to exploitation with no per-instance tuning"
      },
      "solver_id": "grey-wolf-optimizer",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the (position, task) feature and duration cost are a documented adaptation of the paper's routing-edge feature model",
        "evidence_class": "runnable-baseline",
        "feature": "a (position, task) placement whose cost is the task duration",
        "mechanism": "penalty-guided local search that augments the objective with penalties on overused placement features",
        "neighborhood": "best-improvement pairwise swaps on the augmented objective",
        "penalty_update": "the maximum-utility placement (cost over one-plus-penalty) is penalized at each local optimum",
        "strengths": "escapes local optima by discouraging the features a stuck optimum keeps reusing, without restarts"
      },
      "solver_id": "guided-local-search",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "exact",
      "notes": {
        "commercial": "true",
        "dependency": "gurobipy",
        "dependency_extra": "exact-commercial",
        "dependency_purpose": "commercial mixed-integer programming wrapper",
        "dependency_requirement": "optional",
        "exact_method": "milp",
        "license_note": "Gurobi requires a commercial license; a free academic license is available. Never bundled.",
        "optimality_verification": "solves-to-optimal-verified"
      },
      "solver_id": "gurobi-exact",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the besiege moves replace positions unconditionally, so the returned order is the best observed rather than a monotone incumbent",
        "discrete_adaptation": "Ali, A., Shah, S. A. A., Al Shloul, T., Assam, M., Ghadi, Y. Y., Lim, S., & Zia, A. (2024). Multiobjective Harris Hawks Optimization-Based Task Scheduling in Cloud-Fog Computing. IEEE Internet of Things Journal. doi:10.1109/JIOT.2024.3391024",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search whose decaying escaping-energy value switches between an exploration phase and four besiege moves around the best member, two of which compare a direct move against a Levy-flight move",
        "strengths": "the energy schedule interleaves exploration and several exploitation intensities without per-instance tuning"
      },
      "solver_id": "harris-hawks-optimization",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "mechanism": "upward-rank list scheduling",
        "priority_basis": "nonincreasing upward rank",
        "rank_basis": "upward-rank",
        "realization": "rank-ordered dispatch; resource and mode binding by the serial constructor's earliest-finish rule, the non-insertion variant of the published insertion-based earliest-finish-time selection"
      },
      "solver_id": "heft",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the pairwise indicator matrix is quadratic in the pool",
        "competitor": "ibea",
        "discrete_adaptation": "Frutos, M., Mendez, M., Tohme, F., & Broz, D. (2013). Comparison of multiobjective evolutionary algorithms for operations scheduling under machine availability constraints. The Scientific World Journal, 2013, 418396. doi:10.1155/2013/418396",
        "evidence_class": "runnable-baseline",
        "indicator": "additive epsilon indicator on normalized objectives",
        "mechanism": "binary quality-indicator fitness with the additive epsilon indicator; the least-fit member is removed and the survivors are incrementally credited with its indicator contribution",
        "strengths": "a single tunable indicator drives convergence without reference points, weights, or nondominated sorting"
      },
      "solver_id": "ibea",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "acceptance": "fixed-temperature probabilistic acceptance of non-improving sequences",
        "caveats": "acceptance pressure tracks the problem's duration scale",
        "evidence_class": "runnable-baseline",
        "mechanism": "destruction-reconstruction search from a best-insertion seed",
        "relates_to": "iterated-greedy: the mechanism-diversified competitor realization",
        "strengths": "the canonical published iterated-greedy configuration for permutation scheduling",
        "temperature_basis": "temperature_factor times mean task duration over ten, a documented adaptation of the published constant to the scalar-duration task model"
      },
      "solver_id": "iterated-greedy-rs",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "greedy replacement keeps only improving updates, so progress tracks the population's best and worst spread",
        "discrete_adaptation": "Mishra, A. K., & Shrivastava, D. (2020). A discrete Jaya algorithm for permutation flow-shop scheduling problem. International Journal of Industrial Engineering Computations, 11(3), 415-428. doi:10.5267/j.ijiec.2019.12.001",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "parameter-less population search moving each priority vector toward the best and away from the worst member",
        "strengths": "carries no algorithm-specific parameters beyond population size and iteration budget"
      },
      "solver_id": "jaya-algorithm",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "faithful Graph Isomorphism Network over the disjunctive graph under the adding-arc strategy with the scheduled-indicator and completion-lower-bound raw features; single-instance training, a one-shot initial-state embedding with a greedy order decode instead of the reference per-step re-embedding, and a terminal normalized schedule-score reward adapt the published amortized size-agnostic dispatcher to the platform's per-instance task-order model",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "policy-gradient GNN construction (PPO)",
        "mechanism": "GIN disjunctive-graph + PPO dispatching rule",
        "optional_extra": "learning",
        "policy_basis": "graph-isomorphism network over the disjunctive graph with an average-pooled size-agnostic graph embedding",
        "training": "single-instance proximal policy optimization over seeded rollouts with a terminal normalized-improvement reward"
      },
      "solver_id": "l2d-disjunctive-gnn",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "faithful DRL-guided improvement heuristic that starts from a complete feasible schedule, embeds its disjunctive graph with the topological and context-aware modules over the (p, est, lst) node features, and learns N5 critical-block moves by REINFORCE with the incumbent-improvement reward; the N5 neighborhood is realized over the platform's precedence-feasible task order as makespan-binding adjacent same-machine transpositions, and single-instance REINFORCE over a bounded improvement horizon adapts the published amortized training to the platform's per-instance task-order model",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "policy-gradient GNN improvement (REINFORCE)",
        "mechanism": "DRL-guided N5 improvement heuristic",
        "optional_extra": "learning",
        "policy_basis": "graph-neural network with a topological (GIN) module and a context-aware dual-context module over the complete-solution disjunctive graph, scoring N5 critical-block local-search moves",
        "training": "single-instance REINFORCE over the improvement rollout with the incumbent-improvement reward, keeping the best order found"
      },
      "solver_id": "l2s-improvement",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "learned_tier_disclosure": "two distinct learned representatives -- this policy-gradient priority rule and the value-based tabular Q-learning agent (rl-dispatching); no post-Decima DRL scheduler has consensus-baseline adoption",
        "mechanism": "policy-gradient learned priority dispatching rule",
        "policy_basis": "linear priority over task features",
        "training": "REINFORCE over seeded precedence-feasible rollouts"
      },
      "solver_id": "learned-priority-policy",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "exact",
      "notes": {
        "commercial": "false",
        "dependency": "pulp",
        "dependency_extra": "exact",
        "dependency_purpose": "logic-based Benders assignment-master ILP adapter",
        "dependency_requirement": "optional",
        "exact_method": "logic-based-benders",
        "license_note": "PuLP is BSD-licensed and ships the CBC open backend; the assignment master is solved through it and the per-facility scheduling subproblem is native pure Python.",
        "optimality_verification": "solves-to-optimal-verified"
      },
      "solver_id": "logic-based-benders-decomposition",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "longest-processing-time",
        "priority_basis": "longest duration first"
      },
      "solver_id": "longest-processing-time",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "decode_rule": "random-key",
        "encoded_solver": "lshade",
        "encoding_adapter": "random-key",
        "repair_policy": "topological-normalize",
        "transfer": "identity"
      },
      "solver_id": "lshade",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "each iteration costs two schedule evaluations per member (the forage move and the FADs escape)",
        "discrete_adaptation": "Chen, D., & Zhang, Y. (2023). Diversity-Aware Marine Predators Algorithm for Task Scheduling in Cloud Computing. Entropy, 25(2), 285. doi:10.3390/e25020285",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search that forages toward the best member by a Brownian phase early, a mixed Brownian/Levy phase in the middle, and a Levy phase late, escaping local optima with a fish-aggregating-device perturbation and keeping only improving moves",
        "strengths": "the phased Brownian-to-Levy schedule plus memory saving gives a monotone incumbent with a strong late-run local search"
      },
      "solver_id": "marine-predators",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "activity_selection": "network-dependent: rank by the progressive/regressive-level body rule and select 50% of the activities for intense search",
        "envelope": "classical RCPSP only: finish-start precedence with no lag, renewable resources, single minimise-makespan objective; fails closed on generalized precedence, non-makespan or maximize objectives, and moldable, gang, or partial-execution tasks",
        "evidence_class": "runnable-baseline",
        "exact_neighbourhood": "the selected subproblem is solved by the native immediate-selection branch-and-bound (Brucker et al. 1998) over the pinned sub-instance",
        "future_work": "the paper's higher-performance decomposition genetic-algorithm variant (Section 3.2.3) is not implemented; the faithful greedy-search form is realised instead",
        "mechanism": "greedy-search matheuristic: random-key sampling generates start schedules and an exact branch-and-bound re-optimises a selected activity body as a restricted neighbourhood search",
        "never_worse": "the neighbourhood search accepts only improvements over the start schedule, so the result never regresses below the best sampled start schedule; near-optimal, not exact",
        "restriction": "full forward: the non-selected activities are pinned at their current start times as a latest-start bound and the selected subproblem is searched exactly without further truncation"
      },
      "solver_id": "matheuristic-restricted-neighbourhood",
      "supported_objectives": [
        "makespan"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "degenerate_when": "tasks pin all resources through demands",
        "mechanism": "ready-set batch mapping by largest best completion",
        "priority_basis": "largest minimum completion next",
        "realization": "the precedence-ready set stands in for the published independent-task batch; candidate and committed bindings follow the serial constructor's earliest-finish rule"
      },
      "solver_id": "max-min",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "degenerate_when": "tasks pin all resources through demands",
        "mechanism": "ready-set batch mapping by smallest best completion",
        "priority_basis": "earliest minimum completion next",
        "realization": "the precedence-ready set stands in for the published independent-task batch; candidate and committed bindings follow the serial constructor's earliest-finish rule"
      },
      "solver_id": "min-min",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "minimum-slack",
        "priority_basis": "least slack first"
      },
      "solver_id": "minimum-slack",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "weight-grid resolution bounds attainable spread",
        "evidence_class": "runnable-baseline",
        "mechanism": "weighted-decomposition subproblems with neighborhood replacement",
        "strengths": "decomposition-based counterweight to dominance-based selection"
      },
      "solver_id": "moead",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the running best/worst reward normalization is a documented adaptation of UCB1's bounded-reward assumption",
        "evidence_class": "runnable-baseline",
        "mechanism": "upper-confidence-bounds-for-trees search that builds a schedule by appending precedence-ready tasks",
        "reward": "the constructed order's score is normalized to [0, 1] against the running best and worst scores for UCB1",
        "rollout": "partial orders are completed by appending uniformly random precedence-ready tasks",
        "selection": "UCB1 balances the best mean reward against the least-visited child by the exploration constant",
        "strengths": "concentrates simulations on the construction prefixes that have yielded the best schedules"
      },
      "solver_id": "monte-carlo-tree-search",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the flame memory guarantees monotone best positions, but each member's spiral is unconditional",
        "discrete_adaptation": "Abd Elaziz, M., Abualigah, L., & Attiya, I. (2021). Advanced optimization technique for scheduling IoT tasks in cloud-fog computing environments. Future Generation Computer Systems, 124, 142-154. doi:10.1016/j.future.2021.05.026",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search spiralling every member around one of the best positions in a sorted memory whose size shrinks over the budget, keeping the best positions after each spiral",
        "strengths": "the shrinking flame memory retains several elite positions early and converges onto the best late, with no tuning"
      },
      "solver_id": "moth-flame-optimization",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "ndso",
      "notes": {
        "anytime_convergence": "false",
        "coupled_rate_temperature": "true",
        "decayed_cell_reinjection": "true",
        "encoding": "natively-discrete",
        "method_variant": "ndso-core",
        "peer_guidance": "true",
        "positional_preference_model": "true",
        "preference_weighted_plurality": "true",
        "source_selection_schedule": "true",
        "three_source_guidance": "true",
        "update_magnitude_schedule": "true"
      },
      "solver_id": "ndso-core",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "ndso",
      "notes": {
        "anytime_convergence": "true",
        "coupled_rate_temperature": "true",
        "decayed_cell_reinjection": "false",
        "encoding": "natively-discrete",
        "method_variant": "ndso-fast",
        "peer_guidance": "true",
        "positional_preference_model": "true",
        "preference_weighted_plurality": "false",
        "source_selection_schedule": "true",
        "three_source_guidance": "false",
        "update_magnitude_schedule": "true"
      },
      "solver_id": "ndso-fast",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "ndso",
      "notes": {
        "coordination": "inter-swarm-council",
        "cross_swarm_confidence_weighted_voting": "true",
        "encoding": "natively-discrete",
        "method_variant": "ndso-summit",
        "overarching_elite_synthesis": "true"
      },
      "solver_id": "ndso-summit",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "constructive",
      "notes": {
        "mechanism": "nonincreasing-duration best-insertion construction",
        "priority_basis": "nonincreasing-duration insertion"
      },
      "solver_id": "neh",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "diversity pressure weakens beyond three objectives",
        "evidence_class": "runnable-baseline",
        "mechanism": "nondominated sorting with crowding-distance elitism",
        "strengths": "the default bi/tri-objective baseline in scheduling comparisons"
      },
      "solver_id": "nsga2",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "reference-point count grows with objective dimension",
        "competitor": "nsga3",
        "evidence_class": "runnable-baseline",
        "mechanism": "reference-point niching over nondominated fronts",
        "reference_point_design": "Das-Dennis structured simplex",
        "strengths": "diversity preservation in many-objective spaces"
      },
      "solver_id": "nsga3",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "group": "exact",
      "notes": {
        "commercial": "false",
        "dependency": "ortools",
        "dependency_extra": "exact",
        "dependency_purpose": "exact constraint-programming adapter",
        "dependency_requirement": "optional",
        "exact_method": "cp-sat",
        "license_note": "OR-Tools is Apache-2.0 licensed; no commercial terms.",
        "optimality_verification": "solves-to-optimal-verified"
      },
      "solver_id": "ortools-cp-sat",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "mechanism": "single-task attraction toward the global-best order",
        "metaheuristic": "particle-swarm",
        "realization": "no velocity state or personal-best memory is implemented; the citation marks lineage, not mechanism fidelity",
        "scheduling_contract": "permutation-decode-to-schedule"
      },
      "solver_id": "particle-swarm",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "mechanism": "optimistic-cost-table rank list scheduling",
        "priority_basis": "nonincreasing mean optimistic cost",
        "rank_basis": "oct-rank",
        "realization": "rank-ordered dispatch; resource and mode binding by the serial constructor's earliest-finish rule, a documented variant of the published O_EFT selection"
      },
      "solver_id": "peft",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "exact",
      "notes": {
        "commercial": "false",
        "dependency": "pulp",
        "dependency_extra": "exact",
        "dependency_purpose": "mixed-integer linear programming adapter",
        "dependency_requirement": "optional",
        "exact_method": "milp",
        "license_note": "PuLP is BSD-licensed and ships the CBC open backend.",
        "optimality_verification": "solves-to-optimal-verified"
      },
      "solver_id": "pulp-milp",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "faithful residual (shrinking, re-embedded) HGIN over unfinished operations; single-instance training, greedy order decode, terminal-objective reward with a running-mean baseline, hidden width reduced 256->128, and uniform per-machine durations adapt the published amortized job-shop scheduler to the platform's per-instance task-order model",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "policy-gradient GNN construction (REINFORCE, residual state)",
        "mechanism": "residual heterogeneous-GIN + REINFORCE construction scheduler",
        "optional_extra": "learning",
        "policy_basis": "residual heterogeneous-GIN over unfinished operations",
        "training": "single-instance REINFORCE over seeded rollouts with a terminal normalized-improvement reward and a running-mean baseline"
      },
      "solver_id": "residual-scheduling",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "value-based (tabular Q-learning)",
        "mechanism": "tabular Q-learning over dispatching-rule actions",
        "policy_basis": "tabular action-value over dispatch rules",
        "relates_to": "learned-priority-policy: the policy-gradient learned representative; this is the value-based Q-learning representative",
        "state_abstraction": "coarse (scheduling-stage, ready-set-breadth) discretization, a documented adaptation of the published shop-state features",
        "training": "one-step Q-learning with a terminal normalized-improvement reward over seeded epsilon-greedy episodes"
      },
      "solver_id": "rl-dispatching",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "constructive",
      "notes": {
        "base_policy": "shortest-processing-time static-priority completion",
        "budget": "a wall-clock budget degrades the lookahead to the bare base-policy completion of the committed prefix",
        "caveats": "cost grows with the base-policy completions scored, quadratic in the task count",
        "evidence_class": "runnable-baseline",
        "guarantee": "the sequentially-consistent base policy makes the rollout order score no worse than the base policy it improves",
        "mechanism": "one-step base-policy lookahead sequential construction",
        "relates_to": "shortest-processing-time: the base policy this rollout improves",
        "strengths": "recovers order quality a one-pass dispatch rule leaves on the table by scoring a full completion per ready candidate"
      },
      "solver_id": "rollout",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "reference-vector count grows with objective dimension",
        "competitor": "rvea",
        "evidence_class": "runnable-baseline",
        "mechanism": "angle-penalized-distance selection over reference vectors",
        "reference_vector_design": "unit-normalized Das-Dennis simplex",
        "strengths": "convergence-diversity balance that sharpens over the run"
      },
      "solver_id": "rvea",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "positions move unconditionally each iteration, so the returned order is the best observed rather than a monotone incumbent",
        "discrete_adaptation": "Jain, R., & Sharma, N. (2022). A Deadline-Constrained Time-Cost-Effective Salp Swarm Algorithm for Resource Optimization in Cloud Computing. International Journal of Applied Metaheuristic Computing, 13(1). doi:10.4018/IJAMC.292509",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous chain search whose leader is drawn toward the best-so-far food source by a coefficient that decays over the budget, and whose followers each move to the mean of their own and their predecessor's position",
        "strengths": "the follower averaging smooths the chain toward the leader while the decaying coefficient sharpens the leader's search"
      },
      "solver_id": "salp-swarm",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "discrete_adaptation": "Aissani, N., Beldjilali, B., & Trentesaux, D. (2009). Dynamic scheduling of maintenance tasks in the petroleum industry: a reinforcement approach. Engineering Applications of Artificial Intelligence, 22(7), 1089-1103. doi:10.1016/j.engappai.2009.01.014; Zhang, Z., Zheng, L., Hou, F., & Li, N. (2011). Semiconductor final test scheduling with Sarsa(lambda, k) algorithm. European Journal of Operational Research, 215(2), 446-458. doi:10.1016/j.ejor.2011.05.052",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "value-based on-policy TD control (SARSA)",
        "mechanism": "tabular on-policy SARSA over dispatching-rule actions",
        "policy_basis": "tabular action-value over dispatch rules",
        "relates_to": "rl-dispatching: the off-policy Q-learning representative; this is the on-policy SARSA representative",
        "training": "on-policy SARSA that bootstraps toward the next selected action-value, with a terminal normalized-improvement reward over seeded epsilon-greedy episodes"
      },
      "solver_id": "sarsa-dispatching",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "path relinking is precedence-repaired over the order space, a documented adaptation of the published combination method",
        "combination": "path relinking between the two reference orders of each subset",
        "competitor": "scatter-search",
        "evidence_class": "runnable-baseline",
        "mechanism": "reference-set path-relinking search over precedence-safe orders",
        "realizes": "the elite-solution path relinking left unrealized in critical-path-tabu",
        "reference_set": "a best-scoring quality subset plus a max-min positional-distance diversity subset",
        "strengths": "systematic recombination of diverse high-quality task orders"
      },
      "solver_id": "scatter-search",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "acceptance": "late-acceptance hill-climbing against the cost recorded a fixed number of steps earlier",
        "evidence_class": "runnable-baseline",
        "low_level_heuristics": "adjacent-swap, insertion-shift, relink-to-incumbent, bounded-local-search",
        "mechanism": "two-layer selection hyper-heuristic: adaptive heuristic selection over a fixed low-level heuristic set with a separate move-acceptance criterion",
        "relates_to": "distinct from ccgp, a generation hyper-heuristic that evolves priority-rule trees rather than selecting among fixed low-level heuristics",
        "scheduling_contract": "permutation-decode-to-schedule",
        "selection": "reinforcement-style adaptive credit; improving moves reward the applied heuristic, non-improving moves penalize it, with roulette-wheel proportional selection"
      },
      "solver_id": "selection-hyper-heuristic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "constructive",
      "notes": {
        "caveats": "single-pass constructor; no search beyond the justification re-decodes; on unit-capacity (or demand-equals-capacity) problems the cumulative decode reduces to the scalar exclusive timeline",
        "citation_doi_pending": "verified publisher landing link recorded as the uri; the DOI digits are unverified and await operator confirmation",
        "evidence_class": "runnable-baseline",
        "mechanism": "latest-finish-time serial construction with double justification, decoded through the cumulative capacity-profile placement so a resource packs concurrent activities up to its capacity",
        "realization": "double justification realized as finish- and start-sorted re-decodes through the serial constructor, a documented order-space adaptation of the published schedule-space shifts",
        "strengths": "justification improves serial-decoder schedules at the cost of only two extra decodes; the cumulative decode honors the capacity-aware capability on resources carrying demand below capacity"
      },
      "solver_id": "serial-sgs-justification",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "constructive",
      "notes": {
        "caveats": "heads and tails are longest-path bounds treating dependency lags as finish-to-start offsets; the serial constructor honors the exact timing",
        "evidence_class": "runnable-baseline",
        "machine_identity": "a distinct resource-demand set; demand-free tasks share a pool machine",
        "mechanism": "machine decomposition sequencing the bottleneck machine first",
        "reoptimization": "committed machines re-sequenced while later commitments tighten their release dates and tails",
        "strengths": "critical-path decomposition that resolves the most constraining resource before the rest",
        "subproblem": "single-machine release-date relaxation solved by Schrage's rule"
      },
      "solver_id": "shifting-bottleneck",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "dispatch_rule": "shortest-processing-time",
        "priority_basis": "shortest duration first"
      },
      "solver_id": "shortest-processing-time",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "mechanism": "adjacent-swap neighborhood under Metropolis acceptance",
        "metaheuristic": "simulated-annealing",
        "realization": "single-chain anneal, temperature cooling linearly to a 0.01 floor; faithful in kind to the cited scheme",
        "scheduling_contract": "permutation-decode-to-schedule"
      },
      "solver_id": "simulated-annealing",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "positions move unconditionally each iteration, so the returned order is the best observed rather than a monotone incumbent",
        "discrete_adaptation": "Jouhari, H., Lei, D., Al-qaness, M. A. A., Abd Elaziz, M., Ewees, A. A., & Farouk, O. (2019). Sine-Cosine Algorithm to Enhance Simulated Annealing for Unrelated Parallel Machine Scheduling with Setup Times. Mathematics, 7(11), 1120. doi:10.3390/math7111120",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search nudging every priority vector toward the best-so-far destination by a sine- or cosine-weighted step whose amplitude descends linearly over the budget",
        "strengths": "the oscillating step spans a wide region early and collapses onto the destination late with no per-instance tuning"
      },
      "solver_id": "sine-cosine-algorithm",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "faithful Pointer-Network-style encoder-decoder generative model trained by the self-labeling cross-entropy over the best sampled pseudo-label with neither an MDP nor reinforcement learning; the fifteen graph-node and eleven job-context features collapse to the platform-derivable subset, and single-instance self-labeling over a bounded step budget with a greedy decode adapts the published dataset-scale amortized training to the platform's per-instance task-order model",
        "evidence_class": "runnable-baseline",
        "learned_paradigm": "self-supervised generative construction",
        "mechanism": "pointer-network generative model + self-labeling",
        "optional_extra": "learning",
        "policy_basis": "pointer-network-style encoder-decoder generative model over the disjunctive graph with a multi-head-attention memory network",
        "training": "single-instance self-labeling: sample solutions, adopt the minimum-makespan sample as a pseudo-label, and minimize the cross-entropy toward it, using no reward or Markov Decision Process"
      },
      "solver_id": "slim-self-labeling",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "hypervolume cost grows with the objective count",
        "competitor": "sms-emoa",
        "evidence_class": "runnable-baseline",
        "indicator": "exact dominated hypervolume via objective slicing",
        "mechanism": "dominated-hypervolume (S-metric) survival selection",
        "strengths": "reference-free spread and convergence balance"
      },
      "solver_id": "sms-emoa",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "the pairwise distance matrix is quadratic in the pool",
        "competitor": "spea2",
        "density": "k-th nearest neighbour with k = floor(sqrt N)",
        "discrete_adaptation": "Wei, Feng, Tan, and Hagiwara. Flexible job shop scheduling multi-objective optimization based on an improved strength Pareto evolutionary algorithm. Advanced Materials Research, 186, 546-551, 2011. doi:10.4028/www.scientific.net/AMR.186.546",
        "evidence_class": "runnable-baseline",
        "mechanism": "strength-and-raw-fitness ranking with a k-th nearest-neighbour density estimator and distance-based archive truncation",
        "strengths": "the density estimator preserves a well-spread archive without reference points or scalarizing weights"
      },
      "solver_id": "spea2",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "analyzer": "blame equals the task completion time read from the constructed schedule assignments",
        "caveats": "the completion-time blame is a documented adaptation of the paper's domain-specific trouble measure",
        "evidence_class": "runnable-baseline",
        "initialization": "duration-normalized prior with a seeded uniform perturbation of the starting priority ordering",
        "mechanism": "construct/analyze/prioritize search over a per-task priority vector that induces the construction sequence",
        "prioritizer": "blamed tasks' priorities rise by bump_strength times their makespan-normalized blame, pulling late tasks earlier",
        "strengths": "reprioritizes around the tasks that finish latest rather than searching the order space blindly"
      },
      "solver_id": "squeaky-wheel",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "dispatching",
      "notes": {
        "degenerate_when": "tasks pin all resources through demands",
        "mechanism": "ready-set batch mapping by completion-loss gap",
        "priority_basis": "largest second-best-minus-best completion gap next",
        "realization": "the precedence-ready set stands in for the published independent-task batch; candidate and committed bindings follow the serial constructor's earliest-finish rule"
      },
      "solver_id": "sufferage",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "learning",
      "notes": {
        "documented_adaptation": "single static instance -> derived related tasks (makespan, lateness-weighted, flow-weighted scorings); 1-NN phenotypic-characterisation surrogate over ready-set reference situations; bounded population and generations for single-instance latency",
        "evidence_class": "runnable-baseline",
        "extends": "ccgp",
        "learned_paradigm": "genetic-programming hyper-heuristic (surrogate multitask)",
        "mechanism": "surrogate-assisted multitask GP hyper-heuristic",
        "policy_basis": "evolved priority-rule trees decoded by precedence-safe list scheduling",
        "relates_to": "ccgp: the cooperative-coevolution GP hyper-heuristic this surrogate multitask method extends",
        "training": "each generation a per-task 1-NN phenotypic-characterisation surrogate screens the merged offspring pool; only the reallocated survivors are really evaluated"
      },
      "solver_id": "surrogate-assisted-gp-hh",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "adaptation": "operates on the renewable-only, finish-start projection: the paper's generalized precedence relations (max lags, SF/FF), non-renewable and doubly constrained resources, and its inefficient-mode preprocessing are outside the core model and are projected away, not fabricated",
        "aspiration": "asymmetric: global and regional aspiration by objective override tabu status; influence always tilts move selection",
        "evidence_class": "runnable-baseline",
        "inner_scheduler": "a fixed mode assignment is projected onto the problem (each activity pinned to one mode) and decoded by the shared serial constructor, standing in for the paper's truncated RCPSP-GPR branch-and-bound",
        "long_term_memory": "frequency-based diversification and intensification phase switching after an initial data-collection phase",
        "mechanism": "tabu search over the mode-assignment neighborhood: each move reassigns one activity to another execution mode",
        "neighborhood": "single-activity re-mode -- all assignments differing from the incumbent in exactly one activity's mode",
        "tabu_list": "dynamic random tenure in [sqrt(n), 3*sqrt(n)] on the reversing (activity, mode) attribute"
      },
      "solver_id": "tabu-mrcpsp-mode-search",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "greedy replacement keeps only improving updates, so progress tracks the population's best member and mean",
        "discrete_adaptation": "Xie, Z., Zhang, C., Shao, X., Lin, W., & Zhu, H. (2014). An effective hybrid teaching-learning-based optimization algorithm for permutation flow shop scheduling problem. Advances in Engineering Software, 77, 35-47. doi:10.1016/j.advengsoft.2014.07.006",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "parameter-less two-phase population search: a teacher phase draws every learner toward the best member and away from the population mean, and a learner phase draws it toward or away from a random peer by which is better",
        "strengths": "carries no algorithm-specific parameters beyond population size and iteration budget"
      },
      "solver_id": "teaching-learning-optimization",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "group": "metaheuristic",
      "notes": {
        "caveats": "positions move unconditionally each iteration, so the returned order is the best observed rather than a monotone incumbent",
        "discrete_adaptation": "Zhang, S., & Gu, X. (2023). A discrete whale optimization algorithm for the no-wait flow shop scheduling problem. Measurement and Control. doi:10.1177/00202940231180622",
        "encoding": "continuous priority vector decoded to a permutation by the Largest Order Value rule, then precedence-repaired",
        "evidence_class": "runnable-baseline",
        "mechanism": "continuous population search choosing per iteration a spiral move around the best member, an encircling move toward it, or a search move toward a random member, under a control value that descends linearly over the budget",
        "strengths": "the spiral and search moves preserve exploration while the descending control value sharpens exploitation, with no per-instance tuning"
      },
      "solver_id": "whale-optimization",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    }
  ]
}
