Friday, June 29, 2007

Tour de Fairport Harbor 2007

So, in catching up on my blog posts, here's an update on the Tour de Fairport Harbor, 2007.

Basic "Every Street" rules can be found here

Fairport Harbor specific rules can be found here.

When thinking about this post, there's actually not a whole lot to say. My step-dad and I went out last Tuesday (June 19, 2007) to tour. Having already thought about the mechanics of the route, I had arrived with a route already in hand.

Tuesday morning we set out a little after 7 a.m. and then we rode the ride and that was... about it?

Our route ended up being 17.26 miles and the world record time is 1 hour, 38 minutes and 35 seconds. I think that it could probably be beaten - we weren't really cycling competitively - more just for fun and exercise. Plus my dad was doing silly things like stopping at stop-signs :-).

It was a nice way to see the town and see some of the sights

Thursday, June 28, 2007

Tour de Fairport Harbor ground rules

Ground rules for the Tour de Fairport Harbor, Ohio.

1. All rules as laid out in the basic ground rules must be followed:

2. The borders of Fairport Harbor are as follows:

  • Lake Erie to the north

  • Grand River to the west, south and east (you must cross the river on OH-535 to the south and St. Clair St to the east

  • East St to the east

  • OH-535 to the east must be travelled to the city limits sign

3. Special cases

  • Water St - You must travel north to the end of the street with the port authority building

  • High St / Huntington Beach Dr - You must travel north to the guard shack admitting people into the park. You must travel on both sides of the "V" to the west of the guard shack as well as around the complete circle to the north of the shack.

  • Houghton Ct - You must travel until the parking lot at the back (north) of the buildings
  • House Ct - You must travel the entire street

  • Prospect St (section off Vine St) - You must travel around the bend to the east - no need to travel down the foot path that goes down the hill to the west of Vine St

  • Prospect St (section off East St) - You must travel around the bend until the Marina welcome sign.

  • 2nd St - You must travel until the road dead-ends into the parking lot for an apartment-type building

  • 3rd St - You must travel until the road splits into straight-ahead into the industrial building and off to the left into the condos.

  • 4th St - You must travel into the section west of High St

  • OH-535 - You must go eastbound until the city limits sign

  • St. Clair St and OH-535 - You must cross the river

  • OH-535 and High St - You must travel around all 3 sides of the triangle intersection between these 2 streets.

  • Villa East Dr and Harbor Ridge Ln - You may travel between these streets by going around the chain barrier.

4. These streets are specifically not included

  • Windjammer Ct

  • Any pedestrian paths to the lake

  • The driveway / roadway east of the guard shack at the Lakefront Park.
  • The walkways inside Huntington Park

  • Pincus Ct

5. One-way streets:

  • Marine St - must be travelled northbound

  • King St - must be travelled eastbound

  • Paradise Alley / Paradise Ct - must be travelled eastbound

  • 2nd St between High St and Water St - must be travelled westbound

  • South St - On various online maps, this appears to be one-way westbound. But "on the ground" there were no markers to indicate as such. This was where one of the local schools was, so (since I'm not local) I don't know if this was a one-way thing only when school is in session? If so, the one-wayness must be observed. If there continue to be no markings when you attempt the record, you may travel it in either direction.

Tour de Madeira ground rules 2.0

Okay, as an update to the first draft and as a companion to the basic ground rules, here are the ground rules for Tour de Madeira 2.0

1. Rather than listing off every street, I will list out the various border streets and special cases. Where a specific side of the road is mentioned, the route must include riding / walking on that (Madeira) side of the street. Where the city border does not occur at an intersection of two streets, you must ride / walk past the Madeira city sign posted on that road before turning around. Any streets within these borders that are not specifically excluded must be visited

  • Montgomery Road (from Hosbrook to Galbraith - SE side)

  • Galbraith Road (from Montgomery to east of Miami - south side)

  • Miami road (north of Galbraith - west side)

  • Camargo road (both sides - from west of Blome to Madisonville)

  • Shawnee Run road (from east of Madeira Hills Dr - north side)

  • Kenwood Road (from south of Kenwood Hills to Euclid - both sides)

  • Euclid Avenue (from Ken Arbre to Hosbrook - south side; east of Hosbrook - both sides)

  • Ken Arbre Avenue (from Euclid to Stewart - south side)

  • Stewart Avenue (from Woodsway Dr to Ken Arbre - east side)

2. Special Cases - for some streets, it is unclear what actually consists of a "road". Or some roadways are definitely roads, but it's unclear where the border is between road and driveway. Some clarification for those cases.

  • Goff Terrace - From Miami to the Ferrari's parking lot

  • Railroad Ave - From Miami past Center and into the first parking lot (7805 and 7809 Railroad)

  • Dones Ave - From Camargo east of Marvin to where it splits into 2 driveways (going east to 7845 and south to 7825)

  • Marvin Ave - From Dones to Sellman Park; no need to go past the Parking Lot

  • Iuka Ave and Osceola Ave - at the south ends of both of these streets, there are triangular "median" type structures. You must travel around all three sides.

  • Paisley Lane - You must go around the corner until the road dead ends into the driveway for 6680 Paisley

  • May St - You must go all the way to 6600 and 6609

3. These streets are specifically NOT included

  • Any of the streets of the mobile home park on Dawson Road

  • Greylock Drive
  • Any "named" streets on the campuses of any of the schools

  • Shawnee Pines Drive
  • Dot Ave
  • Miami Road south of Shawnee Run road

  • "Extended" driveways, such as 6873-6929 Fox Hill Lane

  • The path through Sellman Park to Fox Chase Lane - though you are allowed to travel that if you feel that would be advantageous

  • The narrow separate pedestrian walkway at the south end of Rita Avenue. You still have to travel all of Rita, but you do not have to especially go through this walkway as you do with the medians on Iuka and Osceola

4. There are no one-way streets within the tour limits

Every Street ground rules 1.0

After the first draft, I've thought of some updates to the Tour de Madeira ground rules. While planning the T de M 2007, I thought of some areas that might need clarification. Also, after doing the Tour de Fairport Harbor, I also realized that there was a need (yes, a NEED) for a set of abstract ground rules for things that are common to all tours of this sort (like generic rules for how to handle cul-de-sacs or intersections or borders), as well as tour-specific ground rules (like a listing of streets / borders for a specific tour). So this post will contain the generic rules. Further posts will come (soon?) with Madeira rules 2.0 as well as the Fairport Harbor ground rules, and of course a report of T de FH '07.

1. The full length of every street within the tour's ground rules must be visited, but you are allowed to go outside of the tour limits if you want. Official time is from start to finish, and includes any break or rest time. You are allowed to ride or walk your bike on each street. You may travel on the sidewalk if it is convenient, but travelling on the sidewalk does not count towards completing the route. Except where specifically excluded, travelling through any part of an intersection between two streets counts as visiting the entire intersection. To count a segment of road as "completed" you only have to ride on one side of the street, though of course, you can choose to ride on both sides, if you deem it to be advantageous.

2. When going down cul-de-sacs, you must make an effort to "round the bend", but you do not have to scrape the curb. Similarly, when travelling to the end of a particular intersection, you do not have to go into the cross street to "fully" complete the street you are on, as long as a reasonable effort is made to get to the end of the street.

3. If there are any one-way streets (or one-way sections of particular streets) within the tour limits, you must travel them in the correct direction.

Friday, June 15, 2007

Tour de Fairport Harbor planning

Yes folks and loyal readers and viewers, it is another post from me, Dan Miller, your host in the crazy world of every whatever adventures. Or should that be Every Whatever adventures? After a few guest posts, we are back on the saddle. So no need to be confused about wondering why I'm going to be riding 63 buses in Houston, leaving my family and making all these plans without telling you. I don't know if anyone is sick of reading about Houston buses (I can only speak for myself in saying that I never tire of such talk) but this post is going to be bringing it back home to the Buckeye State.

Frankly, I don't know why I didn't think of this earlier. Sometime this summer we are going on vacation to the lovely 'burg of Fairport Harbor, Ohio. So recently I got the idea for TOUR DE FAIRPORT HARBOR 2007!!!! MWAHAHAHAHAHAHAH!!!!!

Okay, calming down now. FH is a pretty small town. Don't worry, further bulletins as events warrant, but I think it can be done in somewhere around 20-30 miles, maybe even less.

Because it's much smaller than Madeira, I am taking a more systematic approach. FH is mostly just in a grid layout, but it does have some wrinkles laid in. First I tried to figure out exactly where the boundaries of the village lie. This was actually a bit more complicated than I wish that it had been. I primarily used the Lake County auditor's website to try and figure it out. Using home sales as well as searches, I was able to (I think) come up with a fairly close enough boundary system. If you look at a map of Fairport Harbor, I am saying that, starting in the NW at Lake Erie and the Grand River, the border follows the Grand River south (on the east side of the river), then follows OH-535 north, with the village border continuing to follow East St. north (and also including the dead-end sections to the east of East St, such as Joughin St, York St, 3rd St, etc). I think this will be close enough to allow me to come up with a route, pending some investigation when I get there.

Some topics to research - where on OH-535 does FH start - at the river or slightly before / after? I did see that Windjammer Ct, just to the south of the river, is in Painesville Township. What about any part of N St Clair St, or any sections of OH 535 east of East St. What about Huntington Beach Drive - driveway to a park, or road? Then there's the always fun game of "Is this a road, or someone's driveway?"

So, now on to a bit of technical analysis of the problem. What we're looking for here is called an Eulerian path. That is, in technical terms, a path in a graph which visits each edge exactly once. Now we are not constrained in having to only visit each edge once, but obviously if we were able to do so, that would minimize our total distance, which IS the goal.

To find an Eulerian path through a graph (or in this case a road system), each vertex must have an even degree. Or, in other words, each intersection must have an even number of roads in it. So, 4-way intersections (or 6-ways!) are good, while T-intersections (3-way) or 5-ways are not.

I think it would be difficult to find a road system where this was the case, and Fairport Harbor is no exception. After printing out a map, I started plotting the "odd degree" vertices. To make the graph capable of containing an Eulerian path, you have to insert artificial edges between the odd degree vertices, thus making them even.

Note that for purposes of this experiment, I ignored dead-end / culdesac entries, since in those cases it is clear that you will have to do an out and back, which will turn it into even. As an example of this, take East St and Joughlin St (a dead-end st). It's currently a T-intersection (3 vertices or odd). But (barring starting or stopping the route on Joughlin), when you approach the intersection on East St. you will go out and back on Joughlin, creating a 2nd "edge" there, making it have 4 vertices or even. If this is not making sense to you, you should probably just go ahead and stop now (if you haven't already). An example of an odd vertex that we want to count is something like High St and Orchard St, or High St and King St.

So with that condition, I originally came up with 18 odd vertices. So it seemed simple that all I would have to do is connect them with 9 "extra" edges and I would have my path. But on further review, I realized that I was missing some instances where the out and backs on cul-de-sacs would throw things off. Just like doing an out and back on a cul-de-sac causes a 3-way intersection to be turned into a 4-way (and thus even and good), the out and back on a 4-way intersection causes it to be turned into a 5-way (and thus odd and bad). An example: East St and 3rd St. It's a 4-way intersection, but because you have to travel out and back on the section of 3rd st east of East St, that causes it to be a double edge and makes the vertex of East and 3rd into a 5-way.

So, when taking that into account, it comes up to 36 edges. While I'm sure it's just a coincidence that this is exactly twice the number, I'm not sure if it HAS to be an even number or not. I was trying to figure out what I would do if there was an odd number, but I'm not sure if it by definition HAS to be even or not. In any case, I just have to come up with 17 artificial edges, and the 17 that have the shortest distance, and I'll have my route. Note that it is 17 and not 18 because 2 of the odd vertices will be my starting and stopping points.

I will post later if/when I come up with a route, and of course a post for the report.

Monday, June 04, 2007

Computer Programs and the (now) 63-Bus Ride

Yes, the new METRO schedule change is out, and they split Bus 8 (South Main/Yale) into Bus 8 South Main to the south and Bus 66 Yale to the north. So now that makes 63 buses I have to ride. I had better get going on this before they change it again!

I managed to get all the bus times (post-bus 8 split) and threw them all into a database. I've been trying my hardest to use this data to my advantage to find an optimal route. In my mind, an optimal route would be one where I would have at least a 10 minute wait between buses (to avoid the late bus factor) and no more than a 30 minute wait between buses.

My first script did just that. You gave it a starting spot and how long you wanted to wait, and it spit out a route for you. You could either have it spit out the first route found or the fastest route found. The problem with this is processing speed. In order to find every bus route possible, it is a worst case of 63! calculations (63! means 63 factorial, or 63*62*61*60* ... *3*2*1). If you throw that into a calculator, it comes back with 2 X 10^82, or a 2 with 82 zeros after it. This means that even if I had a super computer that could do a billion checks a second (which is unreal speed), it would take 3 X 10^67 years to calculate a solution. So... that won't work.

My second script was to cut it down into little pieces to aid in a human-aided search. You could put in point A and point B and it would try to find the best path between them. The script works, to a point. The problem is that it usually skips over some crosstown buses that you need to get, because it would take too long to get them later. But it does very good at finding quickly the fastest path using 3-4 buses between two points. At least that's something. I also added a user-input variable for a "first bus" that you have to take, as well as an exclusion list of buses that you may not take on your trip. Another problem with the script is that there is no advanced string matching for the starting point, so if you don't spell the street name exactly like it is in the database, it won't know what you're talking about.

My next script is going to be 100% user input. I think this will be the best help in finding a good route. When you give it a starting point, it will spit back at you all the routes that go through that point. When you pick one of those routes, it will spit out every stop along that route, including what times it will get to that route, and which buses intersect it at that route and how long you'd have to wait at that stop to hit that bus. Then you click one of those stops and the process repeats. It will keep a running tab of what buses you've taken to get to where you're going and let you back up as many spots as you need. Unfortunately, I probably won't get to this until after my vacation next week.