proles: account for work capacity
previously all residents went to work on the map, but if the
neighborhood is mostly residential that meant they were "competing"
heavily for the scarce jobs available on the map.
with this commit, we do a better job of spreading worker/residential
demand to account for what is available, and fill in the gap with
off-map trip origins/desitinations.
e.g. if a neighborhood is mostly residential, we have folks commute off
of map. If a neighborhood is mostly commercial, we have folks commute
into the map.
controller terminology. Part of #197.
Holding off on touching PhaseType and all of the serialized
seattle_traffic_signals format, since this will all change in Kyle's PR
anyway.
not split by direction. Update many callers, and lock down the
visibility of the old methods.
Tested a few maps manually to make sure there's no behavioral diff. Only
problem right now is the z-order of adjacent lanes covering up half of
the white stripe sometimes. Have some ideas to fix that later, and not
_super_ important in the meantime.
the API (#245), and beef up the Python example.
Impact to prebaked file size is tiny -- for lakeslice, the original
intersection_thruput is 2MB and the new traffic_signal_thruput is 435KB.
[rebuild]
new trips, then seeing the impact they'll have on the normal weekday
scenario. So how much externality would be caused by a bunch of new
trips if some building is built?
Demo showing the whole flow: https://youtu.be/adpED0KGQ7Q. Why do those
few trips at the beginning impact some later trips so much? Who knows.
Likely parking spots get gobbled up.
trips as a Scenario to later re-run. This is useful for quickly defining
"test cases" for development, and it's a start to a UI for letting
players specify (and eventually share) traffic patterns they define.
when allowing a car to start a turn. It causes
https://github.com/dabreegster/abstreet/pull/276#discussion_r470269394
and also the lakeslice scenario to gridlock (a regression that began a
few weeks ago). But keep the flag on for now, to keep the montlake
scenaro running at least.
https://dabreegster.github.io/abstreet/trafficsim/gridlock.html has
notes about the many different causes and in-progress fixes for
gridlock. This experiment hasn't been explained very well yet, but
roughly it treats a cluster of traffic signals as one, so that once a
vehicle gains access through the first light, they guarantee immediate
access through the entire sequence. This interacts with the "don't block
the box" behavior (don't start a turn if you might get stuck in the
intersection) strangely.
While attempting to get this rollback to work, I also had to manually
redraw the traffic lights for a few manually specified intersections.
They became out-of-date a few weeks ago when I cleaned up the OSM
geometry upstream and the referenced IDs changed, and I hadn't bothered
to re-time the signals. Luckily, with the new multi-signal editor,
redrawing the timing was much easier than originally!
Regenerated all data and lots of bus routes vanished. Plan to get back
to that project soon.
extend short borders, but it can't be done in convert_osm clip. has to
happen later when trimming and making intersection geometry. too much of
a headache right now.
west seattle and krakow still broken because of short borders.
also grab fresh osm
ignoring parking spots if the parking lane is in the opposite direction.
workaround is to reverse the lane. dealing with that bug next though.
part of #64 and #176. fixes#109
will start/stop directly in front of a building driveway, when possible.
still need to handle the case when the bikeable position isn't connected
to most to the graph (for buildings accessible only by footway and for
things around the border)
connections to driving/biking. just store the immutable stuff -- whether
there's parking in the building, the connection to the sidewalk, and the
physical driveway line. compute all the rest dynamically, so it responds
to edits without effort.
shouldn't be major behavior changes yet (besides maybe fixing some bugs
involving edits)
from borders and gradually appear. This looks more realistic and lets
more trips succeed, especially buses spawning at short borders.
This fixes#220 in a hopefully simpler way. Extending the geometry of
incoming roads is possible, but it may look visually overwhelming,
because two border intersections could sometimes overlap.
- handle living streets that allow buses in berlin
- don't connect LeaveMap nodes to anything else; people were getting
creative and using them as shortcuts to effectively warp to a border,
then come back into the map
- make should_use_transit understand transfers (and still just return
the first leg)
- warp to bus routes by ID
still at least one weird bug left, seen in krakow. working on it next,
trying to keep these commits "small." not regenerating maps quite yet.
- speed limit dropdown crash
- link to bus route from bus stop panel, not some currently running bus
- show number of waiting people per stop in route panel and route dash
access restrictions. makes old town in krakow look much better and
brings in stay healthy streets in seattle. also commit some code related
to footways that isn't exercised yet.
* further work on #154 - better trip generator
use single trip mode selection function
(still extremely primitive, based on a distance)
border-to-border traffic is now more varied
rewrite TODOs
* stylistic improvements
for now solely cars, next step would be having function deciding on trip mode based on distance and using it also here
note #206, this code may be buggy though at least sometimes transit traffic works
next potential step - some distribution of transit traffic over day