exp+test: #30 机制落库——select=pre 的打分步长做成参数 pre_h(h=4/8 两臂排队)
pre_h=0 保持"0=commit_n"的轮次46 口径逐位不变;pre_h>0 按绝对步数取 fut 的该步终点误差。 新增两条可手算的期望值:夹具交叉点 h=4 选候选0(0.343 vs 0.20)、h=12 选候选1(0.114 vs 0.60)、 h=16 必须与 endpoint 同选;再加一条不变式 pre_h=0 与 pre_h=commit_n 的轨迹逐位相同。 51 项测试绿;ast 枚举确认新局部名没有遮蔽任何 rollout 形参(上一轮 nmax 那类事故的自查)。 判读规则已预注册,写在 ml/runs/_r48_horizon.sh 顶部。
This commit is contained in:
@@ -163,7 +163,7 @@ def rollout(model, kin, tasks, device, K=8, safety=False, seed=0, max_sec=None,
|
||||
qp0=None, steps=1, z_scale=1.0, select='consist', oracle=None, replan='r3', sub_rule='cross',
|
||||
fb_gain=0.0, fb_scale=0.0, fb_near=0.2, fb_fallback=0.0, safety_partial=0, commit_n=3, collect=None,
|
||||
fb_exec=0.0, exec_safety=0, fb_ki=0.0, fb_decay=0.9, fb_imax=0.5, fb_every=1, safety_try=0, sel_w=0.1, dls_safety=0, fb_clear=0.0, fb_cmin=0.3, sub_refresh=0, fb_block_gain=1.0,
|
||||
inc_cap=0, gap_margin=0.0, cert_batch=0, backoff=0, len_w=0.0, tie=0, progress=None):
|
||||
inc_cap=0, gap_margin=0.0, cert_batch=0, backoff=0, len_w=0.0, tie=0, pre_h=0, progress=None):
|
||||
"""use_sub=False:不用子目标(sf=0);sub_override=(subs [B,M,6] 绝对关节角, n [B] 个数 或 need [B] bool):冷启动时用给定途经点代替子目标头;
|
||||
qp0 [B,6]:起点的上一帧(默认 = q0,即静止起步)。steps:MeanFlow 采样段数;z_scale:噪声缩放;
|
||||
select:consist(部署口径:冷启动价值前瞻、之后与上一条已提交计划的一致性)/ value(每次都价值前瞻)/ first(不选,取第 0 条)。
|
||||
@@ -294,7 +294,7 @@ def rollout(model, kin, tasks, device, K=8, safety=False, seed=0, max_sec=None,
|
||||
score = torch.zeros(B, K, device=device); score[:, 0] = 1
|
||||
elif select == 'pre': # #29:按「这一轮真会执行到的位置」打分,而不是 16 步开环外推的末端。
|
||||
# 诊断来自 ep_len/ep_waste 的失败:打分地平线远长于提交步数,被安全层截断的候选那个终点根本到不了。
|
||||
qa_pre = fut[:, :, min(commit_n, fut.shape[2]) - 1].reshape(B * K, 6)
|
||||
qa_pre = fut[:, :, min(pre_h if pre_h > 0 else commit_n, fut.shape[2]) - 1].reshape(B * K, 6)
|
||||
e_pre, _ = goal_err(kin, qa_pre, T.repeat_interleave(K, 0), R.repeat_interleave(K, 0))
|
||||
score = -e_pre.view(B, K)
|
||||
elif select in ('endpoint', 'adapt', 'ep_len', 'ep_waste'):
|
||||
|
||||
Reference in New Issue
Block a user