traffic op• 数据种类:points × points × points → any
• 调用: import fullseye as fs; fs.ledger.social_force_step(pos, vel, goals, *, dt: 'float', v0, tau: 'float', A: 'float', B: 'float', radius, walls=None)(要直接调用实现,import drivetraffic; drivetraffic.social_force_step(pos, vel, goals, *, dt: 'float', v0, tau: 'float', A: 'float', B: 'float', radius, walls=None);从台账取用则 opsdrive.get("social_force_step"))
social force 的 1 步(单位质量。Helbing & Molnár 1995 / Helbing, Farkas, Vicsek 2000 的形式)。
dv_i/dt = (v0_i e_i − v_i)/τ + Σ_j A exp((r_ij − d_ij)/B) n_ij + Σ_W A exp((r_i − d_iW)/B) n_iW
e_i = 指向目标的单位向量(距目标 1e-9 m 以内则为 0),r_ij = r_i + r_j,d_ij = |x_i − x_j|, n_ij = (x_i − x_j)/d_ij。墙 W 是线段 ((x0, y0), (x1, y1)) 的列表,d_iW 与 n_iW 取自最近点。
积分(指数积分):假定斥力 F 在步长内恒定,精确求解线性部分 (v_d − v)/τ(v_d = v0 e + τ F):
v' = v_d + (v − v_d) e^{−dt/τ},x' = x + v_d dt + (v − v_d) τ (1 − e^{−dt/τ})。单人且无斥力时,结果与 v(t) = v0(1 − e^{−t/τ}) 与 dt 无关地 一致(门)。有斥力时为一阶误差。
参数:pos、vel、goals 为 (N, 2)。v0 与 radius 为标量或 (N,)。walls 为 (M, 2, 2) 或 None。
返回值:(pos', vel')。若布置为镜像对称或点对称,结果也保持同样的对称性(因为公式是对称的;由门确认)。
Raises ValueError:形状不一致、非有限值、τ、B、dt ≤ 0、A < 0、半径 < 0、两人位置重合。
• 示例数据目录(下载 URL / 许可证) —— 2-D 用 skimage.data(BSD/公有领域)加合成图,3-D 给出真实数据源(Stanford/PDS 等)的下载 URL。
• 算子来历与参考文献 —— 该算子族所依据的研究/方法出处。
• 算法的正典(作者、年份)与用途见上面的族使用指南。
• gallery_drive_mirrors_crowds — py -3.11 examples/gallery_drive_mirrors_crowds.py
any 作为输入)course_crank · course_s_curve · course_turnaround · course_slope · course_intersection · course_parallel_parking · course_crossing · course_road
traffic)idm_accel · idm_equilibrium_gap · idm_platoon_simulate · driver_style · lateral_wobble · ou_estimate · pedestrian_crossing · occlusion_reveal_distance
*Provenance: drivetraffic.py — DRIVE 算子登记表。本条目由 tools/opdocs.py md 自动生成(请勿手工编辑)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.