5D Library › 复杂系统相变、临界慢化与生态韧性的非线性动力学 · English

第四章 两种韧性:恢复得快,还是承受得住

一个词,两种意思

证据

霍林 1973。 霍林区分了「稳定性」与「韧性」。稳定性是系统在暂时的扰动之后回到平衡的能力,回得越快、波动越小越稳定;韧性是系统吸收状态变量、驱动变量与参数的变化而仍保持其内部关系的能力:「韧性决定了系统内部关系的持续性。」他指出,一个系统可以韧性很高而波动很大(稳定性低);保证稳定的最大持续产量的管理办法,可能改变系统的条件,使韧性丧失或降低,以致一个原本能被吸收的罕见偶然事件引发突然的剧变 (Holling 1973)。

证据

皮姆 1984。 皮姆梳理了「复杂性与稳定性」之争:早期研究认为简单的生态系统不如复杂的稳定,后来的研究得出相反的结论;他把混乱归因于这两个词各有许多不同的含义。在他的用法中,韧性指变量受扰动后回到平衡的速度 (Pimm 1984)。

霍林在 1996 年把这两种用法区分为「工程韧性」与「生态韧性」:前者关心单一平衡点附近的稳定,用抵抗扰动的能力与恢复速度衡量,他在这里一并引用了奥尼尔等人、皮姆 1984 以及蒂尔曼与唐宁的工作,并说这种观点「可称为工程韧性」;后者是系统在改变其结构之前能吸收的扰动大小 (Holling 1996)。所以「工程韧性」这一名称出自霍林 1996 年的文章,皮姆 1984 用的只是「韧性」一词。沃克等人把生态韧性分为宽度(吸引盆有多宽)、抵抗(吸引盆多陡多深)、危险度(离门槛多近)与跨尺度作用 (Walker et al. 2004);门克等人提出用「吸引盆稳定性」衡量:从随机初始状态出发回到某个状态的概率,并用它解释了为什么规则的电网结构比随机结构更不容易失去同步 (Menck et al. 2013)。

两种排序可以相反

范内斯与谢弗指出,同一个系统逐渐接近折叠点时,恢复速率与吸引盆宽度一起缩小 (Nes and Scheffer 2007)。但比较不同的系统时,两者不一定同向。

推导

两个放牧系统(示意参数):A 生长快、被重度放牧(r=1.0r = 1.0、c=2.3c = 2.3);B 生长慢、被轻度放牧(r=0.5r = 0.5、c=1.0c = 1.0)。比较工程韧性(恢复速率、小噪声下的方差)与生态韧性(吸引盆宽度、能吸收的最大单次损失、吸引盆稳定性),以及两种冲击情境下翻转的概率:「稀少」的冲击(每个时间单位 0.5% 的概率,持续 1,000 个单位)与「频繁」的冲击(2%,持续 500 个单位),每次随机损失 0—80% 的植被。

推导

# Engineering resilience (Pimm 1984: speed of return) versus ecological resilience
# (Holling 1973: how large a disturbance can be absorbed; width of the basin of attraction).
# Two grazing systems dx/dt = r x (1 - x/10) - c x^2/(x^2 + 1), illustrative parameters:
#   A: r = 1.0, c = 2.3  (fast-growing, heavily grazed)
#   B: r = 0.5, c = 1.0  (slow-growing, lightly grazed: c/r = 2.0)
# "Basin stability" (Menck et al. 2013): share of random states in (0, 10) that return to the
# upper state. Shock tests: in each time unit a chance p of losing a random share U(0, 0.8)
# of x; "rare": p = 0.005 for 1,000 units; "frequent": p = 0.02 for 500 units; sigma = 0.15.
import math, random
rng = random.Random(8)
K = 10.0

def f(x, r, c):
    return r * x * (1 - x / K) - c * x * x / (x * x + 1)

def roots(r, c):
    xs, out = [i * 0.001 for i in range(1, 10000)], []
    for u, v in zip(xs, xs[1:]):
        if (f(u, r, c) > 0) != (f(v, r, c) > 0): out.append((u + v) / 2)
    return out                                   # low stable, unstable, high stable

def settle(x, r, c, t=150.0, dt=0.05):
    for _ in range(int(t / dt)): x += f(x, r, c) * dt
    return x

def shock_run(r, c, T, p, sigma=0.15, dt=0.1):
    _, mid, x = roots(r, c)
    for _ in range(T):
        if rng.random() < p: x *= 1 - rng.uniform(0, 0.8)
        for _ in range(10):
            x += f(x, r, c) * dt + sigma * math.sqrt(dt) * rng.gauss(0, 1)
        if x < mid - 0.5: return True
    return False

print("system  x*    unstable  basin  largest single  return  Var(small  basin      P(tip)")
print("                         width  loss absorbed   rate    noise)    stability  rare  frequent")
for name, r, c in (("A", 1.0, 2.3), ("B", 0.5, 1.0)):
    lo, mid, hi = roots(r, c)
    lam = -(f(hi + 1e-6, r, c) - f(hi - 1e-6, r, c)) / 2e-6
    bs = sum(settle(rng.uniform(0, 10), r, c) > mid for _ in range(400)) / 400
    rare = sum(shock_run(r, c, 1000, 0.005) for _ in range(300)) / 300
    freq = sum(shock_run(r, c, 500, 0.02) for _ in range(300)) / 300
    print(f"  {name}    {hi:4.2f}    {mid:4.2f}    {hi - mid:4.2f}      {1 - mid / hi:4.0%}"
          f"        {lam:5.3f}   {0.15 ** 2 / (2 * lam):.4f}     {bs:.2f}     {rare:.2f}"
          f"   {freq:.2f}")
# system  x*    unstable  basin  largest single  return  Var(small  basin      P(tip)
#                          width  loss absorbed   rate    noise)    stability  rare  frequent
#   A    6.59    2.89    3.70       56%        0.333   0.0338     0.74     0.78   0.96
#   B    7.32    2.00    5.32       73%        0.237   0.0476     0.81     0.42   0.73

按工程韧性,A 更好:恢复速率 0.333 对 0.237,小噪声下的方差 0.0338 对 0.0476。只看日常波动的管理者会认为 A 更稳。按生态韧性,B 更好:吸引盆宽 5.32 对 3.70,能吸收一次失去 73% 植被的冲击(A 只有 56%),吸引盆稳定性 0.81 对 0.74;在稀少的大冲击下,A 有 78% 翻转,B 有 42%。频繁冲击的结果补充了另一面:B 也有 73% 翻转,因为它恢复得慢,前一次的损失还没补回来,下一次冲击又到了。两个概念不是对错之分,而是回答不同的问题:「恢复有多快」与「离翻转有多远」。只用其中一个衡量系统,都会漏掉另一半。

削平波动、抽干储备

证据

案例。 霍林举了几个例子:在加拿大东部,为保护造纸业喷洒杀虫剂压制云杉卷叶蛾,短期内保住了木材,却使森林更均一,日后更容易爆发更大的虫灾;鱼类孵化场提高了渔获,也提高了捕捞压力,使野生种群减少;稳定的放养取代了自然的放牧脉动,系统可能翻转为灌木占优。他把这一模式概括为「短期内稳定生产的成功,导致长期的意外」(Holling 1996)。霍林与梅费把这称为资源管理中「命令与控制」的病理:减少一个多变系统的自然变化,结果是系统的韧性下降 (Holling and Meffe 1996)。

这些是案例归纳与概念论证,不是有对照的检验。下面用两个玩具模型说明这个论点在什么条件下成立。

推导

A:林火玩具模型。燃料每年增加 1;每年有 0.4 的概率起火,其中比例为 ss 的起火被扑灭;未扑灭的起火以概率 1/(1+e−(F−30)/3)1/(1 + e^{-(F – 30)/3}) 变成摧毁林分的树冠火(状态翻转),否则是烧掉 60% 燃料的地表火。每种 ss 模拟 2,000 片森林、各 300 年。B:在放牧模型中加入动物采食不到的储备 RR(诺伊—梅尔讨论过的「不可采食的储备」(Noy-Meir 1975)),采食只作用于高出 RR 的部分。参数都是示意的。

推导

# Two toy models of how removing small fluctuations or "idle" reserves can shrink a basin.
# A. Fire suppression (after the argument of Holling & Meffe 1996; illustrative parameters).
#    Fuel F grows by 1 a year. Each year an ignition occurs with probability 0.4; a share s
#    of ignitions is suppressed. An unsuppressed fire becomes a stand-replacing crown fire
#    (regime shift: forest lost) with probability 1/(1 + exp(-(F - 30)/3)); otherwise it is
#    a surface fire that burns 60 % of the fuel. 2,000 forests, 300 years each.
# B. Ungrazeable reserve (Noy-Meir 1975): consumption c (x-R)^2/((x-R)^2 + 1) acts only on
#    vegetation above a reserve R. Removing the reserve widens the range with two states.
import math, random
rng = random.Random(9)

def forest(s, years=300):
    F, burned = 0.0, []
    for y in range(years):
        F += 1.0
        if rng.random() < 0.4 and rng.random() >= s:
            if rng.random() < 1 / (1 + math.exp(-(F - 30) / 3)):
                return burned, y                        # crown fire in year y
            burned.append(0.6 * F); F *= 0.4
        else:
            burned.append(0.0)
    return burned, None

print("A. suppressed  SD of yearly   mean fuel    P(crown fire)")
print("   share s     burned fuel    (yr 1-50)    within 100 yr   within 300 yr")
for s in (0.0, 0.5, 0.8, 0.9, 0.95):
    sds, fuels, crowns = [], [], []
    for _ in range(2000):
        b, yc = forest(s)
        m = sum(b) / max(1, len(b))
        sds.append(math.sqrt(sum((u - m) ** 2 for u in b) / max(1, len(b))))
        F, fl = 0.0, []                                  # fuel path, first 50 years
        for u in b[:50]:
            F += 1.0; fl.append(F); F -= u
        fuels.append(sum(fl) / max(1, len(fl)))
        crowns.append(yc)
    c100 = sum(y is not None and y < 100 for y in crowns) / 2000
    c300 = sum(y is not None for y in crowns) / 2000
    print(f"     {s:4.2f}        {sum(sds) / len(sds):5.2f}        {sum(fuels) / len(fuels):5.1f}"
          f"         {c100:5.0%}          {c300:5.0%}")

def g(x, c, R):
    y = max(0.0, x - R)
    return x * (1 - x / 10) - c * y * y / (y * y + 1)

def roots(c, R):
    xs = [i * 0.002 for i in range(1, 5000)]
    return [(u + v) / 2 for u, v in zip(xs, xs[1:]) if (g(u, c, R) > 0) != (g(v, c, R) > 0)]

print("B. reserve R   bistable for c in   collapsed state x at c = 2.8   at c = 2.3")
for R in (1.0, 0.5, 0.0):
    cs = [c / 1000 for c in range(1500, 3200, 2)]
    bi = [c for c in cs if len(roots(c, R)) == 3]
    at23 = "two states" if len(roots(2.3, R)) == 3 else "one state only"
    print(f"     {R:3.1f}         {bi[0]:.3f} - {bi[-1]:.3f}            {roots(2.8, R)[0]:4.2f}"
          f"                {at23}")
# A. suppressed  SD of yearly   mean fuel    P(crown fire)
#    share s     burned fuel    (yr 1-50)    within 100 yr   within 300 yr
#      0.00         1.45          3.9            1%             3%
#      0.50         2.17          7.2           11%            36%
#      0.80         1.80         13.1           72%            99%
#      0.90         1.10         17.6           87%           100%
#      0.95         0.56         20.8           72%           100%
# B. reserve R   bistable for c in   collapsed state x at c = 2.8   at c = 2.3
#      1.0         2.624 - 2.676            2.33                one state only
#      0.5         2.308 - 2.632            1.34                one state only
#      0.0         1.788 - 2.604            0.40                two states

林火模型:完全不扑火时,每年烧掉的燃料波动较大(标准差 1.45),燃料维持在低水平(前 50 年平均 3.9),300 年内树冠火的概率只有 3%。扑灭 90% 与 95% 的起火时,每年的波动降到 1.10 与 0.56,系统看起来平静得多;但燃料不断积累(前 50 年平均 17.6 与 20.8),300 年内几乎必然发生树冠火。s=0.95s = 0.95 时 100 年内的概率(72%)低于 s=0.9s = 0.9(87%):灾难被推迟了,没有被避免。s=0.5s = 0.5 时波动反而增大(2.17):火更少,但每一场更大。机制是一个慢变量:小火在不断消耗燃料,使系统远离门槛;压制小火之后,快变量变平稳,慢变量却向门槛逼近。这一结论依赖一个模型条件:小扰动确实在消耗那个把系统推向门槛的慢变量。没有这样的慢变量,削平小波动不一定有害。

储备模型:储备 R=1.0R = 1.0 时,两个稳态只在很窄的压力范围(2.624—2.676)内共存,压力过高时植被停在 2.33;储备减到 0.5 时共存范围扩大到 2.308—2.632,崩溃后植被为 1.34;储备完全去掉时共存范围为 1.788—2.604,崩溃后只有 0.40。c=2.3c = 2.3 时,有储备的系统只有一个稳定状态,没有可以掉进去的「另一个山谷」。把采食不到的部分也变成可以采食的「效率提升」,使滞后的范围变宽、崩溃更深;储备的代价是平常年份少收获一些。

注

证据等级。 「削平波动、抽干冗余反而缩小吸引盆」在本书中分三层:(1)模型条件下的结论(存在被小扰动消耗的慢变量;储备削弱了正反馈);(2)霍林等人的案例归纳;(3)尚无有对照的普遍检验。谢弗等人的结论与此一致:管理的重点应当是维持一个大的稳定域,而不是控制波动 (Scheffer et al. 2001)。把它用于企业库存、现金储备或供应链冗余,是类比,不是证据,也不构成任何经营或投资建议。

假说 · 尚未验证

波动考核假说(尚未确立)。作者推测,当管理者以「平稳」为考核目标时,会更多地削减看似闲置的储备。可以检验的预测是:在管理带储备 RR 的模拟放牧系统的实验中,按「产量波动小」计酬的一组,比按「长期总产量」计酬的一组更快地把储备转为可采食的部分,崩溃也更多。如果事先登记的实验中两组没有差别,或前者更少,这一假说就被推翻。

本章小结

工程韧性(恢复速度)与生态韧性(吸收能力、吸引盆宽度)回答不同的问题。同一个系统接近折叠点时两者一起缩小;比较不同系统时可以给出相反的排序:模型中恢复更快、波动更小的系统吸引盆更窄,在稀少的大冲击下翻转得更多,恢复慢的系统则在频繁冲击下吃亏。林火模型显示,压制小火使日常波动变小,却让燃料逼近门槛;储备模型显示,去掉采食不到的储备使滞后范围变宽、崩溃更深。这些是模型条件下的结论与案例归纳,不是普遍规律。

参考文献

Holling, C. S. 1973. “Resilience and Stability of Ecological Systems.” Annual Review of Ecology and Systematics 4: 1–23. https://doi.org/10.1146/annurev.es.04.110173.000245.
Holling, C. S. 1996. “Engineering Resilience Versus Ecological Resilience.” In Engineering Within Ecological Constraints, edited by Peter C. Schulze. National Academy Press.
Holling, C. S., and Gary K. Meffe. 1996. “Command and Control and the Pathology of Natural Resource Management.” Conservation Biology 10 (2): 328–37. https://doi.org/10.1046/j.1523-1739.1996.10020328.x.
Menck, Peter J., Jobst Heitzig, Norbert Marwan, and Jürgen Kurths. 2013. “How Basin Stability Complements the Linear-Stability Paradigm.” Nature Physics 9 (2): 89–92. https://doi.org/10.1038/nphys2516.
Nes, Egbert H. van, and Marten Scheffer. 2007. “Slow Recovery from Perturbations as a Generic Indicator of a Nearby Catastrophic Shift.” The American Naturalist 169 (6): 738–47. https://doi.org/10.1086/516845.
Noy-Meir, Imanuel. 1975. “Stability of Grazing Systems: An Application of Predator–Prey Graphs.” Journal of Ecology 63 (2): 459–81. https://doi.org/10.2307/2258730.
Pimm, Stuart L. 1984. “The Complexity and Stability of Ecosystems.” Nature 307 (5949): 321–26. https://doi.org/10.1038/307321a0.
Scheffer, Marten, Steve Carpenter, Jonathan A. Foley, Carl Folke, and Brian Walker. 2001. “Catastrophic Shifts in Ecosystems.” Nature 413 (6856): 591–96. https://doi.org/10.1038/35098000.
Walker, Brian, C. S. Holling, Stephen R. Carpenter, and Ann Kinzig. 2004. “Resilience, Adaptability and Transformability in Social–Ecological Systems.” Ecology and Society 9 (2): 5. https://doi.org/10.5751/ES-00650-090205.

Fan, Y. (2026). Phase Transitions, Critical Slowing Down and Resilience in Complex Dynamical Systems: From Saddle-Node Bifurcations and Early-Warning Signals to Cascading Failures, Read Beside Classical Chinese Thought on Incipient Change [复杂系统相变、临界慢化与生态韧性的非线性动力学] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23770082 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).