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 生长快、被重度放牧(、);B 生长慢、被轻度放牧(、)。比较工程韧性(恢复速率、小噪声下的方差)与生态韧性(吸引盆宽度、能吸收的最大单次损失、吸引盆稳定性),以及两种冲击情境下翻转的概率:「稀少」的冲击(每个时间单位 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 的概率起火,其中比例为 的起火被扑灭;未扑灭的起火以概率 变成摧毁林分的树冠火(状态翻转),否则是烧掉 60% 燃料的地表火。每种 模拟 2,000 片森林、各 300 年。B:在放牧模型中加入动物采食不到的储备 (诺伊—梅尔讨论过的「不可采食的储备」(Noy-Meir 1975)),采食只作用于高出 的部分。参数都是示意的。
推导
# 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 年内几乎必然发生树冠火。 时 100 年内的概率(72%)低于 (87%):灾难被推迟了,没有被避免。 时波动反而增大(2.17):火更少,但每一场更大。机制是一个慢变量:小火在不断消耗燃料,使系统远离门槛;压制小火之后,快变量变平稳,慢变量却向门槛逼近。这一结论依赖一个模型条件:小扰动确实在消耗那个把系统推向门槛的慢变量。没有这样的慢变量,削平小波动不一定有害。
储备模型:储备 时,两个稳态只在很窄的压力范围(2.624—2.676)内共存,压力过高时植被停在 2.33;储备减到 0.5 时共存范围扩大到 2.308—2.632,崩溃后植被为 1.34;储备完全去掉时共存范围为 1.788—2.604,崩溃后只有 0.40。 时,有储备的系统只有一个稳定状态,没有可以掉进去的「另一个山谷」。把采食不到的部分也变成可以采食的「效率提升」,使滞后的范围变宽、崩溃更深;储备的代价是平常年份少收获一些。
注
证据等级。 「削平波动、抽干冗余反而缩小吸引盆」在本书中分三层:(1)模型条件下的结论(存在被小扰动消耗的慢变量;储备削弱了正反馈);(2)霍林等人的案例归纳;(3)尚无有对照的普遍检验。谢弗等人的结论与此一致:管理的重点应当是维持一个大的稳定域,而不是控制波动 (Scheffer et al. 2001)。把它用于企业库存、现金储备或供应链冗余,是类比,不是证据,也不构成任何经营或投资建议。
假说 · 尚未验证
波动考核假说(尚未确立)。作者推测,当管理者以「平稳」为考核目标时,会更多地削减看似闲置的储备。可以检验的预测是:在管理带储备 的模拟放牧系统的实验中,按「产量波动小」计酬的一组,比按「长期总产量」计酬的一组更快地把储备转为可采食的部分,崩溃也更多。如果事先登记的实验中两组没有差别,或前者更少,这一假说就被推翻。
本章小结
工程韧性(恢复速度)与生态韧性(吸收能力、吸引盆宽度)回答不同的问题。同一个系统接近折叠点时两者一起缩小;比较不同系统时可以给出相反的排序:模型中恢复更快、波动更小的系统吸引盆更窄,在稀少的大冲击下翻转得更多,恢复慢的系统则在频繁冲击下吃亏。林火模型显示,压制小火使日常波动变小,却让燃料逼近门槛;储备模型显示,去掉采食不到的储备使滞后范围变宽、崩溃更深。这些是模型条件下的结论与案例归纳,不是普遍规律。
参考文献
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).