{
  "artifact_hash": "8d8d2ef06c1f921af7b5527b3e241af02b1b73995e9084adbce3109607d02afc",
  "artifact_type": "dispatchatlas.solver_capabilities",
  "confidence_label": "metadata-only",
  "constraint_support": {
    "infeasible_row_policy": "classified, never hidden",
    "kinds": [
      "hard",
      "soft"
    ],
    "service_level": {
      "hard_breach_is_infeasible": true,
      "metrics": [
        "completion_time",
        "makespan",
        "lateness",
        "fairness"
      ],
      "name": "service-level (SLA) constraint",
      "paths": [
        "hard-breach",
        "soft-penalty"
      ]
    }
  },
  "encoding_adapters": [
    {
      "citation": {
        "reference": "Bean, J. C. (1994). Genetic algorithms and random keys for sequencing and optimization. ORSA Journal on Computing, 6(2), 154-160. doi:10.1287/ijoc.6.2.154",
        "status": "canonical"
      },
      "decode_rule": "random-key",
      "description": "Sort tasks by their clamped continuous key; the random-key encoding maps any real vector to a permutation.",
      "name": "random-key",
      "repair_policy": "topological-normalize",
      "stochastic": false,
      "transfer": "identity"
    },
    {
      "citation": {
        "reference": "Tasgetiren, M. F., Liang, Y.-C., Sevkli, M., & Gencyilmaz, G. (2007). A particle swarm optimization algorithm for makespan and total flowtime minimization in the permutation flowshop sequencing problem. European Journal of Operational Research, 177(3), 1930-1947. doi:10.1016/j.ejor.2005.12.024",
        "status": "canonical"
      },
      "decode_rule": "spv",
      "description": "Smallest-position-value decoding sorts tasks by the raw continuous position value.",
      "name": "spv",
      "repair_policy": "topological-normalize",
      "stochastic": false,
      "transfer": "identity"
    },
    {
      "citation": {
        "reference": "Nearest-integer rank rounding is a generic discretization heuristic with no single canonical seminal origin.",
        "status": "not-applicable"
      },
      "decode_rule": "rounding",
      "description": "Round each clamped key to an integer rank slot and break ties by task identifier.",
      "name": "rounding",
      "repair_policy": "topological-normalize",
      "stochastic": false,
      "transfer": "identity"
    },
    {
      "citation": {
        "reference": "Kennedy, J., & Eberhart, R. C. (1997). A discrete binary version of the particle swarm algorithm. Proceedings of IEEE SMC 1997, 4104-4108. doi:10.1109/ICSMC.1997.637339",
        "status": "canonical"
      },
      "decode_rule": "exponential-race",
      "description": "S-shaped sigmoid transfer maps each component to a selection probability that biases a seeded weighted draw.",
      "name": "sigmoid",
      "repair_policy": "topological-normalize",
      "stochastic": true,
      "transfer": "sigmoid"
    },
    {
      "citation": {
        "reference": "Mirjalili, S., & Lewis, A. (2013). S-shaped versus V-shaped transfer functions for binary particle swarm optimization. Swarm and Evolutionary Computation, 9, 1-14. doi:10.1016/j.swevo.2012.09.002",
        "status": "canonical"
      },
      "decode_rule": "exponential-race",
      "description": "V-shaped transfer maps the magnitude of each component to a selection probability that biases a seeded weighted draw.",
      "name": "v-shaped",
      "repair_policy": "topological-normalize",
      "stochastic": true,
      "transfer": "v-shaped"
    },
    {
      "citation": {
        "reference": "Mirjalili, S., & Lewis, A. (2013). S-shaped versus V-shaped transfer functions for binary particle swarm optimization. Swarm and Evolutionary Computation, 9, 1-14. doi:10.1016/j.swevo.2012.09.002",
        "status": "canonical"
      },
      "decode_rule": "exponential-race",
      "description": "Shifted hyperbolic-tangent transfer maps each component to a selection probability that biases a seeded weighted draw.",
      "name": "tanh",
      "repair_policy": "topological-normalize",
      "stochastic": true,
      "transfer": "tanh"
    }
  ],
  "frontier_contract": {
    "fields": [
      "label",
      "objectives",
      "non_dominated"
    ],
    "non_dominated_flag": true,
    "objectives_shape": "objective-name to value mapping"
  },
  "learning_interfaces": [
    {
      "evidence_class": "metadata-only",
      "evidence_eligible": false,
      "interface": "supervised-algorithm-selection",
      "leakage_controls": "A leakage-free train/test split keeps no instance, benchmark family, or characterization record across both partitions.",
      "optional_dependency": {
        "extra": "learning",
        "name": "scikit-learn",
        "optional": true,
        "purpose": "optional estimator and surrogate-model backend"
      },
      "reproducibility": "Deterministic distance-weighted nearest-neighbor model over normalized features; identical corpus and split yield identical recommendations.",
      "status": "implemented",
      "summary": "Learns an instance-to-solver model from a labeled corpus of characterization features and reports held-out generalization.",
      "training_data": "An (instance characterization, best-solver) labeled corpus supplied by the comparative campaigns; the selector ships the interface and the leakage-free cross-validation protocol but sources labels explicitly and never fabricates them."
    },
    {
      "evidence_class": "metadata-only",
      "evidence_eligible": false,
      "interface": "benchmark-only-learning-baseline",
      "leakage_controls": "Not applicable; the baseline has no training set, so no train/test leakage is possible.",
      "reproducibility": "Fully deterministic: identical features and candidates yield identical rankings.",
      "status": "implemented",
      "summary": "Rule-based selector that ranks candidates from declared capabilities and benchmark characterization alone, with no learned model.",
      "training_data": "None; the baseline reads declared solver capabilities and benchmark characterization features only."
    },
    {
      "evidence_class": "metadata-only",
      "evidence_eligible": false,
      "interface": "surrogate-assisted-search",
      "leakage_controls": "Realized under the same leakage-free split protocol when the downstream campaign supplies training data.",
      "optional_dependency": {
        "extra": "learning",
        "name": "scikit-learn",
        "optional": true,
        "purpose": "optional estimator and surrogate-model backend"
      },
      "rationale": "Deferred to the experiment-engine and comparative-campaign phases, which produce the evaluation traces a surrogate needs; the optional estimator backend stays out of the default runtime.",
      "reproducibility": "Seeded and deterministic once realized; the deferred hook carries a typed fallback when its optional backend is absent.",
      "status": "deferred",
      "summary": "Surrogate model that approximates the objective to screen candidate schedules before full evaluation.",
      "training_data": "Evaluation traces gathered during the comparative campaigns; the surrogate trains on (schedule features, objective) pairs."
    },
    {
      "evidence_class": "metadata-only",
      "evidence_eligible": false,
      "interface": "reinforcement-learning-hooks",
      "leakage_controls": "Realized under the same leakage-free split protocol when the downstream campaign supplies training data.",
      "optional_dependency": {
        "extra": "learning",
        "name": "scikit-learn",
        "optional": true,
        "purpose": "optional estimator and surrogate-model backend"
      },
      "rationale": "Deferred to the comparative-campaign phases; the hook exposes a typed fallback so the default runtime needs no learning backend.",
      "reproducibility": "Seeded and deterministic once realized; the deferred hook carries a typed fallback when its optional backend is absent.",
      "status": "deferred",
      "summary": "Policy hooks for learned operator or restart selection during search, behind an optional reinforcement-learning backend.",
      "training_data": "On-policy rollouts collected during search; no offline corpus is required, but reward shaping is campaign-defined."
    },
    {
      "evidence_class": "metadata-only",
      "evidence_eligible": false,
      "interface": "hyper-heuristics",
      "leakage_controls": "Realized under the same leakage-free split protocol when the downstream campaign supplies training data.",
      "rationale": "Deferred to the comparative-campaign phases, which define the low-level heuristic pool and the credit-assignment budget.",
      "reproducibility": "Seeded and deterministic once realized; the deferred hook carries a typed fallback when its optional backend is absent.",
      "status": "deferred",
      "summary": "Selection hyper-heuristic that chooses among low-level heuristics per search state.",
      "training_data": "Online credit-assignment statistics over the low-level heuristic pool; no offline training corpus is required."
    },
    {
      "evidence_class": "metadata-only",
      "evidence_eligible": false,
      "interface": "policy-guided-repair",
      "leakage_controls": "Realized under the same leakage-free split protocol when the downstream campaign supplies training data.",
      "optional_dependency": {
        "extra": "learning",
        "name": "scikit-learn",
        "optional": true,
        "purpose": "optional estimator and surrogate-model backend"
      },
      "rationale": "Deferred to the comparative-campaign phases; the deterministic topological repair remains the always-available fallback.",
      "reproducibility": "Seeded and deterministic once realized; the deferred hook carries a typed fallback when its optional backend is absent.",
      "status": "deferred",
      "summary": "Repair operator guided by a learned policy over infeasible-row structure, with a deterministic repair fallback.",
      "training_data": "Infeasibility-and-repair traces gathered during the campaigns; the policy learns which repair move resolves which violation."
    },
    {
      "evidence_class": "metadata-only",
      "evidence_eligible": false,
      "interface": "learned-initialization",
      "leakage_controls": "Realized under the same leakage-free split protocol when the downstream campaign supplies training data.",
      "optional_dependency": {
        "extra": "learning",
        "name": "scikit-learn",
        "optional": true,
        "purpose": "optional estimator and surrogate-model backend"
      },
      "rationale": "Deferred to the comparative-campaign phases; random topological initialization remains the default warm-start.",
      "reproducibility": "Seeded and deterministic once realized; the deferred hook carries a typed fallback when its optional backend is absent.",
      "status": "deferred",
      "summary": "Learned warm-start that seeds the initial population from a model of past high-quality schedules.",
      "training_data": "High-quality schedules archived during the campaigns; the model learns an initialization distribution per instance class."
    }
  ],
  "many_objective": {
    "citation": "Deb, K., & Jain, H. (2014). An evolutionary many-objective optimization algorithm using reference-point-based nondominated sorting approach, part I: solving problems with box constraints. IEEE Transactions on Evolutionary Computation, 18(4), 577-601. doi:10.1109/TEVC.2013.2281535",
    "competitor": "nsga3",
    "distinct_from_bi_objective_surface": true,
    "reference_point_design": "Das-Dennis structured simplex"
  },
  "named_objectives": [
    {
      "deferral_rationale": "",
      "description": "Latest task completion time across the schedule.",
      "evaluation": "computed",
      "objective": "makespan",
      "sense": "minimize",
      "unit": "seconds"
    },
    {
      "deferral_rationale": "Energy requires a per-resource power-coefficient model not attached in core; quantify once an energy-coefficient model is supplied.",
      "description": "Total energy consumed executing the schedule.",
      "evaluation": "deferred",
      "objective": "energy",
      "sense": "minimize",
      "unit": "joule"
    },
    {
      "deferral_rationale": "",
      "description": "Monetary cost of executing the schedule.",
      "evaluation": "computed-with-cost-model",
      "objective": "cost",
      "sense": "minimize",
      "unit": "currency"
    },
    {
      "deferral_rationale": "Carbon requires an emission-factor model (energy times grid intensity) not attached in core; quantify once an emission-factor model is supplied.",
      "description": "Carbon-equivalent emissions of the schedule.",
      "evaluation": "deferred",
      "objective": "carbon",
      "sense": "minimize",
      "unit": "kgco2e"
    },
    {
      "deferral_rationale": "End-to-end latency requires the placement schedule joined to the instance network topology (per-task data transfer over link bandwidth and latency), which the deterministic serial schedule does not carry; quantify once a placement over the network fabric is supplied.",
      "description": "End-to-end latency from task release to completion including data transfer across the continuum network fabric.",
      "evaluation": "deferred",
      "objective": "latency",
      "sense": "minimize",
      "unit": "seconds"
    },
    {
      "deferral_rationale": "",
      "description": "Aggregate completion lateness against task deadlines.",
      "evaluation": "computed",
      "objective": "lateness",
      "sense": "minimize",
      "unit": "seconds"
    },
    {
      "deferral_rationale": "",
      "description": "Equity of load distribution across resources.",
      "evaluation": "computed",
      "objective": "fairness",
      "sense": "maximize",
      "unit": "index"
    },
    {
      "deferral_rationale": "",
      "description": "Spread between the most- and least-served tenant's dominant resource share (Ghodsi et al. dominant resource fairness); zero is an equal-dominant-share allocation across tenants.",
      "evaluation": "computed-with-tenants",
      "objective": "dominant-resource-share",
      "sense": "minimize",
      "unit": "share"
    },
    {
      "deferral_rationale": "Reliability is a supplied posture probability, not derived from the deterministic serial schedule; consume it as a measured input.",
      "description": "Probability the schedule completes without failure.",
      "evaluation": "deferred",
      "objective": "reliability",
      "sense": "maximize",
      "unit": "probability"
    },
    {
      "deferral_rationale": "Security is a supplied placement-posture score, not derived from the schedule; consume it as a measured input.",
      "description": "Security posture score of the placement.",
      "evaluation": "deferred",
      "objective": "security",
      "sense": "maximize",
      "unit": "score"
    },
    {
      "deferral_rationale": "Robustness is quantified by the dedicated worst-case/CVaR metric over a declared perturbation set (see dispatchatlas.core.robustness), which carries its own evaluation test.",
      "description": "Resilience of the schedule to perturbation.",
      "evaluation": "deferred",
      "objective": "robustness",
      "sense": "maximize",
      "unit": "score"
    },
    {
      "deferral_rationale": "",
      "description": "Total sequence-dependent setup time incurred between consecutive tasks on each resource.",
      "evaluation": "computed-with-cost-model",
      "objective": "setup",
      "sense": "minimize",
      "unit": "seconds"
    },
    {
      "deferral_rationale": "",
      "description": "Total optional computation completed beyond the mandatory part of imprecise (partially-executable) tasks.",
      "evaluation": "computed-with-imprecise-tasks",
      "objective": "imprecise",
      "sense": "maximize",
      "unit": "seconds"
    },
    {
      "deferral_rationale": "",
      "description": "Weighted composite of two or more base objectives.",
      "evaluation": "computed",
      "objective": "composite",
      "sense": "minimize",
      "unit": "score"
    }
  ],
  "producer": "dispatchatlas.solve",
  "quality_indicators": {
    "indicators": [
      {
        "citation": "Zitzler, E., & Thiele, L. (1999). Multiobjective evolutionary algorithms: a comparative case study and the strength Pareto approach. IEEE TEVC, 3(4), 257-271. doi:10.1109/4235.797969",
        "name": "hypervolume",
        "role": "primary"
      },
      {
        "citation": "Ishibuchi, H., Masuda, H., Tanigaki, Y., & Nojima, Y. (2015). Modified distance calculation in generational distance and inverted generational distance. EMO 2015. doi:10.1007/978-3-319-15892-1_8",
        "name": "igd_plus",
        "role": "convergence"
      },
      {
        "citation": "Zitzler, E., Thiele, L., Laumanns, M., Fonseca, C. M., & Grunert da Fonseca, V. (2003). Performance assessment of multiobjective optimizers: an analysis and review. IEEE TEVC, 7(2), 117-132. doi:10.1109/TEVC.2003.810758",
        "name": "additive_epsilon",
        "role": "convergence"
      },
      {
        "adaptation": "Schott's spacing is the standard deviation of each point's nearest-neighbor city-block (L1) distance, over a sample (1/(n-1)) denominator, in the objective's own units. This spread indicator departs on three counts: it measures nearest neighbors by Euclidean (L2) distance, uses the population (1/n) denominator, and divides by the mean distance to yield a coefficient of variation. The quotient is scale-free and therefore comparable across objectives carrying different units, which Schott's statistic is not. Values are not Schott spacing values and are not comparable with figures reported under that name.",
        "citation": "Schott, J. R. (1995). Fault-tolerant design using single and multicriteria genetic algorithm optimization (Master's thesis). Massachusetts Institute of Technology.",
        "name": "spread",
        "role": "diversity"
      }
    ],
    "selection_citation": "Riquelme, N., Von Lucken, C., & Baran, B. (2015). Performance metrics in multi-objective optimization. CLEI 2015. doi:10.1109/CLEI.2015.7360024"
  },
  "recommendation_sources": [
    {
      "confidence_labels": [
        "metadata-only"
      ],
      "source": "metadata",
      "summary": "Ranked from declared solver capabilities and benchmark characterization alone; no learned model is involved."
    },
    {
      "confidence_labels": [
        "metadata-only",
        "pilot-backed",
        "evidence-grade"
      ],
      "source": "learned-model",
      "summary": "Ranked from a labeled corpus by the supervised selector; confidence rises only with leakage-free held-out evidence."
    }
  ],
  "retired_dispatching_families": [
    {
      "citation": {
        "reference": "Braun, T. D., et al. (2001). A comparison of eleven static heuristics for mapping a class of independent tasks onto heterogeneous distributed computing systems. JPDC, 61(6), 810-837.",
        "status": "canonical"
      },
      "rationale": "Opportunistic load balancing assigns each task to the next available resource without consulting execution times; that is exactly the serial constructor's demand-free default binding, so a registered olb would be a degenerate alias of earliest-start plus the constructor.",
      "reason": "resource-mapping",
      "token": "olb"
    },
    {
      "citation": {
        "reference": "Braun, T. D., et al. (2001). A comparison of eleven static heuristics for mapping a class of independent tasks onto heterogeneous distributed computing systems. JPDC, 61(6), 810-837.",
        "status": "canonical"
      },
      "rationale": "Minimum-execution-time mapping binds each task to its fastest resource while ignoring availability. Moldable task modes now carry the per-resource execution-time table, but the serial constructor always binds the earliest-finishing mode, so MET's defining availability-blind choice is overridden by the constructor and cannot pass through the decode seam.",
      "reason": "resource-mapping",
      "token": "met"
    },
    {
      "citation": {
        "reference": "Braun, T. D., et al. (2001). A comparison of eleven static heuristics for mapping a class of independent tasks onto heterogeneous distributed computing systems. JPDC, 61(6), 810-837.",
        "status": "canonical"
      },
      "rationale": "Minimum-completion-time mapping assigns the next task to the binding that completes earliest; that selection rule is the serial constructor's own earliest-finish binding, so a registered mct would be a degenerate alias of earliest-start plus the constructor.",
      "reason": "resource-mapping",
      "token": "mct"
    },
    {
      "citation": {
        "reference": "Round-robin assignment is a folklore scheduling discipline with no single canonical seminal origin.",
        "status": "not-applicable"
      },
      "rationale": "Preemptive time-quantum round-robin needs interrupted-and-resumed task pieces, but an assignment is one contiguous start-finish interval; the non-preemptive surrogate, cyclic interleaving across per-resource ready queues, collapses to the earliest-start identity because the serial constructor tracks availability per resource, so only each queue's internal order affects start times.",
      "reason": "order-degenerate",
      "token": "round-robin"
    },
    {
      "citation": {
        "reference": "Least-loaded resource assignment is a folklore discipline with no single canonical seminal origin.",
        "status": "not-applicable"
      },
      "rationale": "Load-balanced assignment selects the least-loaded resource; the constructor fixes resource selection from declared demands, so there is no free balancing decision.",
      "reason": "resource-mapping",
      "token": "load-balanced"
    },
    {
      "citation": {
        "reference": "Type-aware assignment is a design pattern, not a single canonical algorithm.",
        "status": "not-applicable"
      },
      "rationale": "Type-aware mapping requires task-type and resource-type tags that the current core problem model does not carry.",
      "reason": "type-tags-absent",
      "token": "type-aware"
    },
    {
      "citation": {
        "reference": "Domain-aware assignment is a design pattern, not a single canonical algorithm.",
        "status": "not-applicable"
      },
      "rationale": "Domain-aware mapping requires task-domain and resource-domain tags that the current core problem model does not carry.",
      "reason": "type-tags-absent",
      "token": "domain-aware"
    }
  ],
  "robustness": {
    "aggregations": [
      "worst_case",
      "cvar"
    ],
    "basis": "explicitly declared perturbation set over one objective",
    "default_cvar_alpha": 0.9
  },
  "schema_version": "1.3",
  "selection_features": [
    {
      "feature": "difficulty",
      "metric_of_origin": "dispatchatlas.bench.selection.difficulty_score (aggregate of CharacterizationMetrics.contention, .overload, .dependency_depth, .solver_sensitivity)"
    },
    {
      "feature": "heterogeneity",
      "metric_of_origin": "dispatchatlas.bench.characterization.CharacterizationMetrics.heterogeneity"
    },
    {
      "feature": "objective_conflict",
      "metric_of_origin": "dispatchatlas.bench.characterization.CharacterizationMetrics.objective_conflict"
    },
    {
      "feature": "uncertainty",
      "metric_of_origin": "dispatchatlas.bench.characterization.CharacterizationMetrics.uncertainty"
    },
    {
      "feature": "dynamism",
      "metric_of_origin": "dispatchatlas.bench.characterization.CharacterizationMetrics.dynamism"
    },
    {
      "feature": "solver_sensitivity",
      "metric_of_origin": "dispatchatlas.bench.characterization.CharacterizationMetrics.solver_sensitivity"
    }
  ],
  "solvers": [
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Nabi, S., Ahmad, M., Ibrahim, M., & Hamam, H. (2022). AdPSO: Adaptive PSO-based task scheduling approach for cloud computing. Sensors, 22(3), 920. doi:10.3390/s22030920",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "many-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Panichella, A. (2022). An improved Pareto front modeling algorithm for large-scale many-objective optimization. Proceedings of the Genetic and Evolutionary Computation Conference (GECCO '22), 565-573. doi:10.1145/3512290.3528732",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Dorigo, M., Maniezzo, V., & Colorni, A. (1996). The Ant System: optimization by a colony of cooperating agents. IEEE Transactions on Systems, Man, and Cybernetics, Part B, 26(1), 29-41.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic",
        "deadline-aware"
      ],
      "citation": {
        "reference": "Vepsalainen, A. P. J., & Morton, T. E. (1987). Priority rules for job shops with weighted tardiness costs. Management Science, 33(8), 1035-1047. doi:10.1287/mnsc.33.8.1035",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "apparent-tardiness-cost",
        "priority_basis": "highest apparent-tardiness-cost index first (unweighted, k=2)"
      },
      "solver_id": "apparent-tardiness-cost",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "lateness",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Abualigah, L., Diabat, A., Mirjalili, S., Abd Elaziz, M., & Gandomi, A. H. (2021). The Arithmetic Optimization Algorithm. Computer Methods in Applied Mechanics and Engineering, 376, 113609. doi:10.1016/j.cma.2020.113609",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Karaboga, D., & Basturk, B. (2007). A powerful and efficient algorithm for numerical function optimization: artificial bee colony (ABC) algorithm. Journal of Global Optimization, 39(3), 459-471. doi:10.1007/s10898-007-9149-x",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Li, X.-L., Shao, Z.-J., & Qian, J.-X. (2002). An optimizing method based on autonomous animats: fish-swarm algorithm. Systems Engineering Theory and Practice, 22(11), 32-38.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "deterministic"
      ],
      "citation": {
        "reference": "Sabuncuoglu, I., & Bayiz, M. (1999). Job shop scheduling with beam search. European Journal of Operational Research, 118(2), 390-412.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "constructive",
      "notes": {
        "beam_width": "3",
        "mechanism": "breadth-bounded constructive search",
        "priority_basis": "best topological completion score"
      },
      "solver_id": "beam-search",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "deterministic",
        "exact-optional"
      ],
      "citation": {
        "reference": "Land, A. H., & Doig, A. G. (1960). An automatic method of solving discrete programming problems. Econometrica, 28(3), 497-520.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "exact",
          "name": "ortools",
          "optional": true,
          "purpose": "branch-and-bound / branch-and-cut adapter"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zaki, T., Zeitrag, Y., Neves, R., & Figueira, J. R. (2024). A cooperative coevolutionary genetic programming hyper-heuristic for multi-objective makespan and cost optimization in cloud workflow scheduling. Computers & Operations Research, 172, 106805. doi:10.1016/j.cor.2024.106805",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Liang, J. J., Qin, A. K., Suganthan, P. N., & Baskar, S. (2006). Comprehensive learning particle swarm optimizer for global optimization of multimodal functions. IEEE Transactions on Evolutionary Computation, 10(3), 281-295. doi:10.1109/TEVC.2005.857610",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 16,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "metaheuristic",
      "notes": {
        "decode_rule": "random-key",
        "encoded_solver": "clpso",
        "encoding_adapter": "random-key",
        "repair_policy": "topological-normalize",
        "transfer": "identity"
      },
      "solver_id": "clpso",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Hansen, N., & Ostermeier, A. (2001). Completely derandomized self-adaptation in evolution strategies. Evolutionary Computation, 9(2), 159-195. doi:10.1162/106365601750190398",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 40,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Topcuoglu, H., Hariri, S., & Wu, M. (2002). Performance-effective and low-complexity task scheduling for heterogeneous computing. IEEE TPDS, 13(3), 260-274.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Nowicki, E., & Smutnicki, C. (2005). An advanced tabu search algorithm for the job shop problem. Journal of Scheduling, 8, 145-159. doi:10.1007/s10951-005-6364-5",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Yang, X.-S., & Deb, S. (2009). Cuckoo Search via Levy flights. In World Congress on Nature & Biologically Inspired Computing (NaBIC 2009), 210-214. doi:10.1109/NABIC.2009.5393690",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Liang, J. J., Qin, A. K., Suganthan, P. N., & Baskar, S. (2006). Comprehensive learning particle swarm optimizer for global optimization of multimodal functions. IEEE Transactions on Evolutionary Computation, 10(3), 281-295. doi:10.1109/TEVC.2005.857610",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 16,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zhang, W.-J., & Xie, X.-F. (2003). DEPSO: hybrid particle swarm with differential evolution operator. Proceedings of the 2003 IEEE International Conference on Systems, Man and Cybernetics (SMC), 4, 3816-3821. doi:10.1109/ICSMC.2003.1244483; Pan, Q.-K., Tasgetiren, M. F., & Liang, Y.-C. (2008). A discrete differential evolution algorithm for the permutation flowshop scheduling problem. Computers & Industrial Engineering, 55(4), 795-816. doi:10.1016/j.cie.2008.03.003",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "metaheuristic",
      "notes": {
        "hybrid_of": "differential-evolution + particle-swarm",
        "scheduling_contract": "permutation-decode-to-schedule",
        "scheduling_variant": "d-depso"
      },
      "solver_id": "d-depso",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Tanabe, R., & Fukunaga, A. S. (2014). Improving the search performance of SHADE using linear population size reduction. Proceedings of the IEEE Congress on Evolutionary Computation (CEC) 2014, 1658-1665. doi:10.1109/CEC.2014.6900380",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 16,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "metaheuristic",
      "notes": {
        "decode_rule": "rounding",
        "encoded_solver": "d-lshade",
        "encoding_adapter": "rounding",
        "repair_policy": "topological-normalize",
        "transfer": "identity"
      },
      "solver_id": "d-lshade",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Wang, R., Wang, G., Sun, J., Deng, F., & Chen, J. (2024). Flexible Job Shop Scheduling via Dual Attention Network-Based Reinforcement Learning. IEEE Transactions on Neural Networks and Learning Systems, 35(3), 3091-3102.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 20,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "learning",
          "name": "torch",
          "optional": true,
          "purpose": "graph-neural-network policy backend"
        },
        {
          "extra": "learning",
          "name": "torch-geometric",
          "optional": true,
          "purpose": "graph message-passing layers"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Mao, H., Schwarzkopf, M., Venkatakrishnan, S. B., Meng, Z., & Alizadeh, M. (2019). Learning scheduling algorithms for data processing clusters. Proceedings of the ACM SIGCOMM 2019 Conference, 270-288.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 24,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "learning",
          "name": "torch",
          "optional": true,
          "purpose": "graph-neural-network policy backend"
        },
        {
          "extra": "learning",
          "name": "torch-geometric",
          "optional": true,
          "purpose": "graph message-passing layers"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "deterministic",
        "constructive"
      ],
      "citation": {
        "reference": "Cire, A. A., & van Hoeve, W.-J. (2013). Multivalued decision diagrams for sequencing problems. Operations Research, 61(6), 1411-1428.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Storn, R., & Price, K. (1997). Differential evolution. Journal of Global Optimization, 11(4), 341-359.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Jackson, J. R. (1955). Scheduling a production line to minimize maximum tardiness. Management Science Research Project Report 43, UCLA.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "earliest-deadline",
        "priority_basis": "earliest declared deadline first (EDD / deadline-aware)"
      },
      "solver_id": "earliest-deadline",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Topcuoglu, H., Hariri, S., & Wu, M. (2002). Performance-effective and low-complexity task scheduling for heterogeneous computing. IEEE TPDS, 13(3), 260-274.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "earliest-finish-time",
        "priority_basis": "earliest reachable finish first (release + duration)"
      },
      "solver_id": "earliest-finish-time",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Topological input-order list scheduling has no single canonical seminal origin; it is the precedence-respecting identity baseline.",
        "status": "not-applicable"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "input-order",
        "priority_basis": "input order"
      },
      "solver_id": "earliest-start",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Anbarkhan, S. H., & Rakrouki, M. A. (2023). An enhanced PSO algorithm for scheduling workflow tasks in cloud computing. Electronics, 12(12), 2580. doi:10.3390/electronics12122580",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "deterministic",
        "constructive"
      ],
      "citation": {
        "reference": "Giffler, B., & Thompson, G. L. (1960). Algorithms for solving production-scheduling problems. Operations Research, 8(4), 487-503.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Yang, X.-S. (2009). Firefly Algorithms for Multimodal Optimization. In Stochastic Algorithms: Foundations and Applications (SAGA 2009), LNCS 5792, 169-178. doi:10.1007/978-3-642-04944-6_14",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Song, W., Chen, X., Li, Q., & Cao, Z. (2023). Flexible job-shop scheduling via graph neural network and deep reinforcement learning. IEEE Transactions on Industrial Informatics, 19(2), 1600-1610.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 20,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "learning",
          "name": "torch",
          "optional": true,
          "purpose": "graph-neural-network policy backend"
        },
        {
          "extra": "learning",
          "name": "torch-geometric",
          "optional": true,
          "purpose": "graph message-passing layers"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Holland, J. H. (1975). Adaptation in Natural and Artificial Systems. University of Michigan Press.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Saremi, S., Mirjalili, S., & Lewis, A. (2017). Grasshopper Optimisation Algorithm: Theory and application. Advances in Engineering Software, 105, 30-47. doi:10.1016/j.advengsoft.2017.01.004",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Rashedi, E., Nezamabadi-pour, H., & Saryazdi, S. (2009). GSA: A Gravitational Search Algorithm. Information Sciences, 179(13), 2232-2248. doi:10.1016/j.ins.2009.03.004",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Graham, R. L. (1966). Bounds for certain multiprocessing anomalies. Bell System Technical Journal, 45(9), 1563-1581.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "greedy-completion",
        "priority_basis": "state-aware earliest completion next"
      },
      "solver_id": "greedy-completion",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Mirjalili, S., Mirjalili, S. M., & Lewis, A. (2014). Grey Wolf Optimizer. Advances in Engineering Software, 69, 46-61. doi:10.1016/j.advengsoft.2013.12.007",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "local-search",
        "deterministic"
      ],
      "citation": {
        "reference": "Voudouris, C., & Tsang, E. (1999). Guided local search and its application to the travelling salesman problem. European Journal of Operational Research, 113(2), 469-499. doi:10.1016/S0377-2217(98)00099-X",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 24,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "deterministic",
        "exact-optional"
      ],
      "citation": {
        "reference": "Gurobi is a commercial solver product, not a single canonical algorithmic family.",
        "status": "not-applicable"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "exact-commercial",
          "name": "gurobipy",
          "optional": true,
          "purpose": "commercial mixed-integer programming wrapper"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Heidari, A. A., Mirjalili, S., Faris, H., Aljarah, I., Mafarja, M., & Chen, H. (2019). Harris hawks optimization: Algorithm and applications. Future Generation Computer Systems, 97, 849-872. doi:10.1016/j.future.2019.02.028",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Topcuoglu, H., Hariri, S., & Wu, M. (2002). Performance-effective and low-complexity task scheduling for heterogeneous computing. IEEE TPDS, 13(3), 260-274.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "many-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zitzler, E., & Kunzli, S. (2004). Indicator-based selection in multiobjective search. In Parallel Problem Solving from Nature (PPSN VIII), LNCS 3242, 832-842. doi:10.1007/978-3-540-30217-9_84",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Ruiz, R., & Stutzle, T. (2007). A simple and effective iterated greedy algorithm for the permutation flowshop scheduling problem. European Journal of Operational Research, 177(3), 2033-2049. doi:10.1016/j.ejor.2005.12.009",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Rao, R. V. (2016). Jaya: A simple and new optimization algorithm for solving constrained and unconstrained optimization problems. International Journal of Industrial Engineering Computations, 7(1), 19-34. doi:10.5267/j.ijiec.2015.8.004",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zhang, C., Song, W., Cao, Z., Zhang, J., Tan, P. S., & Xu, C. (2020). Learning to dispatch for job shop scheduling via deep reinforcement learning. Advances in Neural Information Processing Systems, 33, 1621-1632.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 20,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "learning",
          "name": "torch",
          "optional": true,
          "purpose": "graph-neural-network policy backend"
        },
        {
          "extra": "learning",
          "name": "torch-geometric",
          "optional": true,
          "purpose": "graph message-passing layers"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zhang, C., Cao, Z., Song, W., Wu, Y., & Zhang, J. (2024). Deep Reinforcement Learning Guided Improvement Heuristic for Job Shop Scheduling. International Conference on Learning Representations (ICLR).",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 20,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "learning",
          "name": "torch",
          "optional": true,
          "purpose": "graph-neural-network policy backend"
        },
        {
          "extra": "learning",
          "name": "torch-geometric",
          "optional": true,
          "purpose": "graph message-passing layers"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zhang, C., Song, W., Cao, Z., Zhang, J., Tan, P. S., & Xu, C. (2020). Learning to dispatch for job shop scheduling via deep reinforcement learning. Advances in Neural Information Processing Systems, 33, 1621-1632. arXiv:2010.12367",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 48,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "deterministic",
        "exact-optional"
      ],
      "citation": {
        "reference": "Hooker, J. N. (2007). Planning and scheduling by logic-based Benders decomposition. Operations Research, 55(3), 588-602.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "exact",
          "name": "pulp",
          "optional": true,
          "purpose": "logic-based Benders assignment-master ILP adapter"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Graham, R. L. (1969). Bounds on multiprocessing timing anomalies. SIAM Journal on Applied Mathematics, 17(2), 416-429.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "longest-processing-time",
        "priority_basis": "longest duration first"
      },
      "solver_id": "longest-processing-time",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Tanabe, R., & Fukunaga, A. S. (2014). Improving the search performance of SHADE using linear population size reduction. Proceedings of the IEEE Congress on Evolutionary Computation (CEC) 2014, 1658-1665. doi:10.1109/CEC.2014.6900380",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 16,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "metaheuristic",
      "notes": {
        "decode_rule": "random-key",
        "encoded_solver": "lshade",
        "encoding_adapter": "random-key",
        "repair_policy": "topological-normalize",
        "transfer": "identity"
      },
      "solver_id": "lshade",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Faramarzi, A., Heidarinejad, M., Mirjalili, S., & Gandomi, A. H. (2020). Marine Predators Algorithm: A nature-inspired metaheuristic. Expert Systems with Applications, 152, 113377. doi:10.1016/j.eswa.2020.113377",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 15,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Vanhoucke, M., & Coelho, J. (2024). A matheuristic for the resource-constrained project scheduling problem. European Journal of Operational Research, 319(3), 711-725.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Ibarra, O. H., & Kim, C. E. (1977). Heuristic algorithms for scheduling independent tasks on nonidentical processors. Journal of the ACM, 24(2), 280-289. doi:10.1145/322003.322011; Braun, T. D., et al. (2001). A comparison of eleven static heuristics for mapping a class of independent tasks onto heterogeneous distributed computing systems. JPDC, 61(6), 810-837. doi:10.1006/jpdc.2000.1714",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Ibarra, O. H., & Kim, C. E. (1977). Heuristic algorithms for scheduling independent tasks on nonidentical processors. Journal of the ACM, 24(2), 280-289. doi:10.1145/322003.322011; Braun, T. D., et al. (2001). A comparison of eleven static heuristics for mapping a class of independent tasks onto heterogeneous distributed computing systems. JPDC, 61(6), 810-837. doi:10.1006/jpdc.2000.1714",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Conway, R. W., Maxwell, W. L., & Miller, L. W. (1967). Theory of Scheduling. Addison-Wesley.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "minimum-slack",
        "priority_basis": "least slack first"
      },
      "solver_id": "minimum-slack",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zhang, Q., & Li, H. (2007). MOEA/D: A multiobjective evolutionary algorithm based on decomposition. IEEE Transactions on Evolutionary Computation, 11(6), 712-731. doi:10.1109/TEVC.2007.892759",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Kocsis, L., & Szepesvari, C. (2006). Bandit based Monte-Carlo planning. In Machine Learning: ECML 2006, LNCS 4212, 282-293. doi:10.1007/11871842_29",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 256,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Mirjalili, S. (2015). Moth-flame optimization algorithm: A novel nature-inspired heuristic paradigm. Knowledge-Based Systems, 89, 228-249. doi:10.1016/j.knosys.2015.07.006",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "ndso",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "The natively-discrete swarm optimizer is introduced in this work; it has no external seminal origin and is the focal solver family under evaluation.",
        "status": "not-applicable"
      },
      "default_stop": {
        "max_iterations": 16,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "ndso",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "The natively-discrete swarm optimizer is introduced in this work; it has no external seminal origin and is the focal solver family under evaluation.",
        "status": "not-applicable"
      },
      "default_stop": {
        "max_iterations": 8,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "speed"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "ndso",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "The inter-group council is the quality composition of the natively-discrete swarm optimizer original to DispatchAtlas; it has no external seminal origin.",
        "status": "not-applicable"
      },
      "default_stop": {
        "max_iterations": 24,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "quality"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "deterministic"
      ],
      "citation": {
        "reference": "Nawaz, M., Enscore, E. E., & Ham, I. (1983). A heuristic algorithm for the m-machine, n-job flow-shop sequencing problem. OMEGA, 11(1), 91-95.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "constructive",
      "notes": {
        "mechanism": "nonincreasing-duration best-insertion construction",
        "priority_basis": "nonincreasing-duration insertion"
      },
      "solver_id": "neh",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Deb, K., Pratap, A., Agarwal, S., & Meyarivan, T. (2002). A fast and elitist multiobjective genetic algorithm: NSGA-II. IEEE Transactions on Evolutionary Computation, 6(2), 182-197. doi:10.1109/4235.996017",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "many-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Deb, K., & Jain, H. (2014). An evolutionary many-objective optimization algorithm using reference-point-based nondominated sorting approach, part I: solving problems with box constraints. IEEE Transactions on Evolutionary Computation, 18(4), 577-601. doi:10.1109/TEVC.2013.2281535",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "deterministic",
        "exact-optional"
      ],
      "citation": {
        "reference": "Perron, L., & Furnon, V. (2019). OR-Tools CP-SAT solver. Google. https://developers.google.com/optimization.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "exact",
          "name": "ortools",
          "optional": true,
          "purpose": "exact constraint-programming adapter"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Kennedy, J., & Eberhart, R. (1995). Particle swarm optimization. Proceedings of ICNN'95, 1942-1948.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Arabnejad, H., & Barbosa, J. G. (2014). List scheduling algorithm for heterogeneous systems by an optimistic cost table. IEEE Transactions on Parallel and Distributed Systems, 25(3), 682-694. doi:10.1109/TPDS.2013.57",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "deterministic",
        "exact-optional"
      ],
      "citation": {
        "reference": "Land, A. H., & Doig, A. G. (1960). An automatic method of solving discrete programming problems. Econometrica, 28(3), 497-520.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "exact",
          "name": "pulp",
          "optional": true,
          "purpose": "mixed-integer linear programming adapter"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "native",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Ho, K.-H., Cheng, R.-T., Wu, J.-H., Chiang, F., Wu, T.-Y., & Hsu, T.-s. (2024). Residual scheduling: a new reinforcement learning approach to solving job shop scheduling problem. IEEE Access, 12, 14703-14718.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 16,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "learning",
          "name": "torch",
          "optional": true,
          "purpose": "graph-neural-network policy backend"
        },
        {
          "extra": "learning",
          "name": "torch-geometric",
          "optional": true,
          "purpose": "graph message-passing layers"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Aydin, M. E., & Oztemel, E. (2000). Dynamic job-shop scheduling using reinforcement learning agents. Robotics and Autonomous Systems, 33(2-3), 169-178. doi:10.1016/S0921-8890(00)00087-7",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 64,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "deterministic"
      ],
      "citation": {
        "reference": "Bertsekas, D. P., Tsitsiklis, J. N., & Wu, C. (1997). Rollout algorithms for combinatorial optimization. Journal of Heuristics, 3(3), 245-262. doi:10.1023/A:1009635226865",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "many-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Cheng, R., Jin, Y., Olhofer, M., & Sendhoff, B. (2016). A reference vector guided evolutionary algorithm for many-objective optimization. IEEE Transactions on Evolutionary Computation, 20(5), 773-791. doi:10.1109/TEVC.2016.2519378",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Mirjalili, S., Gandomi, A. H., Mirjalili, S. Z., Saremi, S., Faris, H., & Mirjalili, S. M. (2017). Salp Swarm Algorithm: A bio-inspired optimizer for engineering design problems. Advances in Engineering Software, 114, 163-191. doi:10.1016/j.advengsoft.2017.07.002",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Rummery, G. A., & Niranjan, M. (1994). On-line Q-learning using connectionist systems. Technical Report CUED/F-INFENG/TR 166, Department of Engineering, University of Cambridge. (The on-policy SARSA rule; named by Sutton 1996.)",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 64,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Marti, R., Laguna, M., & Glover, F. (2006). Principles of scatter search. European Journal of Operational Research, 169(2), 359-372. doi:10.1016/j.ejor.2004.08.004",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 8,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Burke, E. K., Gendreau, M., Hyde, M., Kendall, G., Ochoa, G., Ozcan, E., & Qu, R. (2013). Hyper-heuristics: a survey of the state of the art. Journal of the Operational Research Society, 64(12), 1695-1724. doi:10.1057/jors.2013.71",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 24,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "deterministic"
      ],
      "citation": {
        "reference": "Valls, V., Ballestin, F., & Quintanilla, S. (2005). Justification and RCPSP: A technique that pays. European Journal of Operational Research, 165(2), 375-386.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "deterministic"
      ],
      "citation": {
        "reference": "Adams, J., Balas, E., & Zawack, D. (1988). The shifting bottleneck procedure for job shop scheduling. Management Science, 34(3), 391-401. doi:10.1287/mnsc.34.3.391",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Smith, W. E. (1956). Various optimizers for single-stage production. Naval Research Logistics Quarterly, 3(1-2), 59-66.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "dispatching",
      "notes": {
        "dispatch_rule": "shortest-processing-time",
        "priority_basis": "shortest duration first"
      },
      "solver_id": "shortest-processing-time",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Kirkpatrick, S., Gelatt, C. D., & Vecchi, M. P. (1983). Optimization by simulated annealing. Science, 220(4598), 671-680.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Mirjalili, S. (2016). SCA: A Sine Cosine Algorithm for solving optimization problems. Knowledge-Based Systems, 96, 120-133. doi:10.1016/j.knosys.2015.12.022",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Corsini, A., Porrello, A., Calderara, S., & Dell'Amico, M. (2024). Self-Labeling the Job Shop Scheduling Problem. Advances in Neural Information Processing Systems, 37.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 20,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [
        {
          "extra": "learning",
          "name": "torch",
          "optional": true,
          "purpose": "graph-neural-network policy backend"
        },
        {
          "extra": "learning",
          "name": "torch-geometric",
          "optional": true,
          "purpose": "graph message-passing layers"
        }
      ],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Beume, N., Naujoks, B., & Emmerich, M. (2007). SMS-EMOA: Multiobjective selection based on dominated hypervolume. European Journal of Operational Research, 181(3), 1653-1669. doi:10.1016/j.ejor.2006.08.008",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "capabilities": [
        "multi-objective",
        "capacity-aware",
        "precedence-aware",
        "deadline-aware",
        "metaheuristic",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zitzler, E., Laumanns, M., & Thiele, L. (2001). SPEA2: Improving the Strength Pareto Evolutionary Algorithm. TIK-Report 103, Computer Engineering and Networks Laboratory (TIK), ETH Zurich. doi:10.3929/ethz-a-004284029",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "lateness",
        "fairness",
        "energy",
        "cost",
        "carbon"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Joslin, D. E., & Clements, D. P. (1999). Squeaky wheel optimization. Journal of Artificial Intelligence Research, 10, 353-373. doi:10.1613/jair.561",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 16,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "deterministic"
      ],
      "citation": {
        "reference": "Maheswaran, M., Ali, S., Siegel, H. J., Hensgen, D., & Freund, R. F. (1999). Dynamic mapping of a class of independent tasks onto heterogeneous computing systems. JPDC, 59(2), 107-131.",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 1,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "deterministic",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "constructive",
        "dispatching",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Zhang, F., Mei, Y., Nguyen, S., Zhang, M., & Tan, K. C. (2021). Surrogate-assisted evolutionary multitask genetic programming for dynamic flexible job shop scheduling. IEEE Transactions on Evolutionary Computation, 25(4), 651-665. doi:10.1109/TEVC.2021.3065707",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 12,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "local-search",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "De Reyck, B., & Herroelen, W. (1999). The multi-mode resource-constrained project scheduling problem with generalized precedence relations. European Journal of Operational Research, 119(2), 538-556. doi:10.1016/S0377-2217(99)00151-4",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 60,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "assignment",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Rao, R. V., Savsani, V. J., & Vakharia, D. P. (2011). Teaching-learning-based optimization: A novel method for constrained mechanical design optimization problems. Computer-Aided Design, 43(3), 303-315. doi:10.1016/j.cad.2010.12.015",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    },
    {
      "capabilities": [
        "single-objective",
        "capacity-aware",
        "precedence-aware",
        "metaheuristic",
        "repair",
        "seeded-stochastic"
      ],
      "citation": {
        "reference": "Mirjalili, S., & Lewis, A. (2016). The Whale Optimization Algorithm. Advances in Engineering Software, 95, 51-67. doi:10.1016/j.advengsoft.2016.01.008",
        "status": "canonical"
      },
      "default_stop": {
        "max_iterations": 14,
        "max_time_seconds": null,
        "target_objective": null
      },
      "dependencies": [],
      "disclosure_labels": [
        "core",
        "public"
      ],
      "encoding": "permutation",
      "evidence_eligible": true,
      "family": "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",
      "stochasticity": "seeded",
      "supported_objectives": [
        "makespan",
        "energy",
        "cost"
      ]
    }
  ]
}
