Notes · 30 September 2026 · Jonathan Klinshaw, Agile Integrations — author, concept and rulings · Day — the figures, the computed records and the measurements · Claude (Anthropic) — engineering consultant of record: design and build
Closing the gaps: what a scheduling engine can and cannot do on four sustainability problems
Energy storage, farming, industrial heat and recycling each wait on technology that is not ready, and a scheduling engine cannot build any of it; it can only decide how to run what already exists. We measured that on small problems, one per gap, each answer set against the best of every possible answer on the same table, one run each on 30 September 2026. The losses come first. Past twenty moving parts, four of the five answers that could be checked fell short of the best: ten generating units cost 2.17 times the best schedule, four furnaces 1.92 times and five units 1.2 % more, and an eight-field farm got no plan at all while the response still called it feasible. A registered re-test then falsified that status word: it comes from why the search stopped and never reads the plan. The 107-part microgrid day stopped at its step limit and was not checked against the best, and the 240-choice day has not been run. What held: at twenty moving parts or fewer the engine's answer was the best of all 1,048,576 possible answers, checked one by one, in all four problems, and one eight-part teardown found a best order anyway. None of this closes a technology gap: a scheduler models no chemistry, agronomy or materials.
1 · Why now
The pressure is easy to state in the words of the people who measure it. About 8.3 billion people were alive on 1 July 2026, in Worldometer's reading of the United Nations' World Population Prospects. The Global Footprint Network puts the limit this way: "Earth Overshoot Day marks the date when humanity's demand for ecological resources and services in a given year exceeds what Earth can regenerate in that year." In 2026 that day fell on 30 July.
Four gaps stand out. On food, Our World in Data writes, after Poore and Nemecek (2018), that "Food is responsible for approximately 26% of global GHG emissions." Each quotation here, and FAO's table in section 4, is used for research under the source's published terms, with written confirmation pending. That is one estimate: a study that counts the food system more widely, from land use to packaging and waste, puts its share at about a third (Crippa and others 2021). On materials, Circle Economy writes that "To limit warming to below 2-degrees, we aim to boost global circularity to 17% by 2032—up from 6.9% today." On storage, the International Energy Agency assigns flexibility over days and weeks to pumped hydro, and over months to thermal and hydrogen storage; the batteries being built today serve shorter cycles. On heat, its hydrogen review finds that hydrogen, one of the fuels proposed for the hottest furnaces, is still made almost entirely from fossil fuels.
These are gaps in technology: a battery that lasts a season, a fertiliser made without gas, a furnace hot enough for steel that burns no coal, and a way to take a product apart so that its materials come back. The question here is narrower: what can a scheduling engine add to them?
What this note contributes, losses first, each with its basis and the sections that carry it:
- Measured, one run. Past twenty moving parts, four of the five answers that could be checked fell short of the best: 2.17 times the best schedule for ten units, 1.92 times for four furnaces, 1.2 % above for five units, and no plan for an eight-field farm (sections 3 to 6 and 8).
- Measured, one run. A registered re-test falsified the status word "feasible": it never reads the plan (section 4).
- Theorem in the model. At twenty moving parts or fewer, the engine's answer is the best of every possible answer on the stated table, in all four problems (sections 3 to 6 and 8).
- Reading. One decision per gap, posed as the operator's own rules, with its formulation (sections 3 to 6).
- Reading. The chain from a weather forecast to a storage schedule, described and not run end to end (section 7).
2 · What an engine can and cannot do about a gap
Our engine is described on our public pages, and we use those words here. You hand it your rules as they already are, and it finds the arrangement that satisfies them best. "Up to twenty moving parts it gets there by visiting every point — all 1,048,576 of them, in about half a second on an ordinary processor — so the answer is the best one, not a good guess. Above twenty it tells you how far from the best it could be." On the problems below, the exact cases took 0.17 to 0.55 seconds on the processor, one run each.
That is a scheduling tool. It does not invent the long-duration battery, the green ammonia plant or the hydrogen furnace. It works on what already exists: which generator runs this hour, which field gets which crop, which furnace is lit, which part comes off first. Scheduling cannot close a technology gap. What it can do is keep what already exists from being run badly, which would only widen the gap.
So each of the four examples below poses one decision in an operator's own terms, solves it, and checks the answer by visiting every possible answer ourselves, in a check that imports none of the engine's code. Where the problem is too big for that check, we say so. Each section's results run losses first.
3 · Storage and the grid
The decision. A grid operator has ten generating units and a day with a low point overnight and a peak in the evening. Each unit either runs flat out for the hour or stays off. Running costs fuel, and starting a cold unit costs extra. The question is which units to run in each hour so that supply covers demand at the least cost.
The fleet is a public benchmark: the ten units of Kazarlis, Bakirtzis and Petridis (1996), as de Mars (2022) reproduces them, used under the thesis's CC BY 4.0 licence, with their published fuel curves, read here at full output, and their start costs. The demand is the lowest and highest demand of one test day that the same thesis publishes, so the day has two periods. Smaller slices of the fleet take the same share of that demand, rounded up.
minimise Σ over hours t, Σ over units u, c(u) · x(u, t) + s(u) · start(u, t) subject to Σ over units u of P(u) · x(u, t) ≥ D(t) in every hour t
Here x(u, t) is whether unit u runs in hour t, c(u) is what an hour at full output costs, s(u) is its start cost, start(u, t) is whether it was off the hour before and runs now, P(u) is its capacity and D(t) is the demand.
| Slice of the ten-unit fleet | Choices | Moving parts in all | Engine's schedule, in the benchmark's dollars | Best schedule, checked one by one | Verdict | Time on the processor, one run |
|---|---|---|---|---|---|---|
| Units 8 to 10 | 6 | 20 | 8,599.32 | 8,599.32 | the best, every answer checked | 0.55 s |
| Units 6 to 10 | 10 | 26 | 12,035.44 | 11,897.73 | past the exact window; 1.2 % above the best | 0.03 s |
| All ten units | 20 | 40 | 79,259.86 | 36,558.78 | past the exact window; 2.17 times the best | 0.05 s |
Past twenty the engine answers but gives no guarantee for its answer. For all ten units it ran every unit in both hours: a schedule that works, at 2.17 times the cost of the best one, and why it chose that schedule is not described here, as the engine's method is not. Its own bound said the answer could be very far from the best, which was true, but the bound was in the engine's internal units, not dollars. The first row is inside the exact window, and the engine's answer is the best of every possible answer. Six choices need twenty moving parts, because the rule that supply must cover demand takes fourteen more to state.
The storage question. A second fixture is a small microgrid over a day: solar that peaks at noon, a peak in the evening, a storage fleet, a peaker plant and a tie to the utility. Its version with 18 moving parts is solved exactly, and a check of every answer agrees. The full day has 107 moving parts; the run stopped at its step limit and was not checked against the best. Its result is below, set for reference beside a day with neither storage nor the tie, which differs from it in two resources at once.
| The microgrid over a day | Before (no storage, no tie) | Engine's schedule |
|---|---|---|
| Peaker energy | 130.83 MWh | 76 MWh |
| Solar thrown away | 6.62 MWh | 25.11 MWh |
| Bought over the tie | none available | 96 MWh |
| Charges into storage | none available | 0 |
| Cost, in the fixture's dollars | 1,962.40 | 1,620.00 |
The engine never charged the storage, and it threw away more solar. It cut the cost and the peaker's hours, and the saving came from buying 96 MWh over the tie. The likely reason is in the fixture: it prices power bought over the tie at 20 dollars a step, below the peaker's 60, so buying beats storing. The arm that would isolate it, the same day with the tie priced above the peaker, was not run, so we expect, and have not measured, that it would store. We report the result as it fell.
We schedule storage; we do not make it, and nothing here models cell chemistry. Each unit is on at full output or off: there is no ramp, no reserve, no state of charge and no minimum time on or off. The costs are a fitted table, the published fuel curve read at full output, so no cost here can be compared with a cost published for the benchmark.
4 · Agriculture
The decision. A farm has fields of different sizes and a short list of crops. In a dry year it wants to plant every field and draw the least irrigation water. Each crop is held to its rotation limit in hectares.
Each crop's water need is FAO's seasonal figure at the top of its range: 500 mm for beans, 650 mm for sorghum and millet, 700 mm for groundnut and 800 mm for maize. We plan against the top of FAO's range; that is our choice, and nothing here tests a dry year. The field sizes and rotation limits are the farm's own table, and ours are illustrative.
minimise Σ over fields f, Σ over crops c, W(c) · A(f) · x(f, c) subject to Σ over fields f of A(f) · x(f, c) ≤ L(c) for every crop c
Here x(f, c) is whether field f grows crop c, W(c) is the crop's water need per hectare, A(f) is the field's area and L(c) is the crop's rotation limit. Every field takes exactly one crop.
| Farm | Choices | Moving parts in all | Engine's water | Least water, checked one by one | Verdict | Time on the processor, one run |
|---|---|---|---|---|---|---|
| 4 fields, 3 crops | 12 | 19 | 50,500 m³ | 50,500 m³ | the best, every answer checked | 0.22 s |
| 8 fields, 4 crops | 32 | 45 | none | 172,500 m³ | no answer: it planted 0 of 8 fields, and the door still said feasible | 0.06 s |
The larger farm is our worst result in this note. The answer planted no field at all, and the response still called it feasible. An empty plan is not an answer, and we have recorded it as a defect to fix, not a number to quote. A registered re-test, frozen before its run, then falsified the status word itself: with the one-crop rule in force the response still marks the empty plan feasible, because the word is computed from why the search stopped and never reads the plan. A simulation on our fixtures, it tests the engine's door, not a farm. The small farm came back with the least water of every possible answer, each one checked.
Sharing the canal. Three farms share six turns of a canal, and each scores the turns by how much its crop needs water that week. The turns cannot be split. The division has to be one that no farm could fairly object to:
for every two farms i and j: vᵢ(what i gets) ≥ vᵢ(what j gets, less the turn i wants most from it)
| Farm | Turns it gets | Its own score of them | Its maximin share |
|---|---|---|---|
| Farm a | turn 1, turn 4 | 7 | 5 |
| Farm b | turn 2, turn 5 | 7 | 5 |
| Farm c | turn 3, turn 6 | 8 | 6 |
Every farm scores its own turns above its maximin share: the most it could be sure of if it divided the turns itself and took the worst share. No farm envies another, so the weaker rule above holds as well. The check re-derives each guarantee from the allocation rather than asserting it, and it has to: with three or more farms, a division that gives every farm its maximin share need not exist, so the guarantee holds for this division, checked, not for every case (Kurokawa and others 2018).
Nothing here knows agronomy, soil or yield. The water is FAO's seasonal range read at its top; the field sizes, the rotation limits and the farms' scores are the caller's table.
5 · Industrial heat
The decision. A heat-treatment shop has furnaces of different sizes. Each costs something per period while it is lit, and more to light from cold. The shop needs a given amount of heat in each period. This is the grid problem again, with furnaces in place of generators and heat in place of power.
minimise Σ over periods t, Σ over furnaces f, c(f) · x(f, t) + s(f) · start(f, t) subject to Σ over furnaces f of H(f) · x(f, t) ≥ Q(t) in every period t
Here H(f) is a furnace's heat output when lit and Q(t) is the heat the shop needs. The furnace table is illustrative.
| Furnace shop | Choices | Moving parts in all | Engine's cost | Least cost, checked one by one | Verdict | Time on the processor, one run |
|---|---|---|---|---|---|---|
| 3 furnaces, 3 periods | 9 | 20 | 614 | 614 | the best, every answer checked | 0.52 s |
| 4 furnaces, 5 periods | 20 | 44 | 1,990 | 1,034 | past the exact window; 1.92 times the best | 0.05 s |
The pattern matches the grid. Past twenty the engine lit every furnace in every period, which works but costs nearly twice the best plan; the best of the 1,048,576 lit-or-unlit patterns was re-derived by a separate check. Inside twenty the answer is the best of every possible answer, each one checked.
No thermodynamics and no chemistry. A furnace here is a capacity, a running cost and a cold-start cost: no temperatures, no heat balance, no ramp. Nothing here designs a hydrogen furnace or a heat exchanger.
6 · The circular economy
The decision. A recycler takes a laptop apart one part at a time. Some parts must come off before others: the back cover before anything inside it, and the battery, fan, memory and wireless card before the motherboard. The recycler wants the battery out first because it is the hazard, and the boards and memory early because they carry the value. The question is the order of removal.
minimise Σ over parts p of w(p) · position(p) subject to position(a) < position(b) for every rule "a comes off before b"
Here w(p) is how much the recycler wants part p early. The teardown table is illustrative. Small published teardowns exist in the disassembly-sequencing literature, but the one open article we read only cites one, of an eight-part personal computer, without reproducing it, and we would not type one from memory.
| Teardown | Moving parts in all | Engine's order | Its score | Best score, checked one by one | Verdict | Time on the processor, one run |
|---|---|---|---|---|---|---|
| 6 parts | 15 | back cover, battery, ssd, ram, fan, motherboard | 111 | 111 | the best, every answer checked | 0.17 s |
| 8 parts | 28 | back cover, battery, ssd, ram, wifi card, fan, motherboard, display | 167 | 167 | past the exact window; the separate check found it was the best | 0.03 s |
Past twenty moving parts the engine gives no guarantee for its order. For eight parts, the separate check over every order found that it was one of the two best orders, a tie.
The rules about what comes off first must be given. Nothing here reasons about geometry, fasteners or materials, and the scores are the recycler's own.
7 · How the weather forecasts feed the storage problem
A storage schedule is only as good as its forecast of the sun and the wind. Our weather product serves both as map layers, and its readings come with the time each is valid for and the forecast's own spread, not a single line. The chain from forecast to schedule has three steps.
- The supply for each hour. Read the forecast for the site's wind or sunlight, hour by hour, keeping the spread and the status of each reading.
- The cost of each hour. The operator turns supply into a cost or value for each hour with its own power curve and tariff. Demand and price come from the forecasting product.
- The schedule. Each hour becomes a choice, such as charge, hold or discharge, and the scheduler above picks the cheapest sequence that keeps every rule.
Two limits come with the chain. First, the weather product says in its own words: "We do not publish a skill number for irradiance or for wind, and we will not print one we have not measured." Second, we have not run this chain end to end in this note: the microgrid's solar curve is the fixture's own, not a forecast.
8 · From a small exact case to the whole benchmark
Every example above climbs the same ladder:
- Well past twenty, the answer can be poor. Ten units cost 2.17 times the best schedule, and four furnaces cost 1.92 times the best plan. The eight-field farm got no plan at all, and its status word was falsified.
- The bound was honest and not useful. Above twenty the engine always reported how far it might be from the best. On these problems that figure is in the engine's own units, and it was far too loose to say how many dollars were at stake.
- A little past twenty, the answer is close but carries no guarantee. In two examples, five units of the fleet came in 1.2 % above the best, and the eight-part teardown found one of its two best orders.
- Up to twenty moving parts, the answer is the best of every possible answer, each one checked. One exact case per gap, and each agreed with that check; each is one run on a fixed table.
The whole benchmark, ten units over a full 24-hour day, is 240 choices, and it has not been run. That is past both our exact window and any check of every answer, though not past exact methods published elsewhere, which certify optima for problems of this kind well beyond twenty choices (Rendl and others 2010; Carrión and Arroyo 2006). The thesis we read carries the fleet but not the 1996 paper's load curve; a run of the day on a public curve would decide whether the answers past twenty hold on the full day.
9 · Companion papers
Seven papers published beside this one take the same approach. The Operational Unit sets out six invariants a system should satisfy: an account that is only ever appended to, a written objective, refusals logged as acts, a certificate for every decision that can be re-opened, measured emissions, and boundaries tested by trying to cross them. They can serve as a checklist for a grid operator's scheduling system. The periodic table as a ground-state ladder checks each of its answers against a public reference table and reports what matched and what did not: the same shape as this note. Sense, remember, act describes what the engine senses, remembers and learns, and reports its measured results worst first, including the recalls it got wrong. The halo of a decision reads a two-way choice, the partner it is tied to and the event that tied them in textbook terms, and says what an experiment could measure. The Earth as a two-state recorder reads the Earth's dipole onto the same sphere from public records, with a prediction written before the data. HOPE: recall in a library of Hilbert spaces says what the engine's memory finds and where it stops, with the results that went against it first. The unit of work books a receipt for one settled problem on a hash-chained ledger and says what it is not, with the economy's measured losses first.
10 · How this was made: the method and the chain of records
The question was set on 30 September 2026 as a written brief, with three scope rules: publish only what is measured, name the limits, and quote the sources in their own words. The chain of records, in order:
- the measured record of the four examples, written on 30 September 2026, from which every table and the figure on this page are printed;
- a separate check that imports none of the engine's code and re-derived every best answer in exact integer arithmetic;
- two re-tests, each frozen in a registration committed alone before its run: the furnace patterns held, and the farm's status word was falsified;
- the tests that hold this page equal to its source and every number to its record, and this page, generated from its source.
Where a number disagreed with what we hoped, the number stayed and the prose changed.
11 · Limits, and what this note does not say
The open limits come first, each with what would close it.
- The status word never reads the plan (section 4). It would close with a status computed from the plan against its constraints, re-run on the same farm.
- The bound is in the engine's units, not in dollars, cubic metres or any other unit of the problem itself (section 8). It would close with the bound converted to the problem's own units and checked against the exact cases.
- The 240-choice day has not been run (section 8). It would close with the day run on a public demand curve, its result printed whatever it shows.
- The chain from a weather forecast into the storage problem has not been run (section 7). It would close with a forecast-fed run of the storage problem with the forecast's own error recorded beside it.
- Each size is one instance, and no second solver was run on the same instances. It would close with seeded instances at each size and a named second solver on the same instances.
- Three of the four examples rest on illustrative tables in whole or in part, and the note says which. It would close with an operator's own tables in place of the illustrative ones, the result labelled as theirs.
- Every time is one run on one processor, with no graphics card. It would close with the same fixtures read on a graphics card and on a second machine, with the load recorded.
- The engine's own loop is open in three places. Nothing yet writes back how far a scheduled outcome landed from what was observed, so a schedule does not learn from its own misses; the second clock the series' model gives a pending decision has not been read on a running record; and nothing yet chooses which reading to take next by what it would teach. Each would close with its named writer, clock or chooser built and measured on the same fixtures; each is named work with its own test, not a result.
Same observation, three vocabularies. Three fields (information theory, systems and graph theory) describe the same situation in different words, and an insight in one usually has a twin in the other two. This series names a twin only where its own model has the object, and says so where a twin is missing or runs the other way. Each twin is our reading, not an identity, unless a result the paper states makes the two one number. The forecast chain of section 7 is one such observation, and a limit as well. In information theory, the steps after the forecasts read only the forecasts, what the steps before them pass on, and fixed tables such as the operator's power curve and tariff, so they can keep or lose what the forecasts say about tomorrow's sun, wind, demand and price but cannot add to it, and the schedule can know no more than its weakest step passes on. Read as a system, that weakest step is the one to fix first: improving any other cannot lift the ceiling it sets. Read as a graph, every path from the forecasts to the schedule runs through the cost of each hour, so the narrowest cut between them, the set of links that separates them and carries the least, bounds what reaches the schedule, and widening a link outside that cut cannot lift the bound. With no skill number measured and the chain not run end to end (section 7), which step is the weakest has not been shown.
The standing statements, which no measurement closes:
Day ran the four examples, checked the small ones against every possible answer and drew the figure from that record. Claude (Anthropic), the consultant named in the byline, designed and built the engineering: the four examples, the checks that visit every answer, the tests that pin this page to its measurements, and the words the page uses.
An engine that schedules cannot close a technology gap: it does not make batteries, grow crops, run furnaces or recycle anything, and nothing in this note models chemistry, thermodynamics, agronomy or materials. Every cost, score and limit is a table the caller supplies. Each problem is solved as on-or-off choices, so a continuous quantity such as hectares or megawatts becomes a whole number of units first. How the engine searches is not described here, and will not be. Every figure is as of the date its source gives.
Acknowledgements
- de Mars, arXiv:2212.06001, CC BY 4.0. The unit-commitment instance: the table lines of the ten-unit fleet, and the lowest and highest demand of one test day, copied verbatim from the thesis. The paper's smaller slices of the fleet take the same share of that demand, as the paper states.
- FAO, Irrigation Water Management training manual, chapter 2. Table 2 of the chapter, the approximate values of seasonal crop water needs, taken row for row; the paper reads each crop at the top of its range. Used for research under the source's published terms; written confirmation pending.
- Single sentences from Circle Economy, Global Footprint Network and Our World in Data, each quoted verbatim, and the population figure of Worldometer (after the United Nations). Each is named with its page and the date read in the references. Used for research under the source's published terms; written confirmation pending.
Replicate this paper, or tell us what is wrong
We invite replication and correction. The measured results come from records committed in our repository. The records are not yet published; until they are, write to us through the contact page, naming the paper and the number you want to rebuild or the error you found. We correct an error we can reproduce on the paper's web page, with its date.
The tests this paper registered before reading their data are frozen, each with the rule that would fail it, in docs/PAPER_EXPERIMENTS_REGISTRY_2026_10_07.md.
How to cite this paper
Please cite this paper as:
Agile Integrations LLC. 2026. "Closing the gaps: what a scheduling engine can and cannot do on four sustainability problems." Version 1, 30 September 2026. https://agileintegrations.net/blog/closing-the-gaps.html
Citation file: CITATION.cff.
12 · References
- Carrión, M. and Arroyo, J. M. 2006. "A Computationally Efficient Mixed-Integer Linear Formulation for the Thermal Unit Commitment Problem." IEEE Transactions on Power Systems. 10.1109/TPWRS.2006.876672
- Circle Economy. n.d. The Circularity Gap Report. circularity-gap.world/updates-collection/global-circularity-rate-fell-to-6-9---despite-growing-recycling, accessed 30 September 2026
- Crippa, M., Solazzo, E., Guizzardi, D., Monforti-Ferrario, F., Tubiello, F. N. and Leip, A. 2021. "Food systems are responsible for a third of global anthropogenic GHG emissions." Nature Food. 10.1038/s43016-021-00225-9
- de Mars, P. 2022. Reinforcement Learning and Tree Search Methods for the Unit Commitment Problem. PhD thesis, University College London. arXiv:2212.06001
- Food and Agriculture Organization of the United Nations. n.d. Irrigation Water Management training manual, chapter 2, Water and soil requirements. www.fao.org/4/u3160e/u3160e04.htm, accessed 30 September 2026
- Global Footprint Network. n.d. Earth Overshoot Day. overshoot.footprintnetwork.org, accessed 30 September 2026
- Gungor, A. and Gupta, S. M. 1999. "Issues in environmentally conscious manufacturing and product recovery: a survey." Computers & Industrial Engineering. 10.1016/s0360-8352(99)00167-9
- International Energy Agency. 2025a. Electricity 2025, supply. www.iea.org/reports/electricity-2025/supply
- International Energy Agency. 2025b. Global Hydrogen Review 2025, executive summary. www.iea.org/reports/global-hydrogen-review-2025/executive-summary
- Kazarlis, S. A., Bakirtzis, A. G. and Petridis, V. 1996. "A genetic algorithm solution to the unit commitment problem." IEEE Transactions on Power Systems 11, 83–92. As reproduced in de Mars 2022. 10.1109/59.485989
- Kurokawa, D., Procaccia, A. D. and Wang, J. 2018. "Fair Enough: Guaranteeing Approximate Maximin Shares." Journal of the ACM. 10.1145/3140756
- Lambert, A. J. D. 2003. "Disassembly sequencing: A survey." International Journal of Production Research. 10.1080/0020754031000120078
- Our World in Data. n.d. Food production is responsible for a quarter of the world's greenhouse gas emissions. ourworldindata.org/food-ghg-emissions, accessed 30 September 2026
- Poore, J. and Nemecek, T. 2018. "Reducing food's environmental impacts through producers and consumers." Science. 10.1126/science.aaq0216
- Rendl, F., Rinaldi, G. and Wiegele, A. 2010. "Solving Max-Cut to optimality by intersecting semidefinite and polyhedral relaxations." Mathematical Programming 121, 307–335. 10.1007/s10107-008-0235-8
- Worldometer. 2026. World Population, an elaboration of United Nations, World Population Prospects: The 2024 Revision. www.worldometers.info/world-population, accessed 30 September 2026
Print this paper, or save it as a PDF, with the print command in your browser. The page is laid out for paper.
Where this starts
If you have a schedule of your own, whether generators, fields, furnaces or a teardown line, put the question to our consultant or read how engagements work. An engagement starts with a week-long diagnostic that ends in a written assessment.