天赐范式第183天第一篇:让选择开始生效——育种者方程与选择生效条件
版本 V3.3.21.0 | PID: TC-183-V3.3.21.0 | 2026-10-02
摘要
从更新规则推出平衡位移公式Δ*=β·h²·S/(1-β),用种群代际循环demo验证选择生效条件为h²>0.5(σ_v>σ_e),从182-1的变异存续升级到选择生效。
一、接续182-1——从存续到生效
182-1回答了:变异会不会被β强收缩抹平?结论:不会。D*=σ_v²/(1-β²),只要σ_v>0就有稳态多样性。
但182-1的变异是每轮独立gauss噪声——无遗传。没有遗传,选择对下一代毫无作用,"选择有效"无从谈起。
183-1跨出下一步:把变异升级成可遗传的,问选择能不能把变异导向适应性。这是从"存续"跨到"演化"的一跳。
二、问题提出——收缩和选择谁赢
更新规则(写死):
- 表型 x = g + e, e ~ N(0, σ_e²)
- 选择按 fitness(x) 选,fitness峰在x*=0.8(不是TARGET=0.5!)
- 子代基因 g’ = TARGET + β·(g_sel - TARGET) + v, v ~ N(0, σ_v²)
关键张力:收缩把基因拉回0.5,选择把表型拉向0.8。182-1问"收缩和变异谁赢",183-1问"收缩和选择谁赢"。平衡时表型均值停在两者之间——停在哪?这就是要定量回答的问题。
三、从更新规则推导——平衡位移公式
亲代均值μ_g,位移Δ_g = μ_g - TARGET。
选中个体基因均值μ_{g_sel} = μ_g + h²·S(S = 表型选择差, h² = Var(g)/(Var(g)+σ_e²),本文模型设定下)。
子代基因均值:
μ_g’ = TARGET + β·(μ_{g_sel} - TARGET) = TARGET + β·(Δ_g + h²·S)
子代位移:
Δ_g’ = μ_g’ - TARGET = β·(Δ_g + h²·S)
稳态 Δ_g’ = Δ_g = Δ*:
Δ* = β·(Δ* + h²·S)
Δ*·(1 - β) = β·h²·S
Δ* = β·h²·S / (1 - β)
遗传力 h² = Var(g) / (Var(g) + σ_e²)(本文模型设定下):
- 小σ_v → Var(g)小 → h²≈0 → Δ*≈0(没有可遗传方差)
- σ_v≈σ_e → h²≈0.5(选择生效阈值,半效界)
- 大σ_v → h²→1 → Δ* = β·S/(1-β)
182-1:变异存续条件 σ_v > 0。183-1:选择生效条件 σ_v ≥ σ_e(h² ≥ 0.5,σ_v=σ_e为半效界)。
四、种群代际循环——σ_v扫描
200个个体,500代,β=0.3,σ_e=0.02,选择比例0.3。
| σ_v | h²(力) | S(差) | Δ | Var(g) | 生效? |
|---|---|---|---|---|---|
| 0.001 | 0.0027 | +0.023244 | +0.000032 | 0.000001 | ❌ |
| 0.005 | 0.0634 | +0.023970 | +0.000682 | 0.000027 | ❌ |
| 0.010 | 0.2105 | +0.026049 | +0.002400 | 0.000107 | ❌ |
| 0.020 | 0.5104 | +0.033088 | +0.007455 | 0.000419 | ✅ |
| 0.050 | 0.8636 | +0.062817 | +0.023748 | 0.002555 | ✅ |
| 0.100 | 0.9617 | +0.118697 | +0.049816 | 0.010144 | ✅ |
| 0.200 | 0.9900 | +0.188016 | +0.081546 | 0.040081 | ✅ |
| 0.400 | 0.9975 | +0.198286 | +0.088300 | 0.159353 | ✅ |
| 0.800 | 0.9994 | +0.197687 | +0.091621 | 0.636995 | ✅ |
| 1.500 | 0.9998 | +0.193669 | +0.096365 | 2.237153 | ✅ |
五、遗传力曲线——h²(σ_v)的S形转折
h² = Var(g) / (Var(g) + σ_e²),σ_e=0.02。
| σ_v | h² | 生效? |
|---|---|---|
| 0.001 | 0.0027 | ❌ |
| 0.005 | 0.0634 | ❌ |
| 0.010 | 0.2105 | ❌ |
| 0.020 | 0.5104 | ✅ 阈值 |
| 0.050 | 0.8636 | ✅ |
| 0.100 | 0.9617 | ✅ |
| 0.200 | 0.9900 | ✅ |
| 0.400 | 0.9975 | ✅ |
| 0.800 | 0.9994 | ✅ |
| 1.500 | 0.9998 | ✅ |
→ h²从0到1的S形转折(模拟观测),转折点在σ_v≈σ_e=0.02。
- σ_v < σ_e:h² < 0.5,选择无效(变异信号被环境噪声淹没)
- σ_v ≥ σ_e:h² ≥ 0.5,选择生效(变异信号超过环境噪声)
六、平衡位移验证——Δ ≈ β·h²·S/(1-β)
| σ_v | Δ(实测) | β·h²·S/(1-β) | 比值 |
|---|---|---|---|
| 0.001 | +0.000032 | +0.000027 | +1.1889 |
| 0.005 | +0.000682 | +0.000651 | +1.0482 |
| 0.010 | +0.002400 | +0.002350 | +1.0212 |
| 0.020 | +0.007455 | +0.007238 | +1.0300 |
| 0.050 | +0.023748 | +0.023250 | +1.0214 |
| 0.100 | +0.049816 | +0.048923 | +1.0183 |
| 0.200 | +0.081546 | +0.079774 | +1.0222 |
| 0.400 | +0.088300 | +0.084765 | +1.0417 |
| 0.800 | +0.091621 | +0.084669 | +1.0821 |
| 1.500 | +0.096365 | +0.082986 | +1.1612 |
注:σ_v=0.001时Δ和理论值都接近0,比值无意义(分母太小)。中间段(σ_v=0.0050.200)比值1.021.05,公式验证良好。大σ_v(≥0.400)单seed比值偏高1.04~1.16——是系统偏差还是漂变?见183-2多seed验证。
七、降调声明
- 本篇是demo演示。公式从更新规则严格推导,按147-2实测定义demo是模拟不是实证。
- fitness函数是设定的(单峰高斯),不是涌现的——实际fitness景观更复杂。
- 无重组无交配(单亲继承),实际遗传机制更丰富。
- 有限种群有漂变,大种群极限下漂变消失。
- fitness峰设在x*=0.8而非TARGET=0.5,是为了让收缩和选择有张力——如果重合则同义反复。
- 基因-表型分离用环境方差σ_e=0.02实现遗传力h²<1,实际环境效应更复杂。
- 与174选择压力的benefit定义对齐:174的benefit是定性描述,183-1给出定量公式。
- Δ*公式中h²·S是线性回归近似,大σ_v单seed比值偏高——183-2将做多seed验证。
- 育种者方程Δ*=β·h²·S/(1-β)是Lush(1937)育种者方程的标准形式。本篇贡献是从更新规则推到它并验证,不是发现新公式。
- 大σ_v(如1.50)时Var(g)约2.24,std约1.5是fitness峰宽的15倍——物理图像失真,仅用于测试公式在极端参数下的行为。
八、七条前提条件——选择生效验证
- 条件1 独立性 ✅ 每个体独立变异独立被选
- 条件2 隐私性 ✅ 纯数学验证,不涉及隐私
- 条件3 繁衍性 🟡 种群代际循环是繁衍的简化模型,非完整繁衍验证
- 条件4 安全性 ✅ β有界,种群有界
- 条件5 不可篡改 — 本demo不涉及篡改场景
- 条件6 可继承 🟡 育种者方程可移植,非系列定义的基因跨代传递
- 条件7 可终止 ✅ 有限代终止(数学语境映射,非体系达标)
结语
183-1接续182-1,从"存续"跨到"生效"。
182-1:变异不会被β强收缩抹平(D*>0)。183-1:选择能把变异导向适应性,但有条件——σ_v ≥ σ_e。
定量结果(从更新规则推导):
- 平衡位移 Δ* = β·h²·S / (1 - β)
- 遗传力 h² = Var(g) / (Var(g) + σ_e²)
- 选择生效条件:σ_v ≥ σ_e(h² ≥ 0.5,半效界)
从存续到生效,条件从"σ_v > 0"升级到"σ_v ≥ σ_e"。收缩和选择的张力:表型均值停在TARGET和fitness峰之间,位置由β和h²共同决定。
这个系列还在逐步建设中,完善也是咱们和伙伴们的努力方向。
代码附录
# -*- coding: utf-8 -*-""" 天赐范式第183天:让选择开始生效 V3.3.21.0 接续182-1变异存续条件,问下一步:选择能不能把变异导向适应性? 模型(更新规则): 表型 x = g + e, e ~ N(0, sigma_e^2) 选择按 fitness(x) 选,fitness 峰在 x* = 0.8 子代基因 g' = TARGET + beta*(g_sel - TARGET) + v, v ~ N(0, sigma_v^2) 从更新规则推导平衡位移: mu_g' = TARGET + beta*(mu_{g_sel} - TARGET) 由回归 mu_{g_sel} = mu_g + h^2 * S (S = 表型选择差) Delta_g' = beta*(Delta_g + h^2 * S) 稳态 Delta* = beta * h^2 * S / (1 - beta) 遗传力 h^2 = Var(g) / (Var(g) + sigma_e^2) 小 sigma_v -> Var(g) 小 -> h^2 小 -> 选择无效 sigma_v > sigma_e -> h^2 > 0.5 -> 选择开始生效 大 sigma_v -> h^2 -> 1 -> 选择完全主导 核心结论: 182-1:变异存续条件 sigma_v > 0 183-1:选择生效条件 sigma_v > sigma_e(h^2 > 0.5) 平衡位移 Delta* = beta * h^2 * S / (1 - beta) """importsysimportrandomimportmathimportnumpyasnpifhasattr(sys.stdout,'reconfigure'):sys.stdout.reconfigure(encoding='utf-8')PID="TC-183-V3.3.21.0"TARGET=0.5FITNESS_PEAK=0.8FITNESS_WIDTH=0.10BETA=0.3SIGMA_E=0.02N_POP=200N_GENERATIONS=500SELECT_FRAC=0.3SIGMA_GRID=[0.001,0.005,0.01,0.02,0.05,0.10,0.20,0.40,0.80,1.50]defbar(title):print("="*72)print(" "+title)print("="*72)print()defsub(title):print("【"+title)print("-"*72)deffitness(x):returnmath.exp(-(x-FITNESS_PEAK)**2/(2*FITNESS_WIDTH**2))defrun_generation(genes,sigma_v,sigma_e,beta,rng):phenos=[g+rng.gauss(0,sigma_e)forgingenes]n_select=max(2,int(len(genes)*SELECT_FRAC))fits=[fitness(x)forxinphenos]ranked=sorted(range(len(genes)),key=lambdai:fits[i],reverse=True)selected_idx=ranked[:n_select]mean_parents_x=float(np.mean(phenos))mean_selected_x=float(np.mean([phenos[i]foriinselected_idx]))S=mean_selected_x-mean_parents_x offspring=[]for_inrange(len(genes)):parent_g=genes[rng.choice(selected_idx)]child_g=TARGET+beta*(parent_g-TARGET)+rng.gauss(0,sigma_v)offspring.append(child_g)mean_offspring_x=float(np.mean(offspring))var_g=float(np.var(genes))h2=var_g/(var_g+sigma_e**2)if(var_g+sigma_e**2)>1e-15else0.0returnoffspring,S,h2,mean_offspring_x,var_gdefrun_evolution(sigma_v,n_pop,n_gen,beta,sigma_e,warmup=100):rng=random.Random(42)genes=[TARGET+rng.gauss(0,0.1)for_inrange(n_pop)]Ss,h2s,means_x,var_gs=[],[],[],[]forgeninrange(n_gen):genes,S,h2,mean_x,var_g=run_generation(genes,sigma_v,sigma_e,beta,rng)ifgen>=warmup:Ss.append(S)h2s.append(h2)means_x.append(mean_x)var_gs.append(var_g)return{'S_mean':float(np.mean(Ss)),'h2_mean':float(np.mean(h2s)),'mean_stable':float(np.mean(means_x)),'var_g':float(np.mean(var_gs)),}defmain():bar("天赐范式第183天:让选择开始生效 V3.3.21.0")print(" PID: {}".format(PID))print()sub("步骤0】接续182-1——从存续到生效")print(" 182-1回答了:变异会不会被beta强收缩抹平?")print(" 结论:不会。D* = sigma_v^2/(1-beta^2),只要sigma_v>0就有稳态多样性。")print()print(" 但182-1的变异是每轮独立gauss噪声——无遗传。")print(" 没有遗传,选择对下一代毫无作用,'选择有效'无从谈起。")print()print(" 183-1跨出下一步:把变异升级成可遗传的,问选择能不能把变异导向适应性。")print(" 这是从'存续'跨到'演化'的一跳。")print()sub("步骤1】问题提出——收缩和选择谁赢")print(" 更新规则(写死):")print(" (1) 表型 x = g + e, e ~ N(0, sigma_e^2)")print(" (2) 选择按 fitness(x) 选,fitness峰在x*={}(不是TARGET={}!)".format(FITNESS_PEAK,TARGET))print(" (3) 子代基因 g' = TARGET + beta*(g_sel - TARGET) + v, v ~ N(0, sigma_v^2)")print()print(" 关键张力:收缩把基因拉回{},选择把表型拉向{}。".format(TARGET,FITNESS_PEAK))print(" 182-1问'收缩和变异谁赢',183-1问'收缩和选择谁赢'。")print(" 平衡时表型均值停在两者之间——停在哪?这就是要定量回答的问题。")print()sub("步骤2】从更新规则推导——平衡位移公式")print(" 亲代均值 mu_g,位移 Delta_g = mu_g - TARGET")print(" 选中个体基因均值 mu_{g_sel} = mu_g + h^2 * S")print(" (S = 表型选择差, h^2 = Var(g)/(Var(g)+sigma_e^2),本文模型设定下)")print(" 子代基因均值 mu_g' = TARGET + beta*(mu_{g_sel} - TARGET)")print(" = TARGET + beta*(Delta_g + h^2 * S)")print(" 子代位移 Delta_g' = mu_g' - TARGET = beta*(Delta_g + h^2 * S)")print()print(" 稳态 Delta_g' = Delta_g = Delta*:")print(" Delta* = beta*(Delta* + h^2 * S)")print(" Delta*(1 - beta) = beta * h^2 * S")print(" Delta* = beta * h^2 * S / (1 - beta)")print()print(" 遗传力 h^2 = Var(g) / (Var(g) + sigma_e^2)(本文模型设定下)")print(" 小 sigma_v -> Var(g) 小 -> h^2 ~ 0 -> Delta* ~ 0(没有可遗传方差)")print(" sigma_v ~ sigma_e -> h^2 ~ 0.5(选择生效阈值,半效界)")print(" 大 sigma_v -> h^2 -> 1 -> Delta* = beta * S / (1 - beta)")print()print(" 182-1:变异存续条件 sigma_v > 0")print(" 183-1:选择生效条件 sigma_v >= sigma_e(h^2 >= 0.5,sigma_v=sigma_e为半效界)")print()sub("步骤3】种群代际循环——sigma_v扫描")print(" {}个个体,{}代,beta={},sigma_e={},选择比例{}".format(N_POP,N_GENERATIONS,BETA,SIGMA_E,SELECT_FRAC))print()print(" | sigma_v | h^2(力) | S(差) | Delta | Var(g) | 生效? |")print(" |---------|---------|---------|---------|---------|-------|")results=[]forsigma_vinSIGMA_GRID:res=run_evolution(sigma_v,N_POP,N_GENERATIONS,BETA,SIGMA_E)results.append((sigma_v,res))delta=res['mean_stable']-TARGET effective="✅"ifres['h2_mean']>0.5else"❌"print(" | {:.3f} | {:.4f} | {:+.6f}| {:+.6f}| {:.6f}| {} |".format(sigma_v,res['h2_mean'],res['S_mean'],delta,res['var_g'],effective))print()sub("步骤4】遗传力曲线——h^2(sigma_v)的S形转折")print(" h^2 = Var(g) / (Var(g) + sigma_e^2),sigma_e={}".format(SIGMA_E))print()print(" h^2(sigma_v)曲线:")forsigma_v,resinresults:h2=res['h2_mean']bar_len=int(50*h2)marker=" <- 阈值"ifabs(h2-0.5)<0.15else""print(" sigma_v={:.3f} h^2={:.4f} {}{}".format(sigma_v,h2,"#"*bar_len,marker))print()print(" -> h^2从0到1的S形转折(模拟观测),转折点在sigma_v ~ sigma_e = {}".format(SIGMA_E))print(" -> sigma_v < sigma_e:h^2 < 0.5,选择无效(变异信号被环境噪声淹没)")print(" -> sigma_v >= sigma_e:h^2 >= 0.5,选择生效(变异信号超过环境噪声)")print()sub("步骤5】平衡位移验证——Delta ≈ beta * h^2 * S / (1 - beta)")print(" | sigma_v | Delta(实测) | β·h^2·S/(1-β) | 比值 |")print(" |---------|-----------|------------|--------|")forsigma_v,resinresults:delta=res['mean_stable']-TARGET delta_theory=BETA*res['h2_mean']*res['S_mean']/(1-BETA)ratio=delta/delta_theoryifabs(delta_theory)>1e-8else0print(" | {:.3f} | {:+.6f} | {:+.6f} | {:+.4f} |".format(sigma_v,delta,delta_theory,ratio))print()print(" 注:sigma_v=0.001时Delta和理论值都接近0,比值无意义(分母太小)。")print(" 中间段(sigma_v=0.005~0.200)比值1.02~1.05,公式验证良好。")print(" 大sigma_v(>=0.400)单seed比值偏高1.04~1.16——是系统偏差还是漂变?见183-2多seed验证。")print()sub("步骤6】降调声明")print(" 1. 本篇是demo演示。公式从更新规则严格推导,按147-2实测定义demo是模拟不是实证。")print(" 2. fitness函数是设定的(单峰高斯),不是涌现的——实际fitness景观更复杂。")print(" 3. 无重组无交配(单亲继承),实际遗传机制更丰富。")print(" 4. 有限种群有漂变,大种群极限下漂变消失。")print(" 5. fitness峰设在x*=0.8而非TARGET=0.5,是为了让收缩和选择有张力——如果重合则同义反复。")print(" 6. 基因-表型分离用环境方差sigma_e={}实现遗传力h^2<1,实际环境效应更复杂。".format(SIGMA_E))print(" 7. 与174选择压力的benefit定义对齐:174的benefit是定性描述,183-1给出定量公式。")print(" 8. Delta*公式中h^2*S是线性回归近似,大sigma_v单seed比值偏高——183-2将做多seed验证。")print(" 9. 育种者方程Delta*=beta*h^2*S/(1-beta)是Lush(1937)育种者方程的标准形式。")print(" 本篇贡献是从更新规则推到它并验证,不是发现新公式。")print(" 10. 大sigma_v(如1.50)时Var(g)约2.24,std约1.5是fitness峰宽的15倍——")print(" 物理图像失真,仅用于测试公式在极端参数下的行为。")print()sub("步骤7】七条前提条件——选择生效验证")print(" 条件1 独立性 ✅ 每个体独立变异独立被选")print(" 条件2 隐私性 ✅ 纯数学验证,不涉及隐私")print(" 条件3 繁衍性 🟡 种群代际循环是繁衍的简化模型,非完整繁衍验证")print(" 条件4 安全性 ✅ beta有界,种群有界")print(" 条件5 不可篡改 — 本demo不涉及篡改场景")print(" 条件6 可继承 🟡 育种者方程可移植,非系列定义的基因跨代传递")print(" 条件7 可终止 ✅ 有限代终止(数学语境映射,非体系达标)")print()bar("结语")print(" 183-1接续182-1,从'存续'跨到'生效'。")print()print(" 182-1:变异不会被beta强收缩抹平(D*>0)。")print(" 183-1:选择能把变异导向适应性,但有条件——sigma_v >= sigma_e。")print()print(" 定量结果(从更新规则推导):")print(" 平衡位移 Delta* = beta * h^2 * S / (1 - beta)")print(" 遗传力 h^2 = Var(g) / (Var(g) + sigma_e^2)")print(" 选择生效条件:sigma_v >= sigma_e(h^2 >= 0.5,半效界)")print()print(" 从存续到生效,条件从'sigma_v > 0'升级到'sigma_v >= sigma_e'。")print(" 收缩和选择的张力:表型均值停在TARGET和fitness峰之间,位置由beta和h^2共同决定。")print()print(" 这个系列还在逐步建设中,完善也是咱们和伙伴们的努力方向。")print("="*72)if__name__=="__main__":main()