Design decisions and societal risk#

Design decision optimization and societal risk acceptance#

Design decision optimization with societal risk acceptance is normally applied after a reliability analysis has estimated \(p_f\) or \(\beta\). It does not require a different FORM, SORM, or simulation model. Instead, an economic objective is evaluated subject to a societal acceptability criterion. This follows the risk-based decision framing used in the JCSS risk assessment guidance [JCSS2008RiskAssessment] [KroonMaes2008RiskFramework] and the risk-informed decision principles codified in ISO 2394 [ISO2394]. PySTRA’s initial DDO criterion uses the life quality index (LQI) to define a minimum acceptable life-safety level with societal willingness to pay (SWTP) as the life-safety valuation, following the LQI method and the JCSS risk-assessment background documents and examples [Nathwani1997LQI] [Nathwani2009LifeQuality] [Rackwitz2002LQI] [Rackwitz2008LQI] [Streicher2008LQI] [Schubert2009LQI] [VanCoile2019ALARP].

For life-safety problems, the LQI literature expresses the societal willingness to pay (SWTP) to save one statistical life as a function of the gross domestic product available for risk reduction, the LQI work–leisure parameter, and a demographic life-time constant; mortality enters through the demographic constant rather than through that parameter. In the notation used by Rackwitz, this is of the form

(1)#\[\mathrm{SWTP}_x = \frac{g}{q} C_x\]

where \(g\) is the income or GDP measure available for risk reduction, \(q\) is the dimensionless LQI work–leisure (income-elasticity) parameter (typically about 0.1–0.2, e.g. 0.175 in Schubert and Faber, 2009; it is not an annual mortality rate), and \(C_x\) depends on the mortality reduction scheme, discounting, and the predictive cohort life table [Rackwitz2004Discounting]. In from_lqi() this parameter is named work_leisure_parameter. This SWTP interpretation is developed in the LQI literature [PandeyNathwani2004LQI] [PandeyNathwaniLind2006LQI] and used by Rackwitz for structural reliability optimization and acceptability [Rackwitz2002LQI]. The ra.decision.SWTP.from_lqi helper (from_lqi()) implements the relationship for user-supplied demographic values.

PySTRA also includes a small source-backed country table from Rackwitz’s JCSS background document [Rackwitz2008LQI]. The anchor values are the \(G_{\Delta \bar{l}}\) column in Table 7, in millions of 1999 PPPUS$:

Built-in SWTP country values#

Code

Country

SWTP [106 PPPUS$]

CA

Canada

1.8

US

USA

2.1

AT

Austria

1.9

BE

Belgium

2.4

CZ

Czech Republic

0.54

DK

Denmark

1.7

FI

Finland

1.3

FR

France

1.9

DE

Germany

1.9

IT

Italy

1.8

NL

Netherlands

2.8

NO

Norway

1.8

ES

Spain

1.3

SE

Sweden

1.5

CH

Switzerland

1.8

GB

United Kingdom

1.7

JP

Japan

1.3

NZ

New Zealand

1.3

The anchor table is intentionally not overwritten with newer values. For current studies, index_swtp_record() and swtp_table(indexed=True) return a separately traceable indexed table. High-level country-based LQI construction requires users to choose indexed=True or indexed=False explicitly. The built-in indexed view uses the World Bank WDI GDP per capita PPP indicator NY.GDP.PCAP.PP.CD to scale each Rackwitz anchor value from 1999 to 2024 [WorldBankWDI]. This is a practical update of the LQI income term \(g\); it is not a substitute for a full recalculation of mortality tables, discounting, and age averaging.

Target reliabilities may be taken from published tables or calculated from an explicit decision model. Rackwitz [Rackwitz2000CodeMaking] formulates the code-making problem as an economic optimization in which the annual failure rate is the natural reliability measure. Steenbergen, Rózsás, and Vrouwenvelder [Steenbergen2018Target] revisit the same framework and emphasize annual failure rates as a way to compare targets across design and remaining working lives. In normalized form, the Rackwitz/Steenbergen model implemented by RackwitzTargetModel maximizes

(2)#\[Z(p) = B - C(p) - U\frac{\lambda}{\gamma} P_{f,\mathrm{SLS}}(p) - (C(p)+A)\frac{\omega}{\gamma} - (C(p)+H)\frac{\lambda}{\gamma} P_{f,\mathrm{ULS}}(p)\]

where \(p = E[R]/E[S]\), \(C(p)=C_0+C_1p\), \(\gamma\) is the discount or interest rate, \(\omega\) is the obsolescence rate, and \(\lambda\) is the load occurrence rate. PySTRA uses a closed-form lognormal resistance-demand model for \(P_f(p)\) in this calibration.

Every cost is normalized by the base construction cost \(C_0\) (base_cost), so the model’s cost inputs are ratios to \(C_0\), mapped to RackwitzTargetModel parameters as follows.

Normalized cost inputs (fractions of \(C_0\))#

Symbol

Parameter

Meaning

\(C_1/C_0\)

safety_cost_ratio

marginal safety cost per unit of \(p\)

\(H/C_0\)

failure_cost_ratio

failure (ULS) consequence cost

\(U/C_0\)

serviceability_cost_ratio

serviceability (SLS) cost

\(A/C_0\)

demolition_cost_ratio

demolition / obsolescence cost

\(b/C_0\)

benefit_rate

constant annual benefit (independent of \(p\))

The rates \(\gamma\), \(\omega\), and \(\lambda\) are interest_rate, obsolescence_rate, and load_occurrence_rate. Because the objective is normalized by \(C_0\), the resulting target table depends only on these relative cost and consequence ratios, not on a particular jurisdiction. A table for other classes is recalculated by passing safety_costs (the \(C_1/C_0\) values) and failure_costs (the \(H/C_0\) values) to table().

The calculated table is a direct optimization. It is not a reproduction of the rounded targets tabulated in the JCSS Probabilistic Model Code [JCSSPMC2001] (Part 1, Table 1) and ISO 2394 [ISO2394] (Table G.4). Those tables do not state the cost ratios and coefficients of variation behind each cell, and Steenbergen et al. [Steenbergen2018Target] treat each tabulated rate as an upper limit on the optimal rates within a class. With the Rackwitz [Rackwitz2000CodeMaking] base case (\(C_1/C_0 = 0.03\), \(H/C_0 = 3\), \(U/C_0 = A/C_0 = 0.2\)) graded by a decade in \(C_1/C_0\), and the default \(V_R = V_S = 0.3\), the model reproduces the normal-consequence column of Rackwitz’s own Table 1 (3.1, 3.7, 4.3). In this model, however, the optimum moves by about 0.6 in \(\beta\) for each decade of \(C_1/C_0\), but by only about 0.2 across the whole JCSS consequence range (\(H/C_0\) from below 1 to 9). The rounded tables step by 0.5 to 0.6 between consequence classes. With the default classes the large-consequence column is 3.25, 3.88 and 4.45, against the tabulated 3.7, 4.4 and 4.7. Use the calculation for a stated cost and uncertainty model, and the rounded tables as code-level targets.

Fischer, Barnardo, and Faber [Fischer2012LQI] provide a convenient LQI route for turning an SWTP value and expected fatalities given failure into minimum target reliabilities; the marginal life-saving cost underlying this route is examined in detail by Fischer et al. [Fischer2013MarginalCost]. For medium variability, define the safety cost ratio

(3)#\[K_1 = \frac{C_1(\gamma_S + \omega)} {\mathrm{SWTP}\,N_F}\]

where \(C_1(\gamma_S + \omega)\) is the marginal safety cost term and \(N_F\) is the expected number of fatalities given failure. The corresponding target classes are approximated as:

LQI target reliability classes for medium variability#

Safety cost ratio \(K_1\)

Cost class

\(\beta\)

\(p_f\)

\(10^{-3}\) to \(10^{-2}\)

Large

3.1

\(10^{-3}\)

\(10^{-4}\) to \(10^{-3}\)

Medium

3.7

\(10^{-4}\)

\(10^{-5}\) to \(10^{-4}\)

Small

4.2

\(10^{-5}\)

Outside the tabulated range the lookup continues the table’s proportionality between \(p_f\) and \(K_1\) from the nearest edge: \(p_f = K_1\) below \(10^{-5}\) and \(p_f = K_1/10\) above \(10^{-2}\), labeled "extrapolated". The failure probability is then continuous at both edges. An extrapolated value is not a source-table value; the marginal calculation below gives a target for a stated resistance-demand model.

For normal studies, ra.decision.LQI (LQI) builds this target directly from a country SWTP value or a user-supplied SWTP value, expected fatalities given failure or an explicit consequence model, and marginal safety cost. ra.decision.LQI.lookup_target returns the rounded source-table target for a given \(K_1\), while the lower-level lqi_k1() and lqi_target_reliability() helpers remain available in pystra.decision.ddo. When the underlying resistance-demand model should be calculated instead of looked up, ra.decision.LQI.derive_target solves the marginal target problem

(4)#\[\min_p\; K_1p + P_f(p), \qquad\mathrm{or}\qquad K_1 = -\frac{dP_f(p)}{dp}.\]

ra.decision.DDO (DDO) then evaluates the selected objective and criterion without changing the underlying stochastic model. The best feasible alternative is obtained with DDO.optimize(); the unconstrained economic optimum is available separately as DDO.economic_optimum().

For direct JCSS-style optimization, the canonical life-safety risk-cost term is

(5)#\[S(p) = C(p) + \mathrm{SWTP}\,N_F\,h(p)\]

where \(C(p)\) is the safety or construction cost and \(h(p)\) is a failure rate or annual failure probability. The marginal acceptance condition is

(6)#\[\frac{dC(p)}{dp} \ge -\mathrm{SWTP}\,N_F\,\frac{dh(p)}{dp}.\]

ra.decision.LQI exposes these operations as methods such as risk_cost, acceptability_margin_at, and acceptability_boundary. The underlying jcss_lqi_risk_cost() and jcss_lqi_acceptability() functions remain available for direct reproduction of the JCSS equations.

The current implementation separates an objective from an acceptability criterion and reserves solver logic for future work. This keeps LQI in its proper role as a minimum safety criterion rather than the optimizer itself. Life-cycle cost and utility models based on stochastic renewal processes are a natural source for future objective implementations [PandeyWangCheng2015Renewal].

Use this method: Comparing structural assessment scenarios · Calibrating target-reliability tables · Design decisions and target reliability

For coordinate conventions, see Notation and probability spaces.