APEX: An Extensible Model for Agent-Assisted Production Scheduling
Organizations: Qunevo GmbH, Germany
Abstract
Production scheduling requires realistic models that reflect operational constraints and efficient methods that balance competing goals. Putting these methods into use also requires data integration, model adaptation and specialist expertise. We present APEX, an extensible production scheduling framework built around a general model and hybrid multiobjective search. Agent assistance supports both scheduling and model refinement: agents prepare data and explore scenarios in natural language, while coding agents help implement and test new constraints and objectives. Shared construction and checking procedures connect these adaptations to the scheduling core. We benchmark eight APEX configurations against NSGA-II, SPEA2, MOEA/D and SMS-EMOA on 69 public job-shop, flexible job-shop and permutation flow-shop instances, assessing workload completion time (makespan), total job flowtime and computation time. Hybrid configurations achieve the best aggregate solution quality, although the leading method depends on the problem class and objective. A separate synthetic workflow study uses OpenAI's GPT-6-astra as an interaction layer between the human planner and the algorithmic core, testing rule additions, plan and objective changes, and what-if comparisons. All 24 sessions completed the requested changes and passed independent checks of saved models and schedules. A separate coding evaluation produced six native implementations of an additional objective or hard constraint through predefined extension hooks. All passed independent checks without modifying the core.
Figures & tables
| Study and setting | Model coverage | Method and evidence setting |
|---|---|---|
| Lan and Berkhout (2025) ; multiple machine and project families | Common task, mode, resource and temporal-constraint interface | CP; cross-family public benchmarks; preprint |
| Kasapidis et al. (2025) ; flexible job shop | Tools, utilities, material resources, buffers and blocking | CP with adaptive large-neighbourhood search; established and generated combined-resource instances |
| Perrachon et al. (2025) ; multi-resource job shop | Resources required during selected operation stages | Simulated annealing with reinsertion; benchmark comparison with commercial CP |
| Yasari et al. (2025) ; operator–machine job shop | Operator assignment and physical-workload limits | MILP with row generation; extended benchmark instances |
| Terbrack and Claus (2025) ; flexible job shop | Energy costs, demand peaks and emissions, with setups and due dates | CP with lexicographic objectives; computational instances |
| Ferreira et al. (2026) ; hybrid flow shop | Parallel machines at stages; sequence- and machine-dependent setups | Column generation and iterated local search; generated two-stage instances |
| Study | Agent role | Evidence setting |
|---|---|---|
| Bakopoulos et al. (2024) | Coordination of scheduling methods | Bicycle production; digital-twin validation |
| Ahmaditeshnizi et al. (2024) | Model formulation and solver-code generation | Natural-language LP/MILP modelling benchmarks |
| May et al. (2026) | Generation and critique of dispatching rules | Dynamic job-shop simulation |
| Wang et al. (2025) | Scheduling-tool selection and coordination | FJSP simulations and robotic experiments |
| Yuan et al. (2025) | Natural-language system operation | Simulated garment MES; designed requests |
| Ye et al. (2026) | Preference interpretation and Pareto explanation | Job shops, flow shops and flexible job shops; preprint |
| Method | HV deficit (%) | MS gap (%) | FT gap (%) | Time (s) |
|---|---|---|---|---|
| XG | 3.498 | 18.405 | 14.587 | 0.035 |
| XH | 0.898 | 3.025 | 4.490 | 39.820 |
| XT | 1.364 | 6.910 | 6.976 | 35.606 |
| XE | 1.700 | 11.226 | 8.841 | 19.784 |
| XHT | 0.728 | 2.537 | 4.001 | 39.819 |
| XHE | 0.466 | 1.844 | 3.053 | 30.068 |
| Workflow | Requested change | Passes | MS (s) | Mode cost (a.u.) |
|---|---|---|---|---|
| Rules | M1 unavailable on | 3/3 | 6,300 | 30 |
| J3-2 within | 3/3 | 9,300 | 30 | |
| Plans | J2-1 on M2 at | 3/3 | 8,400 | 30 |
| Freeze baseline starts before | 3/3 | 4,800 | 30 | |
| Objectives | Tardiness first, then makespan | 3/3 | 4,800 | 30 |
| Mode cost first, then makespan | 3/3 | 9,000 | 12 |
| New implementation | Accepted/submitted | Checks | Median time (s) |
|---|---|---|---|
| Squared-tardiness objective | 3/3 | 68 | 198.0 |
| Exposure-balance constraint | 3/3 | 61 | 249.6 |
Appendix figures & tables7 assets
Supplementary material from the paper’s appendix.
Appendix
| Class | Method | HV (%) | MS (%) | FT (%) | Time (s) |
|---|---|---|---|---|---|
| JSP | XG | 3.560 | 16.837 | 11.323 | 0.022 |
| JSP | XH | 0.271 | 1.366 | 1.729 | 26.454 |
| JSP | XT | 0.434 | 3.013 | 3.335 | 22.143 |
| JSP | XE | 2.309 | 12.461 | 9.965 | 5.580 |
| JSP | XHT | 0.192 | 1.193 | 1.145 | 27.275 |
| JSP | XHE | 0.331 | 1.516 | 2.116 | 16.561 |
| Method | HV deficit (%) | MS gap (%) | FT gap (%) | Time (s) |
|---|---|---|---|---|
| XG | 3.666 | 17.639 | 14.482 | 0.037 |
| XH | 1.098 | 3.604 | 5.231 | 42.164 |
| XT | 1.447 | 6.714 | 7.061 | 37.972 |
| XE | 1.585 | 10.007 | 7.963 | 24.281 |
| XHT | 0.877 | 2.981 | 4.504 | 42.452 |
| XHE | 0.520 | 1.965 | 3.165 | 33.577 |
| Class | Instance | Family | Jobs | Machines | Operations |
|---|---|---|---|---|---|
| JSP | abz5 | OR-Library | 10 | 10 | 100 |
| JSP | ft06 | OR-Library | 6 | 6 | 36 |
| JSP | la01 | OR-Library | 10 | 5 | 50 |
| JSP | la06 | OR-Library | 15 | 5 | 75 |
| JSP | la16 | OR-Library | 10 | 10 | 100 |
| JSP | tai_jsp002 | Taillard | 15 | 15 | 225 |
| Class | Instance | XG | XH | XT | XE | XHT | XHE | XTE | XHTE | NSGA-II | SPEA2 | MOEA/D | SMS-EMOA |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| JSP | abz5 | 10.320 | 0.431 | 0.669 | 6.432 | 0.157 | 0.498 | 0.643 | 0.306 | 1.694 | 1.503 | 1.421 | 1.746 |
| JSP | ft06 | 18.652 | 0.206 | 0.008 | 5.782 | 0.200 | 0.195 | 0.044 | 0.208 | 0.557 | 0.194 | 1.388 | 1.096 |
| JSP | la01 | 4.817 | 0.687 | 0.243 | 2.153 | 0.498 | 0.785 | 0.252 | 0.489 | 1.807 | 1.690 | 1.117 | 1.168 |
| JSP | la06 | 2.187 | 0.780 | 0.249 | 1.930 | 0.367 | 0.942 | 0.326 | 0.315 | 1.607 | 1.553 | 1.533 | 1.356 |
| JSP | la16 | 4.661 | 0.719 | 0.000 | 2.760 | 0.634 | 0.869 | 0.219 | 0.217 | 0.887 | 0.987 | 1.396 | 1.150 |
| JSP | tai_jsp002 | 3.181 | 0.140 | 0.327 | 2.707 | 0.025 | 0.103 | 0.327 | 0.025 | 1.726 | 1.566 | 1.617 | 1.840 |
| Class | Instance | XG | XH | XT | XE | XHT | XHE | XTE | XHTE | NSGA-II | SPEA2 | MOEA/D | SMS-EMOA |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| JSP | abz5 | 0.003 | 2.644 | 2.117 | 1.186 | 2.459 | 1.838 | 1.648 | 2.030 | 0.193 | 0.222 | 0.329 | 0.188 |
| JSP | ft06 | 0.001 | 0.701 | 0.585 | 0.430 | 0.727 | 0.534 | 0.543 | 0.637 | 0.090 | 0.123 | 0.235 | 0.097 |
| JSP | la01 | 0.001 | 1.245 | 0.967 | 0.575 | 1.113 | 0.864 | 0.820 | 1.010 | 0.116 | 0.142 | 0.261 | 0.121 |
| JSP | la06 | 0.002 | 2.154 | 1.889 | 0.914 | 1.968 | 1.542 | 1.361 | 1.699 | 0.168 | 0.188 | 0.327 | 0.160 |
| JSP | la16 | 0.002 | 2.312 | 1.926 | 1.103 | 2.379 | 1.891 | 1.615 | 1.938 | 0.190 | 0.219 | 0.380 | 0.208 |
| JSP | tai_jsp002 | 0.007 | 7.756 | 6.485 | 2.696 | 7.614 | 5.159 | 4.619 | 5.985 | 0.378 | 0.435 | 0.601 | 0.385 |
| Stage 1 | Stage 2 | ||||
| Job | M1 | M2 | M3 | M4 | Stage-2 due time |
| J1 | 1,200 | 1,500 | 900 | 1,200 | 4,200 |
| J2 | 900 | 1,200 | 1,500 | 900 | 4,800 |
| J3 | 1,800 | 1,200 | 1,200 | 1,500 | 5,400 |
| J4 | 1,500 | 900 | 1,800 | 1,200 | 6,000 |
| J5 | 1,200 | 1,800 | 900 | 1,500 | 6,600 |
| Measure | Value |
|---|---|
| Sessions | 24 |
| Median session time (s) | 44.5 |
| Median tool calls | 7 |
| Median internal XH time (ms) | 16.7 |
| Median input tokens | 163,176.5 |
| Median output tokens | 770.5 |