abstreet/docs/TODO_phase3.md
2018-09-16 16:15:08 -07:00

2.2 KiB

TODO for Phase 3 (Simulation)

cars

  • features

    • different lookahead reaction times
    • figure out lanechanging (and turns that dont make sense)
  • code cleanup

    • figure out responsibility btwn agents and managers, then fix up visibility
    • things like ParkingSimState have so many methods -- some are only meant for spawner, or driving/walking to query. separate out some traits.
    • on a lane vs turn permeates so many places
  • better visualization

    • draw moving / blocked colors (gradually more red as they wait longer)
    • make lookahead buffer follow the shape of the road and extend into other lanes and stuff
    • render cars with textures?
  • reversible sim

  • be careful

    • could see if we ever have a lookahead constraint to deaccel more than what we're capable of. it might mask problems. but since things like accel_to_stop_in_dist don't have a careful notion of how much time will pass, they recommend big rates sometimes.
    • no way for an agent to request a turn and ASAP have it granted. are there cases where they might slow down unnecessarily?

bikes

  • model bikes as slow cars

pedestrians

  • render overlapping peds reasonably

General

  • savestating a sim has nondet output due to hashes; switching to btree is kind of weird

    • consider overriding encoding for TurnID and such, instead of remembering to stick maps everywhere
  • diffing two sim states is tedious no matter what; is there a nice macro-driven deep equals we could do instead?

    • will need programmatic diffs later for pointing out changes to players in A/B tests
  • consider refactoring car/ped sim

    • basic structure with actions, react, stepping is same. SimQueue, lookahead, can goto? differs.
  • handle map borders

    • manually mark them?
    • be able to start/end trips there
    • start to model demand data with manually selecting a source/dest area
  • figure out how to capture stacktraces kinda optionally

    • manual call at a fxn to dump its stacktrace somewhere (to a file? ideally shared global state to dedupe stuff)
    • macro to insert a call at the beginning of a fxn
    • macro to apply a macro to all fxns in an impl
    • then i can manually edit a few places when I want to gather data