Skip to main content

qualia_core_db/domains/financial/economics/
resilience.rs

1//! Resilience economics kernels.
2
3/// Survival-first internal resource pricing for an autonomous resilience basecamp.
4pub fn resilience_resource_pricing(
5    stock: &[f64],
6    survival_demand: &[f64],
7    production_cost: &[f64],
8    survival_premium: f64,
9    n: usize,
10    price_out: &mut [f64],
11    tradeable_surplus_out: &mut [f64],
12) -> usize {
13    let count = n
14        .min(stock.len())
15        .min(survival_demand.len())
16        .min(production_cost.len())
17        .min(price_out.len())
18        .min(tradeable_surplus_out.len());
19    for i in 0..count {
20        let demand = survival_demand[i];
21        let cost = production_cost[i];
22        if demand <= 0.0 {
23            price_out[i] = cost;
24            tradeable_surplus_out[i] = stock[i].max(0.0);
25            continue;
26        }
27        let coverage = stock[i] / demand;
28        if coverage < 1.0 {
29            let c = coverage.clamp(0.0, 1.0);
30            price_out[i] = cost * (1.0 + (survival_premium - 1.0).max(0.0) * (1.0 - c));
31            tradeable_surplus_out[i] = 0.0;
32        } else {
33            price_out[i] = cost;
34            tradeable_surplus_out[i] = stock[i] - demand;
35        }
36    }
37    count
38}
39
40#[cfg(test)]
41mod tests {
42    use super::*;
43
44    #[test]
45    fn resilience_pricing_prioritizes_survival() {
46        let stock = [5.0, 20.0];
47        let demand = [10.0, 10.0];
48        let cost = [2.0, 2.0];
49        let mut price = [0.0f64; 2];
50        let mut surplus = [0.0f64; 2];
51        let n =
52            resilience_resource_pricing(&stock, &demand, &cost, 3.0, 2, &mut price, &mut surplus);
53        assert_eq!(n, 2);
54        assert!((price[0] - 4.0).abs() < 1e-9);
55        assert_eq!(surplus[0], 0.0);
56        assert!((price[1] - 2.0).abs() < 1e-9);
57        assert!((surplus[1] - 10.0).abs() < 1e-9);
58    }
59}