{"appId":"corridor-lab","modelVersion":"1.1.0","illustrative":true,"input":{"demand":12,"stages":[{"name":"Mine release","capacity":18,"availability":90,"variableCost":2.4,"fixedCost":14},{"name":"Rail corridor","capacity":14,"availability":85,"variableCost":7.6,"fixedCost":42},{"name":"Port stockyard","capacity":16,"availability":90,"variableCost":2.8,"fixedCost":20},{"name":"Vessel loading","capacity":15,"availability":80,"variableCost":3.2,"fixedCost":16}]},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"demand":{"type":"number","title":"Annual demand (Mt per year)","minimum":0,"maximum":1000,"description":"Illustrative input.","x-minimumMagnitude":1e-09,"anyOf":[{"const":0},{"minimum":1e-09},{"maximum":-1e-09}]},"stages":{"type":"array","title":"Serial stages","minItems":1,"maxItems":12,"items":{"type":"object","properties":{"name":{"type":"string","title":"Stage","minLength":1,"maxLength":100},"capacity":{"type":"number","title":"Nominal capacity (Mt/year)","minimum":0,"maximum":1000,"description":"Illustrative input.","x-minimumMagnitude":1e-09,"anyOf":[{"const":0},{"minimum":1e-09},{"maximum":-1e-09}]},"availability":{"type":"number","title":"Availability (%)","minimum":0,"maximum":100,"description":"Illustrative input.","x-minimumMagnitude":1e-09,"anyOf":[{"const":0},{"minimum":1e-09},{"maximum":-1e-09}]},"variableCost":{"type":"number","title":"Variable cost (USD/t)","minimum":0,"maximum":100000,"description":"Illustrative input.","x-minimumMagnitude":1e-09,"anyOf":[{"const":0},{"minimum":1e-09},{"maximum":-1e-09}]},"fixedCost":{"type":"number","title":"Annual fixed cost (USDm)","minimum":0,"maximum":1000000,"description":"Illustrative input.","x-minimumMagnitude":1e-09,"anyOf":[{"const":0},{"minimum":1e-09},{"maximum":-1e-09}]}},"required":["name","capacity","availability","variableCost","fixedCost"],"additionalProperties":false}}},"required":["demand","stages"],"additionalProperties":false},"inputLedger":[{"title":"Current general assumptions","columns":[{"key":"label","label":"Assumption and unit"},{"key":"value","label":"Exact supplied value"}],"rows":[{"label":"Annual demand (Mt per year)","value":"12"}]},{"title":"Serial stages","columns":[{"key":"name","label":"Stage"},{"key":"capacity","label":"Nominal capacity","unit":"Mt/year"},{"key":"availability","label":"Availability","unit":"%"},{"key":"variableCost","label":"Variable cost","unit":"USD/t"},{"key":"fixedCost","label":"Annual fixed cost","unit":"USDm"}],"rows":[{"name":"Mine release","capacity":"18","availability":"90","variableCost":"2.4","fixedCost":"14"},{"name":"Rail corridor","capacity":"14","availability":"85","variableCost":"7.6","fixedCost":"42"},{"name":"Port stockyard","capacity":"16","availability":"90","variableCost":"2.8","fixedCost":"20"},{"name":"Vessel loading","capacity":"15","availability":"80","variableCost":"3.2","fixedCost":"16"}]}],"output":{"modelVersion":"1.1.0","illustrative":true,"throughput":11.9,"unitCost":23.73109243697479,"bottlenecks":["Rail corridor"],"stageResults":[{"name":"Mine release","capacity":18,"availability":90,"variableCost":2.4,"fixedCost":14,"effectiveCapacity":16.2,"utilisation":73.45679012345678,"spareCapacity":4.3,"unitCost":3.576470588235294,"annualCost":42.56,"binding":"Spare"},{"name":"Rail corridor","capacity":14,"availability":85,"variableCost":7.6,"fixedCost":42,"effectiveCapacity":11.9,"utilisation":100,"spareCapacity":0,"unitCost":11.129411764705882,"annualCost":132.44,"binding":"Binding"},{"name":"Port stockyard","capacity":16,"availability":90,"variableCost":2.8,"fixedCost":20,"effectiveCapacity":14.4,"utilisation":82.63888888888889,"spareCapacity":2.5,"unitCost":4.480672268907563,"annualCost":53.32,"binding":"Spare"},{"name":"Vessel loading","capacity":15,"availability":80,"variableCost":3.2,"fixedCost":16,"effectiveCapacity":12,"utilisation":99.16666666666667,"spareCapacity":0.1,"unitCost":4.54453781512605,"annualCost":54.080000000000005,"binding":"Spare"}],"expansions":[{"name":"Mine release","expandedCapacity":19.44,"throughput":11.9,"gain":0,"nextConstraint":"Rail corridor"},{"name":"Rail corridor","expandedCapacity":14.28,"throughput":12,"gain":0.1,"nextConstraint":"Demand"},{"name":"Port stockyard","expandedCapacity":17.28,"throughput":11.9,"gain":0,"nextConstraint":"Rail corridor"},{"name":"Vessel loading","expandedCapacity":14.4,"throughput":11.9,"gain":0,"nextConstraint":"Rail corridor"}],"stressedThroughput":10.5,"stressCost":24.761904761904763,"variableCost":16,"fixedCost":92,"capacityEvaluation":{"policy":"Exact rational capacities, throughput and binding comparisons from canonical JSON-number decimals. Cost totals and plotted numeric values remain Number approximations.","demand":{"numerator":"12","denominator":"1","decimal":"1.200000000000000000000000000000000000000e1"},"throughput":{"numerator":"119","denominator":"10","decimal":"1.190000000000000000000000000000000000000e1"},"unservedDemand":{"numerator":"1","denominator":"10","decimal":"1.000000000000000000000000000000000000000e-1"},"stressedThroughput":{"numerator":"21","denominator":"2","decimal":"1.050000000000000000000000000000000000000e1"},"stages":[{"name":"Mine release","effectiveCapacity":{"numerator":"81","denominator":"5","decimal":"1.620000000000000000000000000000000000000e1"}},{"name":"Rail corridor","effectiveCapacity":{"numerator":"119","denominator":"10","decimal":"1.190000000000000000000000000000000000000e1"}},{"name":"Port stockyard","effectiveCapacity":{"numerator":"72","denominator":"5","decimal":"1.440000000000000000000000000000000000000e1"}},{"name":"Vessel loading","effectiveCapacity":{"numerator":"12","denominator":"1","decimal":"1.200000000000000000000000000000000000000e1"}}],"expansions":[{"name":"Mine release","capacity":{"numerator":"486","denominator":"25","decimal":"1.944000000000000000000000000000000000000e1"},"throughput":{"numerator":"119","denominator":"10","decimal":"1.190000000000000000000000000000000000000e1"},"gain":{"numerator":"0","denominator":"1","decimal":"0"}},{"name":"Rail corridor","capacity":{"numerator":"357","denominator":"25","decimal":"1.428000000000000000000000000000000000000e1"},"throughput":{"numerator":"12","denominator":"1","decimal":"1.200000000000000000000000000000000000000e1"},"gain":{"numerator":"1","denominator":"10","decimal":"1.000000000000000000000000000000000000000e-1"}},{"name":"Port stockyard","capacity":{"numerator":"432","denominator":"25","decimal":"1.728000000000000000000000000000000000000e1"},"throughput":{"numerator":"119","denominator":"10","decimal":"1.190000000000000000000000000000000000000e1"},"gain":{"numerator":"0","denominator":"1","decimal":"0"}},{"name":"Vessel loading","capacity":{"numerator":"72","denominator":"5","decimal":"1.440000000000000000000000000000000000000e1"},"throughput":{"numerator":"119","denominator":"10","decimal":"1.190000000000000000000000000000000000000e1"},"gain":{"numerator":"0","denominator":"1","decimal":"0"}}]},"metrics":[{"key":"throughput","label":"Deliverable throughput","value":11.9,"unit":"Mt/year","detail":""},{"key":"cost","label":"Whole-chain cost","value":23.73109243697479,"unit":"USD/t","detail":"All stages use the same chain throughput."},{"key":"gap","label":"Unserved demand","value":0.1,"unit":"Mt/year","detail":""},{"key":"stress","label":"Availability stress","value":10.5,"unit":"Mt/year","detail":"Each availability falls by 10 percentage points."}],"tables":[{"title":"Whole-chain operating balance","columns":[{"key":"name","label":"Stage","unit":""},{"key":"capacity","label":"Nominal","unit":"Mt/year"},{"key":"effectiveCapacity","label":"Effective","unit":"Mt/year"},{"key":"utilisation","label":"Utilisation","unit":"%"},{"key":"spareCapacity","label":"Spare","unit":"Mt/year"},{"key":"unitCost","label":"Stage cost","unit":"USD/t"},{"key":"annualCost","label":"Annual cost","unit":"USDm"},{"key":"binding","label":"Constraint","unit":""}],"rows":[{"name":"Mine release","capacity":18,"availability":90,"variableCost":2.4,"fixedCost":14,"effectiveCapacity":16.2,"utilisation":73.45679012345678,"spareCapacity":4.3,"unitCost":3.576470588235294,"annualCost":42.56,"binding":"Spare"},{"name":"Rail corridor","capacity":14,"availability":85,"variableCost":7.6,"fixedCost":42,"effectiveCapacity":11.9,"utilisation":100,"spareCapacity":0,"unitCost":11.129411764705882,"annualCost":132.44,"binding":"Binding"},{"name":"Port stockyard","capacity":16,"availability":90,"variableCost":2.8,"fixedCost":20,"effectiveCapacity":14.4,"utilisation":82.63888888888889,"spareCapacity":2.5,"unitCost":4.480672268907563,"annualCost":53.32,"binding":"Spare"},{"name":"Vessel loading","capacity":15,"availability":80,"variableCost":3.2,"fixedCost":16,"effectiveCapacity":12,"utilisation":99.16666666666667,"spareCapacity":0.1,"unitCost":4.54453781512605,"annualCost":54.080000000000005,"binding":"Spare"}]},{"title":"Single-stage 20% capacity expansion","columns":[{"key":"name","label":"Expanded stage","unit":""},{"key":"expandedCapacity","label":"New effective capacity","unit":"Mt/year"},{"key":"throughput","label":"Chain flow","unit":"Mt/year"},{"key":"gain","label":"Flow gain","unit":"Mt/year"},{"key":"nextConstraint","label":"Next constraint","unit":""}],"rows":[{"name":"Mine release","expandedCapacity":19.44,"throughput":11.9,"gain":0,"nextConstraint":"Rail corridor"},{"name":"Rail corridor","expandedCapacity":14.28,"throughput":12,"gain":0.1,"nextConstraint":"Demand"},{"name":"Port stockyard","expandedCapacity":17.28,"throughput":11.9,"gain":0,"nextConstraint":"Rail corridor"},{"name":"Vessel loading","expandedCapacity":14.4,"throughput":11.9,"gain":0,"nextConstraint":"Rail corridor"}]}],"warnings":["Unserved illustrative demand is 0.1 Mt/year. This is a deterministic capacity gap, not a forecast."],"summary":"The binding stage is Rail corridor. A 20% expansion of Rail corridor creates the largest tested gain of 0.1 Mt/year. Availability stress changes flow to 10.5 Mt/year and unit cost to 24.76 USD/t.","methods":["Effective stage capacity = nominal capacity × availability.","Serial throughput = minimum of demand and effective stage capacities.","Chain unit cost = sum of variable cost + sum of annual fixed cost / actual annual throughput. USDm divided by Mt gives USD/t.","Each expansion case increases one nominal capacity by 20%; availability stress reduces every stage by 10 percentage points.","Capacity products, throughput, demand gaps and constraint membership use exact rational arithmetic for each canonical decimal input; plotted quantities and costs use numeric approximations."],"limitations":["Steady-state serial system, with no routing alternatives, queues, seasonality, dispatch or inventory simulation.","Availability and cost values are user assumptions. No geographic or actual operating project is represented.","Exactness applies to the supplied canonical decimal values, not their empirical accuracy. Annual cost and display calculations retain floating-point precision.","Numerical input precision: use zero or absolute values of at least 0.000000001. Smaller nonzero inputs are rejected explicitly."]}}