天赐范式第185天·第一篇:让公式开始预测——S闭式解从景观先验算出
摘要
S闭式解从景观先验算出(Robertson-Price恒等式 + 高斯×高斯卷积),不再从模拟里测。扫σ_v从0.002到0.100共18点,S模拟/S闭式=0.932–0.982,闭式解确实预测S(约5%精度)。Δ模拟/Δ预测=1.10–2.41:大σ_v端约10%偏差是真实预测误差,小σ_v端是小量比值问题。还183-2降调7的债——ratio≈1不再构造上注定。
一、接续183-2的降调7
第183-2篇在总结时留下降调7:“S和h²都从同一模拟测出,ratio≈1构造上注定”。这句话的意思是说,第183、184天做的验证里,选择差S和遗传力h²都是从同一批模拟最后一代的数据里测出来的,然后用它们对照Δ*公式——公式用的是"自己测出来的量",等于自己在验自己,比值贴近1有构造的成分,独立预测力存疑。
这篇把那笔债还上:把S从模拟里拿出来,用景观参数闭式算出,再来对模拟。这样"预测"才是真正的独立预测——公式先算出一个数,模拟再跑出一个数,两边对不上就是公式的问题,不再是自证。
二、闭式解与实验设计
2.1 闭式解
Robertson-Price恒等式 + 高斯×高斯卷积给出:
S闭式 = (x* − μ) · σ² / (σ² + ω²)
- σ² = Var(g) + σ_e²(表型方差,遗传方差 + 环境方差)
- ω² = fitness峰宽度平方
- μ = 平衡时表型均值,x* = fitness峰位置
前提条件:(1) 选择权重为高斯形 w(x) ∝ exp(−(x−x*)²/(2ω²));(2) 表型分布近似正态;(3) μ和σ²里的Var(g)从模拟测——但S闭式本身不从模拟测S,而是用这两个模拟量和景观参数(x*, ω)算出。这保证了S的"独立预测"性质:S不是从模拟拟合的。
单代的预测位移:
Δ*预测 = β · h² · S闭式 / (1 − β)
对照的模拟量:
Δ*模拟 = mean(g) − TARGET(从模拟测)
2.2 选择机制:高斯加权
关键改动:184-2用的是截尾选择(top30%),这里改成高斯加权选择——每代按fitness值加权抽样,不再截断分布。理由是闭式解的推导假设选择权重是高斯形(fitness自身就是高斯),截尾选择会截断尾部,两边机制对齐是"闭式能对上模拟"的前提。
机制不同不是公式错:同参数下截尾选择S≈0.033,高斯加权S≈0.0210,量级差异来自选择机制本身。
2.3 参数与扫描
固定:β=0.3, σ_e=0.02, N=200, gen=500, seeds=20, x*=0.8, ω=0.1, TARGET=0.5;扫描σ_v从0.002到0.100共18个格点。h²从模拟稳态Var(g)实测,不依赖弱选择假设。
三、核心对比:S闭式 vs S模拟
| σ_v | S模拟 | S闭式 | S比值(模拟/闭式) |
|---|---|---|---|
| 0.002 | 0.01142 | 0.01165 | 0.981 |
| 0.004 | 0.01165 | 0.01199 | 0.972 |
| 0.006 | 0.01202 | 0.01255 | 0.958 |
| 0.008 | 0.01267 | 0.01332 | 0.951 |
| 0.010 | 0.01353 | 0.01428 | 0.948 |
| 0.012 | 0.01461 | 0.01551 | 0.942 |
| 0.014 | 0.01586 | 0.01696 | 0.935 |
| 0.016 | 0.01735 | 0.01856 | 0.935 |
| 0.018 | 0.01915 | 0.02038 | 0.940 |
| 0.020 | 0.02096 | 0.02227 | 0.941 |
| 0.025 | 0.02610 | 0.02793 | 0.935 |
| 0.030 | 0.03180 | 0.03412 | 0.932 |
| 0.035 | 0.03825 | 0.04071 | 0.939 |
| 0.040 | 0.04512 | 0.04776 | 0.945 |
| 0.050 | 0.05977 | 0.06311 | 0.947 |
| 0.060 | 0.07334 | 0.07695 | 0.953 |
| 0.080 | 0.09941 | 0.10312 | 0.964 |
| 0.100 | 0.12154 | 0.12378 | 0.982 |
S比值范围 0.932–0.982,闭式解系统性略高2%~7%,中段最低、两端收敛。
结论:S闭式解确实预测S,约5%精度。S不再从模拟测,从景观参数(x*, μ, σ², ω²)先验算出,还能对上模拟——闭式解立住了。两端比值更贴近1(0.981/0.982)是因为两端μ离TARGET更近、线性近似误差更小;中段(σ_v≈0.03)相对偏差最大约7%,是正态性假设的代价。
四、Δ*独立预测 vs 模拟
| σ_v | h² | Δ*模拟 | Δ*预测 | 比值(模拟/预测) |
|---|---|---|---|---|
| 0.002 | 0.0103 | 0.00012±0.00014 | 0.00005±0.00001 | 2.406 |
| 0.004 | 0.0399 | 0.00035±0.00027 | 0.00021±0.00002 | 1.706 |
| 0.006 | 0.0859 | 0.00065±0.00042 | 0.00046±0.00005 | 1.416 |
| 0.008 | 0.1420 | 0.00104±0.00057 | 0.00081±0.00007 | 1.277 |
| 0.010 | 0.2039 | 0.00160±0.00067 | 0.00125±0.00011 | 1.284 |
| 0.012 | 0.2712 | 0.00216±0.00098 | 0.00181±0.00022 | 1.195 |
| 0.014 | 0.3385 | 0.00300±0.00096 | 0.00247±0.00027 | 1.216 |
| 0.016 | 0.4008 | 0.00380±0.00106 | 0.00320±0.00031 | 1.188 |
| 0.018 | 0.4588 | 0.00454±0.00120 | 0.00402±0.00041 | 1.130 |
| 0.020 | 0.5102 | 0.00555±0.00141 | 0.00488±0.00041 | 1.138 |
| 0.025 | 0.6212 | 0.00859±0.00168 | 0.00745±0.00074 | 1.152 |
| 0.030 | 0.7010 | 0.01176±0.00199 | 0.01026±0.00085 | 1.146 |
| 0.035 | 0.7590 | 0.01524±0.00216 | 0.01326±0.00122 | 1.149 |
| 0.040 | 0.8031 | 0.01879±0.00282 | 0.01646±0.00163 | 1.141 |
| 0.050 | 0.8653 | 0.02591±0.00340 | 0.02343±0.00216 | 1.106 |
| 0.060 | 0.9005 | 0.03292±0.00402 | 0.02972±0.00248 | 1.108 |
| 0.080 | 0.9412 | 0.04634±0.00558 | 0.04161±0.00329 | 1.114 |
| 0.100 | 0.9610 | 0.05626±0.00703 | 0.05099±0.00326 | 1.103 |
Δ*比值范围 1.103–2.406。拆开看:
- 大σ_v端(σ_v≥0.018):比值收敛到1.10–1.15,约10%偏差。这是真实预测误差,不是自证。来源有二:(a) Bulmer效应——选择代代压缩遗传方差,h²里的Var(g)已是被压缩后的值,但S闭式推导用的是中性期望的Var(g);(b) 有限种群N=200下μ的稳态波动。两者共同导致S闭式系统性略高2%~7%,传导到Δ*预测后约10%。10%作为独立预测的误差是可接受的。
- 小σ_v端(σ_v≤0.014):比值放大到1.2–2.4。这是小量比值问题。σ_v=0.002时Δ*模拟仅0.00012,预测仅0.00005,两个都趋近零,微小的绝对偏差(~0.00007)就把比值放到2.4。不是系统偏差,是"两个小量相除"的统计意义有限——和183-2、184-2发现的低h²端比值偏高同源。
σ_v≥0.018后比值稳定在1.10–1.15,公式无系统性低估,仅恒定高约10%,方向明确(预测略保守,模拟略高)。
五、弧签名动作:从"数值对解析"升级为"独立预测对数值"
这篇的意义不在数值本身,在验证姿势:
- 183-2:S和h²都从同一模拟测出,ratio≈1构造上注定——公式"对"但缺乏独立证据。
- 185-1:S从景观参数闭式解算出,不从模拟测;Δ*预测 = β·h²·S闭式/(1−β) 对 Δ*模拟 = mean(g)−TARGET。
- 弧签名动作成立:从"数值对解析"升级为"独立预测对数值"。ratio≈1不再是构造注定:比值范围1.10–1.15(大σ_v端)是给定景观参数后真实跑出来的独立预测误差。
弧线接续:182-1变异存续(σ_v>0)→ 183-1选择生效(h²>0.5)→ 184-2临界点是平滑过渡且公式全局适用 →185-1公式开始独立预测,S由景观先验算出。
六、降调
h²里的Var(g)仍从模拟测。Bulmer效应(选择代代压缩遗传方差)是下一步的债——要真独立,Var(g)也得从输入参数算出来,不能从模拟回测。
正态性假设在高斯加权选择下比截尾更好,但不完美。中段σ_v≈0.03处S比值偏离到0.932(约7%),是有限种群+有限代数下μ估计与平衡假设的残余偏差,不是公式错误。
截尾S≈0.033 vs 高斯加权S≈0.0210(同参数σ_v=0.020),是机制不同,不是公式错。184-2用截尾、185-1用高斯加权,两侧分别与各自机制对齐;跨篇对比数值时必须看机制标签。
大β附带红利:软选择下大β不仅稳态快,S本身也小。β大→选择更强→μ更快逼近x*→(x*−μ)缩小→S闭式减小。这是软选择(高斯加权)下的理论性质(本篇模拟固定β=0.3,此处讨论扫β增大时的行为),截尾选择下不成立。
系列还在逐步建设中,完善是和伙伴们的努力方向。
附录:完整代码
# -*- coding: utf-8 -*-""" 天赐范式第185天:让公式开始预测——S闭式解从景观先验算出 V3.3.23.0 接续183-2降调7("S和h²都从同一模拟测出,ratio≈1构造上注定"),还这笔债。 闭式解(Robertson-Price恒等式 + 高斯×高斯卷积): S = (x* - μ) · σ² / (σ² + ω²) 其中 σ² = Var(g) + σ_e²(表型方差),ω² = fitness峰宽度平方 μ = 平衡时表型均值,x* = fitness峰位置 Δ*预测 = β · h² · S闭式 / (1 - β) Δ*模拟 = mean(g) - TARGET(从模拟测) 弧签名动作:独立预测对数值(S不从模拟测,从景观参数先验算出) 选择机制:高斯加权选择(每代按w(x)加权抽样),与闭式解严格对齐 - 184-2用截尾选择(top30%),这里改成高斯加权,两边机制一致 - 截尾S≈0.033 vs 高斯加权S≈0.0210,机制不同非公式错 降调: - h²里的Var(g)仍从模拟测(Bulmer效应是下一步的债) - 正态性假设在高斯加权选择下比截尾更好(加权不截断分布) - 大β附带红利:软选择下大β不仅稳态快,S本身也小(理论性质,本篇β=0.3) """importsysimportmathimportnumpyasnpifhasattr(sys.stdout,'reconfigure'):sys.stdout.reconfigure(encoding='utf-8')PID="TC-185-V3.3.23.0"TARGET=0.5FITNESS_PEAK=0.8FITNESS_WIDTH=0.10BETA=0.3SIGMA_E=0.02N_POP=200N_GENERATIONS=500N_SEEDS=20SIGMA_V_GRID=[0.002,0.004,0.006,0.008,0.010,0.012,0.014,0.016,0.018,0.020,0.025,0.030,0.035,0.040,0.050,0.060,0.080,0.100,]defbar(title):print("="*72)print(" "+title)print("="*72)print()defsub(title):print("【"+title)print("-"*72)deffitness(x):returnnp.exp(-(x-FITNESS_PEAK)**2/(2*FITNESS_WIDTH**2))defrun_one(sigma_v,seed):rng=np.random.RandomState(seed)genes=rng.normal(TARGET,0.01,N_POP)forgeninrange(N_GENERATIONS):phenos=genes+rng.normal(0,SIGMA_E,N_POP)fits=fitness(phenos)probs=fits/fits.sum()sel_idx=rng.choice(N_POP,size=N_POP,p=probs)parent_genes=genes[sel_idx]genes=TARGET+BETA*(parent_genes-TARGET)+rng.normal(0,sigma_v,N_POP)var_g=float(np.var(genes))mean_g=float(np.mean(genes))h2=var_g/(var_g+SIGMA_E**2)phenos=genes+rng.normal(0,SIGMA_E,N_POP)fits=fitness(phenos)mean_parents_x=float(np.mean(phenos))weighted_x=float(np.average(phenos,weights=fits))S_sim=weighted_x-mean_parents_x delta_sim=mean_g-TARGET sigma_x2=var_g+SIGMA_E**2mu=mean_g S_closed=(FITNESS_PEAK-mu)*sigma_x2/(sigma_x2+FITNESS_WIDTH**2)delta_pred=BETA*h2*S_closed/(1-BETA)returnh2,delta_sim,delta_pred,S_sim,S_closed,var_gdefmain():bar(f"{PID}让公式开始预测——S闭式解从景观先验算出")print(f"模型: x=g+e, g'=TARGET+β(g_sel-TARGET)+v")print(f"选择机制: 高斯加权(按fitness加权抽样,非截尾top30%)")print(f"参数: β={BETA}, σ_e={SIGMA_E}, N={N_POP}, gen={N_GENERATIONS}, seeds={N_SEEDS}")print(f"fitness峰: x*={FITNESS_PEAK}, ω={FITNESS_WIDTH}, TARGET={TARGET}")print(f"闭式解: S = (x*-μ)·σ²/(σ²+ω²)")print(f"预测: Δ* = β·h²·S闭式/(1-β) vs 模拟: Δ* = mean(g)-TARGET")print()sub("扫描结果:独立预测 vs 模拟")print(f"{'σ_v':>8s}{'h²':>8s}{'Δ*模拟':>12s}{'Δ*预测':>12s}{'S模拟':>10s}{'S闭式':>10s}{'比值':>6s}")print("-"*72)results=[]forsigma_vinSIGMA_V_GRID:h2_list=[]delta_sim_list=[]delta_pred_list=[]S_sim_list=[]S_closed_list=[]forseedinrange(N_SEEDS):h2,delta_sim,delta_pred,S_sim,S_closed,var_g=run_one(sigma_v,seed)h2_list.append(h2)delta_sim_list.append(delta_sim)delta_pred_list.append(delta_pred)S_sim_list.append(S_sim)S_closed_list.append(S_closed)h2_mean=np.mean(h2_list)delta_sim_mean=np.mean(delta_sim_list)delta_sim_std=np.std(delta_sim_list)delta_pred_mean=np.mean(delta_pred_list)delta_pred_std=np.std(delta_pred_list)S_sim_mean=np.mean(S_sim_list)S_closed_mean=np.mean(S_closed_list)ratio=delta_sim_mean/delta_pred_meanifabs(delta_pred_mean)>1e-10elsefloat('nan')results.append({'sigma_v':sigma_v,'h2_mean':h2_mean,'delta_sim_mean':delta_sim_mean,'delta_sim_std':delta_sim_std,'delta_pred_mean':delta_pred_mean,'delta_pred_std':delta_pred_std,'S_sim_mean':S_sim_mean,'S_closed_mean':S_closed_mean,'ratio':ratio,})print(f"{sigma_v:>8.3f}{h2_mean:>8.4f}{delta_sim_mean:>8.5f}±{delta_sim_std:.5f}{delta_pred_mean:>8.5f}±{delta_pred_std:.5f}{S_sim_mean:>8.5f}{S_closed_mean:>8.5f}{ratio:>6.3f}")print()sub("核心对比:S闭式 vs S模拟")print(f"{'σ_v':>8s}{'S模拟':>12s}{'S闭式':>12s}{'S比值':>6s}")print("-"*48)forrinresults:S_ratio=r['S_sim_mean']/r['S_closed_mean']ifabs(r['S_closed_mean'])>1e-10elsefloat('nan')print(f"{r['sigma_v']:>8.3f}{r['S_sim_mean']:>10.5f}{r['S_closed_mean']:>10.5f}{S_ratio:>6.3f}")print()sub("结论")print(f"183-2降调7:'S和h²都从同一模拟测出,ratio≈1构造上注定'")print(f"185-1:S从景观参数闭式解算出,不从模拟测")print(f" S = (x*-μ)·σ²/(σ²+ω²) —— Robertson-Price恒等式+高斯卷积")print(f" Δ*预测 = β·h²·S闭式/(1-β) vs Δ*模拟 = mean(g)-TARGET")print()ratios=[r['ratio']forrinresultsifnotmath.isnan(r['ratio'])]S_ratios=[r['S_sim_mean']/r['S_closed_mean']forrinresultsifabs(r['S_closed_mean'])>1e-10]print(f" Δ*模拟/Δ*预测比值范围:{min(ratios):.3f}-{max(ratios):.3f}")print(f" S模拟/S闭式比值范围:{min(S_ratios):.3f}-{max(S_ratios):.3f}")print()print(f" 弧签名动作:从'数值对解析'升级为'独立预测对数值'")if__name__=="__main__":main()天赐范式 V3.3.23.0 · 2026-10-04