pystra.decision.targets.RackwitzTargetModel#
Use it: User guide · Worked example · Theory
- class RackwitzTargetModel(safety_cost_ratio, failure_cost_ratio, resistance_cov=0.3, load_cov=0.3, base_cost=1.0, interest_rate=0.035, obsolescence_rate=0.02, load_occurrence_rate=1.0, serviceability_cost_ratio=0.3, demolition_cost_ratio=0.2, serviceability_resistance_ratio=1.5, benefit_rate=0.0)[source]#
Bases:
objectRackwitz/Steenbergen target-reliability model for code calibration.
The model follows the normalized life-cycle objective used by Rackwitz and restated by Steenbergen, Rózsás, and Vrouwenvelder. Every cost is expressed as a fraction of the base construction cost
C0(base_cost), and the design variable is the mean resistance-to-load ratiop = E[R] / E[S]. The construction cost isC(p) = C0 + C1 p = base_cost * (1 + safety_cost_ratio * p), so the cost inputs below are ratios toC0.- Parameters:
safety_cost_ratio (
float) – Marginal safety costC1 / C0– the extra construction cost per unit ofpas a fraction of the base cost. Larger values make safety relatively more expensive and lower the optimal target.failure_cost_ratio (
float) – Failure (ULS) consequence costH / C0.resistance_cov (
float) – Coefficients of variation of resistance and load in the closed-form lognormalP_f(p)model.load_cov (
float) – Coefficients of variation of resistance and load in the closed-form lognormalP_f(p)model.base_cost (
float) – Base construction costC0. Because every other cost is a ratio to it, its value does not change the calibrated target; defaults to 1.interest_rate (
float) – Discount/interest rategamma.obsolescence_rate (
float) – Obsolescence rateomega.load_occurrence_rate (
float) – Load occurrence ratelambda(renewals per year).serviceability_cost_ratio (
float) – Serviceability (SLS) costU / C0.demolition_cost_ratio (
float) – Demolition/obsolescence costA / C0.serviceability_resistance_ratio (
float) – Ratio of the ULS to SLS resistance thresholds; the SLS check usesp / serviceability_resistance_ratio.benefit_rate (
float) – Constant annual benefitb / C0. It is independent ofpand so does not affect the optimum; defaults to 0.
Notes
The default rates and ratios (
interest_rate=0.035,obsolescence_rate=0.02,serviceability_cost_ratio=0.3,demolition_cost_ratio=0.2,serviceability_resistance_ratio=1.5) are the Case 1 values of Steenbergen, Rózsás, and Vrouwenvelder (2018, Table 5); Rackwitz (2000, Fig. B.1) usesserviceability_cost_ratio=0.2. To recalibrate a whole table for your own classes, passsafety_costs(theC1 / C0values) andfailure_costs(theH / C0values) totable(). The calibrated targets are not a reproduction of the rounded JCSS or ISO 2394 tables; seetable().Methods
Return the target reliability implied by this model.
Return a generic calibration object for this model.
Return
C(p) = C0 + C1 p.Return the ULS failure probability for a design value.
Return the normalized Rackwitz/Steenbergen life-cycle objective.
Return the SLS failure probability for a design value.
Calculate a Rackwitz-style target-reliability table.
- property metadata: dict#
Return source parameters used by the normalized model.
- failure_probability(design)[source]#
Return the ULS failure probability for a design value.
- Return type:
float
- serviceability_probability(design)[source]#
Return the SLS failure probability for a design value.
- Return type:
float
- objective(design)[source]#
Return the normalized Rackwitz/Steenbergen life-cycle objective.
- Return type:
float
- calibration(bounds=(1.0, 15.0))[source]#
Return a generic calibration object for this model.
- Return type:
- calibrate(bounds=(1.0, 15.0))[source]#
Return the target reliability implied by this model.
- Return type:
- classmethod table(safety_costs=None, failure_costs=None, bounds=(1.0, 15.0), **kwargs)[source]#
Calculate a Rackwitz-style target-reliability table.
- Parameters:
safety_costs (
Mapping[str,float] |None) – Label ->C1 / C0(marginal safety cost) for each relative safety-cost class. Defaults to representativelarge/normal/smallvalues.failure_costs (
Mapping[str,float] |None) – Label ->H / C0(failure consequence cost) for each consequence class. Defaults to representativeminor/moderate/largevalues.bounds (
tuple[float,float]) – Search interval for the optimizingp.**kwargs (
Any) – Forwarded toRackwitzTargetModel(e.g.resistance_cov,interest_rate) so every model setting can be varied too.
- Return type:
DataFrame
Notes
The default classes are
C1 / C0 = 0.3 / 0.03 / 0.003, an order-of-magnitude grading around theC1 / C0 = 0.03base case of Rackwitz (2000, Fig. B.1), andH / C0 = 0.5 / 2.5 / 6.5, the midpoints of the JCSS consequence classes (rho = 1 + H / C0below 2, 2-5 and 5-10). The remaining defaults are those of Steenbergen et al. (2018, Table 5). Withserviceability_cost_ratio=0.2andH / C0 = 3, the Rackwitz (2000, Fig. B.1) values, the model reproduces the normal-consequence column of Rackwitz (2000, Table 1): 3.1 / 3.7 / 4.3.The result is a direct optimization, not a reproduction of the rounded targets in the JCSS Probabilistic Model Code (Part 1, Table 1) or ISO 2394:2015 (Table G.4), and it should not be expected to match them. Those tables do not state the cost ratios or coefficients of variation behind each cell; Steenbergen et al. (2018, Table 7) read each tabulated rate as an upper limit on the optimal rates within a class. In this closed-form model the optimum moves by about 0.6 in
betafor each decade ofC1 / C0but by only about 0.2 across the whole JCSS consequence range. The tables, in contrast, step by 0.5-0.6 between consequence classes. With the defaults, the large-consequence column is 3.25 / 3.88 / 4.45 against the tabulated 3.7 / 4.4 / 4.7. Supply your ownsafety_costsandfailure_costs(andresistance_cov/load_cov) to calibrate for a particular structure.