social_force_step — DRIVE 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 에 상관없이 일치한다(게이트). 척력이 있으면 1 차 오차.

인수: pos, vel, goals 는 (N, 2). v0 와 radius 는 스칼라 또는 (N,). walls 는 (M, 2, 2) 또는 None.

반환값: (pos', vel'). 배치가 거울 대칭 또는 점대칭이면 결과도 같은 대칭성을 유지한다(식이 대칭이므로. 게이트로 확인).

Raises ValueError: 형상 불일치, 비유한값, τ, B, dt ≤ 0, A < 0, 반지름 < 0, 두 사람의 위치가 일치.

참고(샘플 데이터·문헌)

• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL 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 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.