Commit Graph

1398 Commits

Author SHA1 Message Date
Dustin Carlino
2895d50a1e
Add tooltips to the agent meters, and stop showing both buses and passengers. Fixes #239 (#323) 2020-09-11 11:08:26 -07:00
Dustin Carlino
f1b1263ee2 Fix congestion capping impl when RESERVE_WHEN_STARTING_TRIP is enabled. It wasn't reseting the counter every hour. 2020-09-10 14:29:06 -07:00
Michael Kirk
c11cecf1ac
log cleanups (#321) 2020-09-10 14:20:35 -07:00
Michael Kirk
f685af47a5
proletariat robot considers resident/worker capacity (#320)
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.
2020-09-10 14:04:20 -07:00
Dustin Carlino
8cc61aafc8 Add a method to the API to modify a scenario. No callers/tests yet. 2020-09-09 19:52:15 -07:00
Dustin Carlino
1388694eec Flag off the live map edits, since it's going to take lots more work to stabilize this, but git branches are scary to maintain for more than a few days. #312 2020-09-09 15:03:14 -07:00
Dustin Carlino
220f33e2ec Abort cars bound to park on edited lanes. #312 2020-09-09 15:03:14 -07:00
Dustin Carlino
53f35f5de1 Nuke pedestrians walking to deleted cars. #312 2020-09-09 15:03:14 -07:00
Dustin Carlino
39290f899c Handle some of the live changes to parking by deleting parked cars on
edited lanes. #312
2020-09-09 15:03:14 -07:00
Dustin Carlino
61acf25b8e Initialize intersections converted live to traffic signals. #312 2020-09-09 15:03:14 -07:00
Dustin Carlino
d8011a90f4 Handle live edits by just aborting any current trips that cross an
edited road or closed intersection. #312

Along the way, refactor more context plumbing in DrivingSimState.
2020-09-09 15:03:14 -07:00
Dustin Carlino
5be4c2ca84 Add an API to add a new trip in the middle of the simulation. Fixes #313
[rebuild]
2020-09-06 13:53:31 -07:00
Dustin Carlino
193a3b1515 Restructure the trip mode choice in one of the activity models to more clearly branch based on trip distance, for #227 2020-09-04 11:15:17 -07:00
Dustin Carlino
f610c66572 Remove the weird shifting/angle inversions from DrivingSide. First step
of #311. Tested to not break righthand maps.
2020-09-04 10:01:06 -07:00
Dustin Carlino
74aca40c0c
Mechanicallyish rename TurnGroup -> Movement for #197, as decided in (#306)
https://github.com/dabreegster/abstreet/pull/302#discussion_r479571931
2020-08-29 15:18:54 -07:00
Dustin Carlino
a36ef99c06
Rename Phase -> Stage, to be more in line with standard traffic signal (#302)
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.
2020-08-28 17:19:23 -07:00
Dustin Carlino
f662d9e34f Get rid of PartialEq on all of the Sim structs. It was originally there for a unit test that simulations are deterministic, but that test is long gone. (Determinism is now tested a bit more indirectly, but usefully, by looking for diffs to prebaked results. It could also be done by diffing serialized Sims.) 2020-08-28 14:26:22 -07:00
Michael Kirk
e5620aeb10 configurable "jump to delay" 2020-08-28 13:20:05 -07:00
Dustin Carlino
b6a4657dbb Whittle down more deprecated Road stuff 2020-08-25 12:08:54 -07:00
Dustin Carlino
aa3bd5073b Make some new methods on Road to handle child lanes from left-to-right,
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.
2020-08-25 12:08:54 -07:00
Dustin Carlino
4005adecf8 Refactor: create a Direction enum, in preparation for two-way cycletracks on one side of a road. 2020-08-24 13:30:13 -07:00
Dustin Carlino
0fd40bd04e Explicitly mark buildings with private off-street parking from OSM. 2ebf463635 added parking icons to all buildings with > 10 spots, but this makes the downtown map look ridiculous. The intention was to show the tagged buildings, so just go do that. 2020-08-23 11:09:00 -07:00
Dustin Carlino
70dd9fcad1 Switch to 'reserving' the congestion cap when starting a trip, not when entering the road. In the initial tests, all the drivers rush for a road at once. They all pass the check initially, then violate it when they reach it. It's a little more reasonable to enforce the cap earlier, even though we can't really predict when the car will reach the zone, so the time is a little off. 2020-08-23 09:54:39 -07:00
Dustin Carlino
6250cb8393 Be more specific about access restrictions in info panel. For capped roads, print the value and current counter. 2020-08-23 09:41:12 -07:00
Dustin Carlino
8a05a88f0c Refactor the plumbing of different parts of Sim. More context at
https://old.reddit.com/r/rust/comments/idjcua/passing_all_other_fields_of_a_struct_to_one/.
2020-08-22 21:46:57 -07:00
Dustin Carlino
11832aa606 Record throughput through a traffic signal by direction, expose through
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]
2020-08-22 09:13:16 -07:00
Dustin Carlino
21ab1d7d6f Before starting the driving portion of a trip, check if it'll cross a
zone with a cap that's been exceeded. If so, abort the trip.

This is 90% plumbing... need to rethink how pieces of the simulation are
passed around.
2020-08-20 16:38:45 -07:00
Dustin Carlino
2bfb5d5ac4 Track how many cars are entering zones with caps.
Tested by print debugging and comparing to throughput stats
2020-08-20 16:38:45 -07:00
Dustin Carlino
fa83554eb4 Consolidate code for loading edits from JSON 2020-08-20 16:33:08 -07:00
Dustin Carlino
084b9d74cd Store delay for traffic signals per direction of travel, using a compressed representation of turn groups. No substantial increase in prebaked file size. 2020-08-20 16:21:52 -07:00
Dustin Carlino
f31c4ec7fb New tool to union two scenarios. One use case is manually defining some
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.
2020-08-19 17:49:39 -07:00
Dustin Carlino
d427893843 Model parking lots with extra un-renderable spots. This fixes #150, lots
without aisles, and #265, multi-story garages.
2020-08-19 17:19:54 -07:00
Dustin Carlino
a6a454d326 Add a tool to import external traffic demand data. The format and way of
calling the tool (not in the importer?) are just experiments right now.
2020-08-17 12:32:09 -07:00
Dustin Carlino
e5f7136f27 parallelize the proletariat robot activity model for #154 [rebuild] 2020-08-16 17:33:12 -07:00
Dustin Carlino
bef3434ac8 adjust the most egregious traffic signals downtown 2020-08-15 18:35:14 -07:00
Dustin Carlino
92d121ecd4 restore lakeslice to former glory, by allowing blocking-the-box at two intersections that're smushed together. had something like this a while ago, but I thought it became unnecessary when working on uber-turns a few weeks ago 2020-08-15 17:52:23 -07:00
Dustin Carlino
5bede4aca2 Start some initial UI for tuning offset of multiple intersections 2020-08-14 20:50:13 -07:00
Dustin Carlino
3f86af0dc0 Add back some primitive control for signal offset at a single
intersection. Interpret the value in the simulation layer again (it was
removed around bb3da1f8eb or so due to
being unused).
2020-08-14 20:50:13 -07:00
Dustin Carlino
e6c1d960ec In traffic=none mode, allow recording (most of) the manually specified
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.
2020-08-14 18:53:39 -07:00
Dustin Carlino
25ee39af89 Prepare to flag-guard an experiment to handle uber-turns differently
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.
2020-08-14 11:33:25 -07:00
Dustin Carlino
11cefb118a And the same thing for OriginalIntersection
Actually, don't need to regenerate map data. Thanks to the magic of
zero-cost wrapper types, the binary format is the same.
2020-08-13 11:48:13 -07:00
Dustin Carlino
31e8c654d2 prototype directional traffic signal demand viz over time 2020-08-10 13:19:47 -07:00
Dustin Carlino
d1e9e38e82 refactor for #231: use typed OSM IDs everywhere, dedupe URL code
have to regen, the binary format has changed
2020-08-08 16:09:36 -07:00
Dustin Carlino
e35c69f6f3 ezgui Wizard (and its pet Cloneable)
Here lies a weird coroutine experiment
09/20/2018 - 08/07/2020
2020-08-07 14:04:41 -07:00
Dustin Carlino
00e8b8a8c2 work around ballard map crashing from tiny border. i tried valiantly to
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
2020-08-04 15:25:49 -07:00
Dustin Carlino
bcbf229eb7 rip out all users of the old find_closest_lane for #176.
- this gives offside support to bus/sidewalk matching, getting 11 more
  routes working in krakow
2020-08-03 17:56:58 -07:00
Dustin Carlino
f73516d183 start representing bus spawn rates explicitly 2020-08-03 13:12:02 -07:00
Dustin Carlino
fa0a73053b spawn cars a little farther along borders, to avoid a rendering crash 2020-08-03 11:24:53 -07:00
Dustin Carlino
940d2265c0 spawning buses at 0.01m on a non-border lane can break, because other cars approach, and the buffer distance gets broken. instead, spawn the buses a few lanes away, if needed. fixes #260
now only ~400 agents left in lakeslice by end!
2020-08-03 11:08:21 -07:00
Dustin Carlino
bea6e2edf2 snap bus stop driving positions at least 0.1m away from the start of the
lane, to handle buses spawning at the start

not regenerating everything yet
2020-08-03 09:04:16 -07:00
Dustin Carlino
3cd28cb44f fix buses not starting at a border. they were skipping the first stop, that's why there were so many stranded agents in lakeslice. still some buses failing to spawn, causing some more stranded 2020-08-01 18:53:40 -07:00
Dustin Carlino
c31d876f61 oh no, the new biking_connection is crashing in a few maps, where some of the separated bike trails are still missing. gracefully degrade. this is getting convoluted again, filed #258 to cleanup. 2020-08-01 10:26:44 -07:00
Dustin Carlino
2f76c7ac12 powered by a clear head and fresh blackberries, fix #64 2020-07-31 19:58:44 -07:00
Dustin Carlino
f7df49f512 fix a rendering bug with shifting cars for parking. ALMOST handle parking lane on opposite side of a driving lane, but there's a crash i cant understand, so disabled. #64 2020-07-31 17:39:04 -07:00
Dustin Carlino
ae31739dea almost support off-side parking lanes. only remaining bug is cars
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
2020-07-31 16:23:58 -07:00
Dustin Carlino
d7968713fc don't need to explicitly store parking blackhole redirect, just a bit.
and have a separate bit for bikes. use that to handle bikes going to
borders. finally closes #221, progress on #176.
2020-07-31 15:43:15 -07:00
Dustin Carlino
5c506f726c total overhaul to building<->bike connections for #221 and #176. bikes
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)
2020-07-31 14:28:40 -07:00
Dustin Carlino
d22aa87139 rearrange Building internals for #176. edits can affect building
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)
2020-07-31 12:49:33 -07:00
Dustin Carlino
03796fcd66 introduce the tiny walkable shoulder lane type. pathfinding penalty,
rendering adjustments. #176

the SharedSidewalkCorner geometry looks bad, but acceptable for now.
2020-07-30 13:42:36 -07:00
Dustin Carlino
edb1cb87cd Make all vehicles, including buses, start with ~0 length when spawning
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.
2020-07-28 11:39:57 -07:00
Dustin Carlino
6a11a13d36 fix the remainder?! of pathfinding bugs for #190. have to make sure the
candidate route has the stops in the correct order. now people correctly
ride a bus off-map!

regen everything now!
2020-07-27 12:36:46 -07:00
Dustin Carlino
74bf6e0974 get riding off-map to work for #190.
- 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.
2020-07-27 10:37:21 -07:00
Dustin Carlino
2239059961 UI fixes discovered during riding buses off-map
- 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
2020-07-27 08:19:14 -07:00
Dustin Carlino
e79e186784 ALMOST make people ride the bus off-map, for #190. the pathfinding
gymnastics isn't quite right. still want to commit this though, with it
disabled.

found a few bugs along the way...
2020-07-27 07:54:33 -07:00
Dustin Carlino
f056080106 fix area under curve on jump-to-time when active agents isnt 0 at end of day. also... fail loudly when we make it to the end of the day and too many active agents are left. at some point lakeslice broke and I didnt notice. :( ... but actually it's just a crowd of people waiting on a bus that isnt managing to spawn. 2020-07-26 22:50:45 -07:00
Dustin Carlino
a4e09ca91f add border stop/start to route info panel. move the route drawing there, stop being a weird layer. 2020-07-26 13:13:48 -07:00
Dustin Carlino
adbbc8764a much smarter opportunistic lane-changing. almost got #217. but we don't
do opportunistic LCing when approaching an uber-turn, so we need to use
these costs when building the CH also...
2020-07-23 12:39:00 -07:00
Dustin Carlino
9757750bfa gather penalties based on sim state too. #217 2020-07-23 10:58:25 -07:00
Dustin Carlino
328cbcd1f1 stop melting my laptop when generating scenarios 2020-07-23 09:15:25 -07:00
Dustin Carlino
56a892f789 improve error for parking seeding. closes #224 2020-07-22 12:19:18 -07:00
Dustin Carlino
d2e8dc95d1 split the new traffic generation code out into its own file. it'll make
iterating on #227 easier
2020-07-22 11:20:48 -07:00
Dustin Carlino
38b8557c82 bring in living streets from OSM, interpreting them as normal roads with
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.
2020-07-21 17:18:56 -07:00
Dustin Carlino
435b4ce8fb track passengers boarding/alighting. further rearrange stop/bus/route
info panels
2020-07-21 08:55:07 -07:00
Dustin Carlino
28d0469d10 filter out random border no-op trips. they crash poor berlin 2020-07-20 16:16:01 -07:00
Dustin Carlino
9be94f9a70 don't spawn bikes on tiny lanes, it causes queue spillover 2020-07-20 10:38:56 -07:00
Dustin Carlino
042145ef1b start cleaning up bus info panels. the delay between stop measurement has never been clear, and i'm not sure if it's what we even want to measure. and use route shortname in titles. 2020-07-20 09:14:41 -07:00
Dustin Carlino
ec9ba28891 stop using simsearch for matching road names. it has odd behavior when the query is just a few charactes, and it often has the wrong results after typing most of a name. just use simple string containment for now. 2020-07-20 08:36:32 -07:00
Mateusz Konieczny
66287ccda6
further work on #154 - better trip generator (#211)
* 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
2020-07-20 08:26:16 -07:00
Dustin Carlino
a837c79500 better errors when failing to spawn. it's either the starting lane is
too small for the vehicle, or there's no appropriate lane type at the
border. closes #206
2020-07-19 13:33:36 -07:00
Dustin Carlino
68d3c5b340 intersection delay is broken down by agent type, not trip mode 2020-07-19 13:22:08 -07:00
Dustin Carlino
233b662bfa actually count transit passengers in throughput analytics 2020-07-19 13:10:24 -07:00
Mateusz Konieczny
3c9bb0f706
add transit traffic for #154 (#207)
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
2020-07-19 12:36:39 -07:00
Dustin Carlino
523eb690f5 refactor tripinfo struct 2020-07-18 07:46:58 -07:00
Dustin Carlino
6d27547b6a prep for hackathon. make the block map a sandbox dashboard, work off of a live sim. [rebuild] 2020-07-18 07:22:18 -07:00
Dustin Carlino
db00c18536 use AgentType, not TripMode, in throughput 2020-07-17 16:39:16 -07:00
Dustin Carlino
c08fd4ae7e UsingBike trips always start at a building 2020-07-17 15:56:58 -07:00
Dustin Carlino
e06faa3c33 make an AgentType enum, stop abusing TripMode. a small first step,
showing agent meters properly
2020-07-17 15:13:36 -07:00
Dustin Carlino
a86fb5c73d upgrade to rust 1.45 after fixing an issue in fastpaths [rebuild] 2020-07-17 12:54:14 -07:00
Dustin Carlino
82dd1fd01a spawn a new bus for every route every hour 2020-07-16 11:58:09 -07:00
Dustin Carlino
8a70e105e8 make buses actually start/end at borders [rebuild] 2020-07-16 10:11:43 -07:00
Dustin Carlino
d15a842e43 Revert "new rust version. finally strip_prefix is available!"
This reverts commit d16ac9713a.

I'm seeing mysterious brokenness with fast_paths:
https://github.com/easbar/fast_paths/issues/20
Reverting so I can get work done
2020-07-16 08:59:16 -07:00
Dustin Carlino
d16ac9713a new rust version. finally strip_prefix is available!
include berlin and krakow by default in the release, since they're small
and it'll make some collaboration easier [rebuild]
2020-07-16 08:41:28 -07:00
Dustin Carlino
acc82b4f06 dont crash on info panels after buses are done 2020-07-15 16:39:27 -07:00
Dustin Carlino
ff8a62c9e2 retry spawning buses 2020-07-15 15:41:20 -07:00
Dustin Carlino
891a1746d6 try to figure out border endpts for routes for #190. just visualize
them, dont enforce connectivity yet. so many problems...

regenerate stuff, to unbreak map binary format
2020-07-15 15:35:57 -07:00
Dustin Carlino
91a9a9a1bc start revamping bus route data model for #190. routes are one-way. make
buses appear at the first stop and vanish at the last.

not regenerating anything yet
2020-07-15 13:15:32 -07:00
Dustin Carlino
ccf0b2f647 improve car/bike zordering when crossing z levels 2020-07-15 10:04:47 -07:00
Dustin Carlino
5806e60eec represent cancelled trips differently than aborted trips 2020-07-15 09:11:01 -07:00
Dustin Carlino
eeb70030c2 clean up old experiments from the intersection geometry code.
imperceptible changes to some (already broken) intersections.

also grab fresh osm and a new traffic signal
2020-07-14 17:41:56 -07:00
Dustin Carlino
614354271a see modified trips in the table and info panels 2020-07-14 16:10:50 -07:00
Dustin Carlino
7341c0189a plumb through which trips (and people) are affected by an experiment. no
UI exposure yet.
2020-07-14 14:49:04 -07:00
Dustin Carlino
7cd0c77068 plot scheduled arrival rate at borders. downtown is crazy. 2020-07-14 12:57:58 -07:00
Dustin Carlino
d31ead5788 clearly show cars just cruising around trying to park, so it's
abundantly clear when parking availability is squeezed. need to change
the minimap legend now.
2020-07-14 09:33:10 -07:00
Mateusz Konieczny
6b337c10ec
drop unneded todo (#194) 2020-07-14 07:42:36 -07:00
Dustin Carlino
f76b40b8f7 remove old hacks that disabled different checks on certain intersections. new progress fixes the gridlock in a more general way 2020-07-13 15:33:32 -07:00
Dustin Carlino
46789847a7 offstreet parking blocks the road for less time. seeing unrealistic
gridlock near the huge parking lots downtown from this

and fix a bug with spawning bike trips. never OK to silently not
schedule a trip, because it breaks the schedule continuity
2020-07-13 15:17:14 -07:00
Dustin Carlino
b68e233125 trying to handle gridlock near tiny roads for #114. treat the entire
sequence as one thing to lock -- don't start it until it's clear, and
prevent new conflicting turns once started. disable block-the-box
protection inside.

I'm not sure this is helping at all yet. maybe it's just more complex.
2020-07-13 12:30:24 -07:00
Dustin Carlino
b058d5d926 cargo fmt and regenerate map data 2020-07-13 10:11:48 -07:00
Mateusz Konieczny
885fdefb5d
playing with processing modifications (#183)
* WIP set up plumbing for calculating building info in the Raw layer and using it later for #154

* WIP playing with processing modifications

* experiment with some possibilities for tag processing

* fix an embarassing typo

* enable busses in work-home traffic

* refactor, add multiuse

* seed more parking in Kraków

* parse integers properly - thanks for a help!

* rebalance generated trips

* add hack providing some background traffic

more realistic traffic

even mess realistic people

* attempt to further reduce parking deficit

* add TODO

Co-authored-by: Dustin Carlino <dabreegster@gmail.com>
2020-07-13 09:56:05 -07:00
Dustin Carlino
35a63af590 don't lane-change unnecessarily 2020-07-12 10:42:28 -07:00
Dustin Carlino
faedffae99 finally flushed out one of the common crashes: shifting some car bodies
to make wheels breaks sometimes. just skip the wheels.
2020-07-11 17:10:36 -07:00
Dustin Carlino
07ed1fec95 more polyline work... get rid of Warn<>. extremely spammy and hasn't
been helpful in ages.
2020-07-11 15:17:16 -07:00
Dustin Carlino
f8b8c501ae tighten up more PL scariness 2020-07-11 14:51:25 -07:00
Dustin Carlino
cce624edd8 start the big one: Polyline::new 2020-07-11 13:42:19 -07:00
Dustin Carlino
0593aa52d9 more caution in Line API 2020-07-11 13:05:34 -07:00
Dustin Carlino
98c6f46c78 the first real big change: Line::new always returns Option 2020-07-11 12:37:38 -07:00
Dustin Carlino
4919fbf90f autodetect ICs across the whole map, not just when there are complex
turn restrictions

and... enable the new "run the red light" after starting an uber-turn. I
can get to 6am on downtown with a few simple edits now.
2020-07-10 17:39:25 -07:00
Dustin Carlino
7ab78d543a ignore red lights in the middle of an uber-turn. currently disabled
until a few more things are in place, but this is headed in the right
direction. [rebuild]
2020-07-10 16:03:22 -07:00
Dustin Carlino
4c8ad5a8da determine if a vehicle is currently performing an uber-turn, without
modifying the low-level PathSteps. also make sure to not try LCing when
going into one.

on the cusp of being able to treat complicated intersections as one...
2020-07-10 12:40:51 -07:00
Dustin Carlino
98ca2341c8 adjust params on the people generator for #154 2020-07-09 13:48:49 -07:00
Dustin Carlino
ead4a99682 prototype a better random traffic generator 2020-07-09 13:04:41 -07:00
Dustin Carlino
4340ad585b convert the rest of usize IDs to u32. savings:
maps: 645mb -> 625mb
scenarios: 431mb -> 390mb (before all the u32 optimizations, this as
500mb!!!)
prebaked: 80mb -> 73mb

and while I'm at it, grab fresh OSM, with lots of manual lane fixes,
especially near divided highways
2020-07-09 11:43:34 -07:00
Dustin Carlino
a2623bfd6a wait wait, the light rail cars are way longer. wiki says one car is about 30m, so using double cars for now 2020-07-08 14:38:03 -07:00
Dustin Carlino
7c0aaed370 the first link light rail has left the staton. #numtot 2020-07-08 14:29:02 -07:00
Dustin Carlino
14010e3be2 transform trip mode, filtering on existing mode and departure time range 2020-07-08 10:46:23 -07:00
Dustin Carlino
9f72b3dd51 cleanup after the relative dir fix, and add support for hardcoding the
data dir, for #137
2020-07-07 12:14:02 -07:00
Dustin Carlino
6919c24bf8 detect the data/ dir more intelligently. fixes #73. still need to
- consider collapsing the directory structure in the releases
- fix wasm

[rebuild]
2020-07-07 11:09:35 -07:00
Dustin Carlino
d52a0e8a35 new scenario mod: force everyone to make a mode change 2020-07-06 16:29:51 -07:00
Dustin Carlino
d987879389 gracefully handle editing the currently active traffic signal phase live in the challenge mode 2020-07-05 14:18:00 -07:00
Dustin Carlino
5427d8ea40 also express lane type changes using the new approach 2020-07-05 14:04:49 -07:00
Dustin Carlino
6e8eef8d09 start refactoring how edits are validated. need to deal with lane types
next
2020-07-05 13:20:19 -07:00
Dustin Carlino
505311a93f improve the signal synchronization a bit for #8. hardcode a few small
intersections to make the downtown map make more progress. make it
easier to copy OSM node IDs.
2020-07-04 08:53:13 -07:00
Dustin Carlino
2c7440b03f start representing access restrictions by mode 2020-06-30 13:15:57 -07:00
Dustin Carlino
2b50e7969c refactor position 2020-06-29 20:55:36 -07:00
Dustin Carlino
c97bd0fe4b some cleanup after #106. unbreak importer 2020-06-28 11:13:35 -07:00
phimuemue
a675e72d25
Avoid collect et al (#106)
* Avoid unconditional collect in get_lane_types

* Introduce Road::children(fwds)

Simplifies direction-aware lane retrieval.

* Simplify all_lanes

* Avoid unneeded collect

* Avoid some Vec copying

* Avoid unconditional collect

* Avoid some collect

* Avoid clone

* Avoid collect

* Avoid collect

* Avoid collect

* Avoid collect

* Avoid collect

* Avoid collect

Co-authored-by: Dustin Carlino <dabreegster@gmail.com>
2020-06-28 11:00:09 -07:00
Dustin Carlino
bb3da1f8eb Make a very primitive form of adaptive traffic signal phases. It should
be easier to write better policies now; this mostly does the work of
changing the map model and UI to handle variable timing. A small step
towards #91
2020-06-28 10:20:47 -07:00
Dustin Carlino
a6b90d00d8 very simple modifier to cancel all trips for some percentage of people 2020-06-27 14:20:25 -07:00
Dustin Carlino
90b556ac1f carve out a way to modify the weekday scenario in the UI. express the 5 day repeat using this 2020-06-27 11:56:45 -07:00
Dustin Carlino
b3a480b4c1 clean up old trip positions from Sim. implement the all-route debugger
in a more straightforward way
2020-06-25 09:20:54 -07:00
Dustin Carlino
bc6482c522 include camera state and edits in the crash report. would make it easier to repro #98 and #72 2020-06-25 09:02:50 -07:00
Dustin Carlino
2630fabf83 link to fixed windows build, and make a few small adjustments 2020-06-23 12:57:06 -07:00
Dustin Carlino
f5385b83df restore raw throughput counts deleted in
ca33695431, flagged off, for further
exploration of compressed representations. also, apparently lakeslice
prebaked results have been missing for a while due to dropbox snafu! fix
2020-06-19 11:04:07 -07:00
Dustin Carlino
bc8f352600 when people are riding a bus, map them to the bus instead of just crashing 2020-06-18 11:23:09 -07:00
Dustin Carlino
26cdde056c fix throughput and delay max_x and disable comparison by default 2020-06-17 15:05:31 -07:00
Dustin Carlino
d437152be4 add an intro story cutscene to motivate the whole game [rebuild] 2020-06-13 20:44:46 -07:00
Dustin Carlino
42ea64a680 changing parking seeding to fill in private spots first. makes progress
in larger maps. i made sure the optimize challenge is still interesting
after this change.
2020-06-13 15:14:23 -07:00
Dustin Carlino
c20a8ea36b tuning plot appearance: labels, grid, titles, bg and outline 2020-06-12 12:12:01 -07:00
Dustin Carlino
14c7518787 break down delay by agent 2020-06-12 11:37:12 -07:00
Dustin Carlino
be3b93625d dont compute pathfinding upfront by default. [rebuild] 2020-06-11 12:20:51 -07:00
Dustin Carlino
0cff318d0a start a layer to compare delay. needs work. 2020-06-10 11:04:48 -07:00
Dustin Carlino
a96b77ba3f more granular profiling 2020-06-09 18:56:33 -07:00
Dustin Carlino
cb829558b4 adjust jump-to-time UI 2020-06-09 15:58:52 -07:00
Dustin Carlino
287d56efd9 generalizing the old gridlock checker. removing unused savestate_every
support. reimpl it later using the callbacks if needed.
2020-06-09 14:29:35 -07:00
Dustin Carlino
2445bddeb9 prepping to work on sim step 2020-06-09 12:39:31 -07:00
Dustin Carlino
fafcf57240 make most offstreet spots private 2020-06-06 18:37:20 -07:00
Dustin Carlino
b15664727d flesh out info panels for parking lots 2020-06-06 14:23:47 -07:00
Dustin Carlino
65b500509e make peds use front paths for parking lots too 2020-06-06 14:04:09 -07:00
Dustin Carlino
a643f039ad most of the sim changes to use parking lots! need to work on pedestrians
using the front paths
2020-06-06 13:42:39 -07:00
Dustin Carlino
6482772b73 lots of bug fixes in spawner involving borders, invalidating paths when
changing modes
2020-06-03 13:37:34 -07:00
Dustin Carlino
aceadef79f refactoring some trip spawning stuff from importer, using it in the new agent spawner too 2020-06-01 17:37:54 -07:00
Dustin Carlino
855d8f4d22 update glutin, winit, glium now that a fix for linux startup time is upstreamed in glutin. and a few other packages too. ditch geo-offset dependency, since it uses old versions and isn't being used yet 2020-06-01 09:18:17 -07:00
Dustin Carlino
b7790dca40 start doing screenshot diff tests for udistrict and downtown too 2020-05-29 08:00:59 -07:00
Dustin Carlino
95efd40053 new osm with lots of parking fixes and a vital new turn restriction.
23rd now finishes!
2020-05-20 10:54:22 -07:00
Dustin Carlino
ddf6de5f59 stop dependending directly on serde_derive 2020-05-19 15:06:32 -07:00
Dustin Carlino
d257535a7c grab new OSM, try to get mt baker running. rainier is just a mess. 2020-05-16 17:32:01 -07:00
Dustin Carlino
1c3073d0e2 work on getting the udistrict to run better. add options to handle
outliers in the heatmap
2020-05-15 16:46:12 -07:00
Dustin Carlino
ca33695431 get rid of raw thruput_stats. in-game throughput plots are a little
different now, but everything's still usable, and this takes us down
from 342MB + 39MB to 74MB + 11MB for prebaked data! include lakeslice
prebaked results in releases now [rebuild]
2020-05-15 15:07:42 -07:00
Dustin Carlino
a0a7cb1c4e start cleaing up thruput stats. remove the ability to change window size 2020-05-15 14:25:10 -07:00
Dustin Carlino
95a0f2f620 working on west seattle 2020-05-14 12:03:19 -07:00
Dustin Carlino
f6bd936c53 grab fresh osm. also keep some intermediate files, to make some binary
format changes less of a disruption
2020-05-13 22:55:05 -07:00
Dustin Carlino
dbf4b15959 start to figure out where to compress Analytics [rebuild] 2020-05-10 16:08:45 -07:00
Dustin Carlino
5ae94168f6 fix mt baker a little, at least get the north half of i90 included. lots
of jams along rainier.
2020-05-10 15:49:24 -07:00
Dustin Carlino
82876647b2 record throughput for border intersections too 2020-05-10 15:03:20 -07:00
Dustin Carlino
182f5139a5 rip out old mapfixes code. pure OSM is more maintainable. keep map_editor for drawing synthetic maps and debugging raw maps 2020-05-10 10:39:08 -07:00
Dustin Carlino
86f01f2736 starting to export edits in a longer-lasting format. getting some
round-trip code set up, not handling stop signs or lane edits yet
2020-05-06 11:45:42 -07:00
Dustin Carlino
6696049b09 note in trip panel when a path isnt possible anymore 2020-05-06 09:54:58 -07:00
Dustin Carlino
e1c827ed24 adjust signal timing and workaround an intersection with unrealistically
large geometry, and... lakeslice runs!
2020-05-05 20:29:50 -07:00
Dustin Carlino
ed5b35ffd9 differential throughput layer. what routing diversions are happening? 2020-05-05 11:55:30 -07:00
Dustin Carlino
6877189da7 actually, allow disconnecting some parking via edits 2020-05-04 15:33:18 -07:00
Dustin Carlino
1f10882dbc new layer to show backpressure 2020-05-02 17:08:00 -07:00
Dustin Carlino
02c5b6617b dismantle importing for neighborhoods. long unused. just retain a simple
osmosis polygon editor.
2020-05-01 14:11:41 -07:00
Dustin Carlino
270c7d0712 just small cleanups. taking a break from gridlock / map quality for a while. 2020-05-01 11:50:35 -07:00
Dustin Carlino
01bd4aec6f clean up some fallout from the grand data refreshening. mostly
robustifying tutorials/challenges by using IDs stable across map updates
2020-05-01 10:54:43 -07:00
Dustin Carlino
5d8d8805a8 unstick my favorite intersection (and a few roundabouts) 2020-04-30 13:49:14 -07:00
Dustin Carlino
7a0b9cd09a squeeze a little performance by using entry API in scheduler 2020-04-30 11:24:57 -07:00
Dustin Carlino
1814857319 park closer to buildings 2020-04-30 10:36:58 -07:00
Dustin Carlino
e1a40e0b97 make a variant of the trip table that shows parking overhead 2020-04-30 09:36:57 -07:00
Dustin Carlino
2570db2501 update some lights and allow a little more box-blocking. making it to
5pm on lakeslice, no regressions elsewhere. officially cutover to
nofixes version of 23rd
2020-04-29 17:20:33 -07:00
Dustin Carlino
71ab388b47 for laggy heads, dynamically expand the blocked_by graph with the next car in the queue
and fix a bug where agents disappearing in a border didn't clean up
blocked_by immediately
2020-04-29 16:40:28 -07:00
Dustin Carlino
50ab88d3bb woops, when a cycle is detected, sometimes two cars start going. 23rd
without fixes NOW COMPLETES :O
2020-04-29 15:27:02 -07:00
Dustin Carlino
4634205448 make the turn-conflict detector factor in blockages due to agents at the
front of an at-capacity queue
2020-04-29 14:49:31 -07:00
Dustin Carlino
c0b5ead639 display the blocked_by graph in debug mode 2020-04-29 12:34:09 -07:00
Dustin Carlino
787d5f13d3 only consider cars in the blocked_by graph. pedestrians can't get stuck in a turn. they're nimble. 2020-04-29 11:47:01 -07:00
Dustin Carlino
1ff1414cd5 reorganize intersection code to plumb less 2020-04-29 11:29:35 -07:00
Dustin Carlino
a2533244a4 temporarily? hardcode some exceptions to dont-block-the-box to make some
progress on 23rd

and tiny little cleanups
2020-04-29 11:14:53 -07:00
Dustin Carlino
a311750493 remove code for the extremely defunct a/b test mode. just a refactoring burden at this point. 2020-04-27 20:54:25 -07:00
Dustin Carlino
077035aacb better offstreet parking rendering: don't jitter the parking icon, face
the correct direction unparking, make the driveway line extend from the
sidewalk line
2020-04-27 17:29:20 -07:00
Dustin Carlino
fe84b81e85 trip table: another sortable column, filter by type, pagination 2020-04-27 14:40:56 -07:00
Dustin Carlino
e2cbb7a3e4 enable the new gridlock cycle breaker by default; it's helping immensely and doesnt seem to have problems 2020-04-27 11:18:36 -07:00
Dustin Carlino
77918358f1 restore the commute challenges [rebuild] 2020-04-26 14:05:00 -07:00
Dustin Carlino
193ff2344a require a particular directed road for spawning from borders 2020-04-26 12:35:07 -07:00
Dustin Carlino
0eaf33ff46 stop generating RNGs from entropy. use the prebaked seed by default. allow explicitly changing the rng, but no use for that yet 2020-04-26 11:38:32 -07:00
Dustin Carlino
3f48b4bf22 simplify stuff in analytics, removing a major bottleneck in the everyone_weekday scenario 2020-04-25 21:42:29 -07:00
Dustin Carlino
1ecea0a88f delete old code for scoring things in currently inactive challenge
modes. counting ongoing trips is complicated from a player perspective
and also expensive in analytics. has the nice side-effect of forcing me
to make one of the tutorial levels more robust
2020-04-25 21:29:48 -07:00
Dustin Carlino
275d1f846b make remote trips work properly. plumb through events for them. 2020-04-25 16:47:32 -07:00
Dustin Carlino
725e9e4532 generate a scenario purely with off-map trips. problems running it, but
good start.
2020-04-25 15:18:27 -07:00
Dustin Carlino
2c774224ce ahhh the free offstreet spots were not being generated at ALL correctly 2020-04-25 12:54:51 -07:00
Dustin Carlino
2b0a1c2447 parked cars and info panels: center on them, be explicit about being
parked inside, list owned vehicles better, say how many spots are free
2020-04-25 12:15:49 -07:00
Dustin Carlino
3ee2c91a10 plumb OffMapLocation through events 2020-04-24 23:07:13 -07:00
Dustin Carlino
34c61ce007 plumb OffMapLocation a little further into the sim. give the player a
little info about off-map locations.
2020-04-24 22:41:51 -07:00
Dustin Carlino
dd1c9f936d plumb through exact off-map locations from popdat->scenario 2020-04-24 22:05:33 -07:00
Dustin Carlino
55e0d2a364 overhauling offstreet parking model:
- almost all buildings can have a few spots
- render things a little differently
- increase paranoia of buildings that can have driveways, to avoid many
complicated simulation issues
2020-04-24 12:50:22 -07:00
Dustin Carlino
855bba7cc8 more alert locations. use to easily jump to cars entering/exiting
parking inside buildings.
2020-04-23 20:23:39 -07:00
Dustin Carlino
597ee6c47e use Event::Alert instead of random println's, and make better controls for handling these 2020-04-23 16:09:32 -07:00
Dustin Carlino
cce4fbe80d do a little more cleanup when trips are aborted 2020-04-23 14:27:25 -07:00
Dustin Carlino
a25751ea43 add more sanity checks for schedules, because every other map is
crashing

and fix the problem -- SpawnTrip -> TripSpec MUST succeed. auto-abort
some trips, to still warp the person to the right spot.
2020-04-23 13:20:25 -07:00
Dustin Carlino
6594de3000 remove a hack from multi-day trips and stumble upon the people needing
10 cars

also prebake data again
2020-04-23 12:37:21 -07:00
Dustin Carlino
6e31eb76e4 one person might need multiple cars. urgh.
marathon of a change. it... seems correct.
2020-04-23 11:50:06 -07:00
Dustin Carlino
51dbc90ae7 prevent a race with two trips starting. temporarily patch around the
doppel-car problem in a consistent way
2020-04-22 21:50:08 -07:00
Dustin Carlino
11d106e26a associate vehicles with people, not trips 2020-04-22 19:57:25 -07:00
Dustin Carlino
e1d34558b7 associate ped speed with people, not trips. remove redundant gunk from
some of the triplegs and specs and such
2020-04-22 18:53:13 -07:00
Dustin Carlino
9c4798a694 enforce person-continuity in pandemic sim 2020-04-22 16:52:23 -07:00
Dustin Carlino
36ed6395e6 some fixes for interactively spawned agents. merge back into master!!! 2020-04-22 16:34:26 -07:00
Dustin Carlino
c4c61cf7d9 recording and communicating delayed starts 2020-04-22 16:16:17 -07:00
Dustin Carlino
cb053baf49 remove the unused code to cancel future trips. need to think through exactly how this should work. 2020-04-22 15:32:16 -07:00
Dustin Carlino
0657469b4a warp the car to the destination for aborted trips 2020-04-22 15:25:38 -07:00
Dustin Carlino
6ef3a180a3 start to simplify the dynamic nabbing of parked cars 2020-04-22 14:39:02 -07:00
Dustin Carlino
1dcdec0a43 when a trip is aborted, warp the person to their destination. get rid of the concept of Limbo.
except for aborted trips (which warp the person to their destination),
people now have continuity! </end breakage>
2020-04-22 13:27:33 -07:00
Dustin Carlino
00c8d65b60 dont start trips if the person isnt finished with the last trip. start
the delayed trip as soon as the person is freed up.
2020-04-22 12:13:10 -07:00
Dustin Carlino
ede4c682f4 adding a new layer of indirection to defer spawning peds/cars, and
instead just start trips
2020-04-22 11:34:32 -07:00
Dustin Carlino
2a98f4ea27 Person now has a fixed pedestrian, car, and bike ID. <start massive breakage> 2020-04-22 09:43:03 -07:00
Dustin Carlino
22a83184fb spawner asks for agent IDs from trips, instead of computing itself 2020-04-22 08:47:59 -07:00
Dustin Carlino
7ac8c00c5d trivial cleanup: UsingParkedCar is unused 2020-04-22 08:23:43 -07:00
Dustin Carlino
1d8ee5f2a5 slightly improve the blocked_by internals 2020-04-21 16:15:08 -07:00
Dustin Carlino
90b2ce9b1f trim last steps of a laggy head. don't insist on all-or-nothing. makes
progress towards eliminating bad gridlock
2020-04-21 15:06:38 -07:00
Dustin Carlino
c7e14a78fc delete the clear_laggy_head_early experiment. i think i understand the real problem, and this makes the next change harder. 2020-04-21 13:42:09 -07:00
Dustin Carlino
ca03d92a01 improve the gridlock buster. get rid of false positives from failing to
dedupe requests, and only trigger for cycles involving the original
agent
2020-04-21 13:29:39 -07:00
Dustin Carlino
067cc5b307 plumb through alerts from the sim that pause the UI, use for gridlock 2020-04-21 12:17:01 -07:00
Dustin Carlino
09e9e52042 starting an idea to allow conflicting turns when there's a cycle. bad
implementation and not working yet, but flagged off
2020-04-21 11:32:22 -07:00
Dustin Carlino
a39d19f36a remove the tiny fraction of people with non-continuous schedules from
the PSRC scenarios
2020-04-20 17:55:26 -07:00
Dustin Carlino
0574d4316c add some stuff to match people in scenarios with the raw input 2020-04-20 16:52:54 -07:00
Dustin Carlino
8b975f5083 validation was wrong, and also panicking is bad right now 2020-04-20 16:12:09 -07:00
Dustin Carlino
c89a4c6bb9 validate scenarios are continuous. they... aren't, so disable the
validation. :P
2020-04-20 15:32:31 -07:00
Dustin Carlino
40eed3f116 show parking utilization of a single lane over time 2020-04-20 11:30:19 -07:00
Dustin Carlino
50cca5ce5e when clicking on a building, show the "closest" parking spot 2020-04-20 10:51:18 -07:00
Dustin Carlino
5cf0b72bac avoid a few crashes, mostly involving trips that were aborted in the
baseline
2020-04-19 12:40:21 -07:00
Dustin Carlino
d80513235d defer choosing a starting lane for borders in scenarios, to respond to lane edits 2020-04-19 10:51:23 -07:00
Dustin Carlino
6c75a67050 draw some arrows [rebuild] 2020-04-16 19:31:50 -07:00
Dustin Carlino
14b38f917e add a link from person->their parked car, and show the percentage of
population with a car
2020-04-16 13:19:17 -07:00