Parametric Cost Estimation (vehicle-design/cost-estimation/parametric-cost)
Use when the task is parametric cost estimation for an aircraft
development and production program: learning curve exponents, unit
costs, cumulative production totals, weight-based development cost
estimating relationships, and the total program cost rollup.
Domain quick reference
- All costs are in program currency units, airframe mass in kg, and
the learning curve lc is dimensionless (0.85 typical, 80-95% band).
- Learning curve exponent: s = ln(lc) / ln(2). For lc = 0.85, s =
-0.234465; each doubling of the unit number drops the unit cost to
lc times the previous doubling.
- Unit cost: c_n = c1 * n**s, with c1 the first-unit cost and n the
unit number (n >= 1). Defining property: the second unit costs lc
times the first, c2 = c1 * lc.
- Cumulative learning factor: F(n) = n**(s+1) / (s+1), the closed-form
cumulative average approximation; production total = c1 * F(n).
- Development cost (weight-based CER): c_dev = a * w**b, with a a
coefficient, w the airframe mass in kg, and b the exponent (b near
0.6 for aircraft airframe development).
- Program total = production total + development cost: recurring
production cost plus the non-recurring development cost.
- FAR-25 and CS-25 are referenced as program context only; the CERs
and the learning curve are common program cost estimating practice,
not regulation.
Workflow
- Set the program inputs: first-unit cost c1, unit number n, learning
curve lc, and the development CER coefficient a, mass w, and
exponent b.
- Compute the learning curve exponent with learning_curve_exponent;
it guards lc against out-of-band values.
- Compute the unit cost of unit n with unit_cost.
- Compute the cumulative learning factor with
cumulative_learning_factor.
- Compute the development cost with development_cost.
- Roll everything up with total_program_cost; the returned dict
carries unit_n, cumulative_factor, production_total, and
program_total.
Pitfalls
- Passing lc outside (0, 1): lc >= 1 gives a flat or rising curve and
lc <= 0 is meaningless; both raise ValueError instead of returning a
wrong exponent.
- Using the unit cost as the production total: the cumulative factor
sums the learning curve over all units up to n, and c_n alone
understates the fleet cost.
- Confusing n with the fleet size: n is the unit number of the last
unit in the production run, not the number of aircraft if the run
starts elsewhere.
- Mixing development CER units: w must be in kg and a scaled to the
program currency unit; a per-kg coefficient applied to a mass in lb
shifts the estimate by orders of magnitude.
- Treating the closed-form cumulative factor as exact: F(n) =
n**(s+1)/(s+1) is the standard approximation for n >= 1, not the
exact discrete sum.
- Passing n < 1 to cumulative_learning_factor: the module raises
ValueError instead of guessing.
Behavior contract (gate 3)
The learning curve exponent, unit cost, cumulative learning factor,
weight-based development cost, and total program cost rollup are
exercised by the gate 3 contract test:
scripts/test_parametric_cost.py against
scripts/parametric_cost_logic.py (stdlib unittest, offline). Run:
python3 scripts/test_parametric_cost.py
Compliance
- Standards referenced, not reproduced: FAR-25 is US government work
(public domain) and CS-25 is a free EASA download; the CERs and the
learning curve are common program cost estimating methodology,
summary-only per standards-map.yaml.
- compliance: STANDARDS-REF, gated: false.
1---2name: parametric-cost3description: Use when you must compute parametric cost estimates for an aircraft development and production program: derive the learning curve exponent from a learning curve percentage, apply the learning curve to get unit cost and cumulative production cost, estimate development cost from airframe mass with a weight-based cost estimating relationship, and roll the recurring and non-recurring pieces into a total program cost. Produces the unit cost, the cumulative learning factor, the production total, and the program total that gate the program cost assessment. Trigger: parametric cost, cost estimating relationship, cer, learning curve, unit cost, development cost, program cost, cumulative average.4license: Apache-2.05---67# Parametric Cost Estimation (vehicle-design/cost-estimation/parametric-cost)89Use when the task is parametric cost estimation for an aircraft10development and production program: learning curve exponents, unit11costs, cumulative production totals, weight-based development cost12estimating relationships, and the total program cost rollup.1314## Domain quick reference1516- All costs are in program currency units, airframe mass in kg, and17 the learning curve lc is dimensionless (0.85 typical, 80-95% band).18- Learning curve exponent: s = ln(lc) / ln(2). For lc = 0.85, s =19 -0.234465; each doubling of the unit number drops the unit cost to20 lc times the previous doubling.21- Unit cost: c_n = c1 * n**s, with c1 the first-unit cost and n the22 unit number (n >= 1). Defining property: the second unit costs lc23 times the first, c2 = c1 * lc.24- Cumulative learning factor: F(n) = n**(s+1) / (s+1), the closed-form25 cumulative average approximation; production total = c1 * F(n).26- Development cost (weight-based CER): c_dev = a * w**b, with a a27 coefficient, w the airframe mass in kg, and b the exponent (b near28 0.6 for aircraft airframe development).29- Program total = production total + development cost: recurring30 production cost plus the non-recurring development cost.31- FAR-25 and CS-25 are referenced as program context only; the CERs32 and the learning curve are common program cost estimating practice,33 not regulation.3435## Workflow36371. Set the program inputs: first-unit cost c1, unit number n, learning38 curve lc, and the development CER coefficient a, mass w, and39 exponent b.402. Compute the learning curve exponent with learning_curve_exponent;41 it guards lc against out-of-band values.423. Compute the unit cost of unit n with unit_cost.434. Compute the cumulative learning factor with44 cumulative_learning_factor.455. Compute the development cost with development_cost.466. Roll everything up with total_program_cost; the returned dict47 carries unit_n, cumulative_factor, production_total, and48 program_total.4950## Pitfalls5152- Passing lc outside (0, 1): lc >= 1 gives a flat or rising curve and53 lc <= 0 is meaningless; both raise ValueError instead of returning a54 wrong exponent.55- Using the unit cost as the production total: the cumulative factor56 sums the learning curve over all units up to n, and c_n alone57 understates the fleet cost.58- Confusing n with the fleet size: n is the unit number of the last59 unit in the production run, not the number of aircraft if the run60 starts elsewhere.61- Mixing development CER units: w must be in kg and a scaled to the62 program currency unit; a per-kg coefficient applied to a mass in lb63 shifts the estimate by orders of magnitude.64- Treating the closed-form cumulative factor as exact: F(n) =65 n**(s+1)/(s+1) is the standard approximation for n >= 1, not the66 exact discrete sum.67- Passing n < 1 to cumulative_learning_factor: the module raises68 ValueError instead of guessing.6970## Behavior contract (gate 3)7172The learning curve exponent, unit cost, cumulative learning factor,73weight-based development cost, and total program cost rollup are74exercised by the gate 3 contract test:75scripts/test_parametric_cost.py against76scripts/parametric_cost_logic.py (stdlib unittest, offline). Run:77python3 scripts/test_parametric_cost.py7879## Compliance8081- Standards referenced, not reproduced: FAR-25 is US government work82 (public domain) and CS-25 is a free EASA download; the CERs and the83 learning curve are common program cost estimating methodology,84 summary-only per standards-map.yaml.85- compliance: STANDARDS-REF, gated: false.