fix+exp: 轮次35(补)——gaps/gm_groups 拒绝行数不符的 xf;撤回两次不存在的"合并调用"收益
- 探测脚本把认证点当成与特征无关的已知量,据此测出的 共享cum_xf −4.3ms / 合并一次调用 −8.1ms 都不成立:真实顺序是 特征(q)→推理→候选→认证点,同一次规划内既不能共享 xf 也不能合并 gaps 只有轮次34 已落地的 gm_groups 复用同姿态 xf(−3.4ms,22项指标逐位不变)是真的 - 守卫:xf 行数与 q 不符时抛错(之前会静默按别的行做宽相位,实测触发 CUDA device-side assert) - 测试 34→35 项;check_parity 仍 PASS(2000样本,间隙差 2.52e-13 mm、碰撞布尔差 0、特征差 5.96e-08)
This commit is contained in:
@@ -700,5 +700,18 @@ class CertBatchEquivalenceTest(unittest.TestCase):
|
||||
self.assertAlmostEqual(seq['traj'][0, 2, 0].item(), 0.24, places=5) # 第 2 步被拒后停在原地
|
||||
|
||||
|
||||
def test_mismatched_xf_row_count_is_rejected(self):
|
||||
kin = Kin()
|
||||
q1 = torch.zeros(1, 6); q5 = torch.zeros(5, 6)
|
||||
xf5 = kin.cum_xf(q5)
|
||||
for name, fn in (('gaps', lambda: kin.gaps(q1, 40.0, xf5)),
|
||||
('gm_groups', lambda: kin.gm_groups(q1, [(0, 2)], 40.0, xf=xf5))):
|
||||
with self.subTest(fn=name):
|
||||
with self.assertRaisesRegex(ValueError, '行数'):
|
||||
fn()
|
||||
self.assertEqual(kin.gaps(q5, 40.0, xf5)['gm'].shape, (5, 49))
|
||||
self.assertEqual(kin.gm_groups(q5, [(0, 2)], 40.0, xf=xf5).shape, (5, 1))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user