Modelling what might have been in southeast BC and northwest Wasington

A Car Classification Conundrum

So far my Car Forwarding program has only considered a car’s basic type and length when doing restaging. This is not specific enough to be realistic, but it was sufficient to get the rest of the code working correctly. Now it is time to expand the attributes for a car so that we can have more realistic assignments for cars leaving staging.

After a lot of analysis and discussion, it looks like there needs to be six main attributes to describe a car. It is always possible to add more later on if the need arises, but this should work well for now.

The additional attributes are car Subtype, Class, Door, and Capacity. All of these are user definable as to what they actually mean, but the terms are there to help guide the process and be familiar. None of these are actually numeric, but symbolic, at least for now. For example, a capacity of 6000 cannot be compared to 7000 numerically, but is just a label that can be displayed and printed, and should make some sense to the user. Later on, if there is a need to specify some kind of numeric comparison, such as “any car length less than 50” it can be added.

Not all attributes will apply to a given car, for example, tank cars usually don’t have doors. In this case, the field is simply left blank and it will be ignored.

The purpose of all this is to allow the car restaging process to be able to match suitable roles to the cars in staging. We don’t want to assign a tank car shipment to a boxcar, or vice versa. There is a lot of flexibility in this process, as a role can be told to ignore, or “don’t care” about any or all car attributes so that there is very fine grained control over the assignment process.

The following are some examples of the six car attributes, taken from Colin’s railroad.

Covered Hopper


2 Deck
3 Deck
Drop Bottom




In the car description data any or all of these attributes can be left blank which implies that the attribute is not important and will be ignored when matching the car to roles. Obviously tank cars do not have doors, etc. Even the main car type can be ignored, if for instance we had some generic shipments to a team track that can accept any type of car.

More attributes can be added if necessary, but this should handle most situations based on local discussions.

Other attributes that help identify the car are its owner railroad and reporting mark initials and number. These may get added to the role data model so that roles can be made very specific down to an individual car or set of cars.

Some format is needed to be able to display the complete car attribute information, so the following is proposed. The complete string will consist of a concatenation of the non blank attributes, separated with colons, “:”. Something similar applies to the roles, but more details of that will come later. The order of the attributes was selected to move from most common on the left, to least on the right. All cars should have a type and length, so those are the first two , followed by subtype, class, door, and capacity. So some examples:

  • A 40’ boxcar with 8’ doors, for clean loading would be specified by: “Boxcar:40:Clean:D8”. 
  • A Shipment that needs a clean 40’ boxcar, but with any door width would request it as “Boxcar:40:Clean:*”, where the door width is specified with an asterisk, indicating “any” width will do. The same can be done for the length, etc. 
  • Another Shipment that only cares that it has any kind of a boxcar would use “Boxcar:*:*:*”, with asterisks for everything except the basic car type. 

One issue that is not completely resolved at this time is how to handle missing attributes. If we want to be able to parse a car attribute string, it gets difficult if it has an unpredictable number of parts, for example “Boxcar” versus “Boxcar:40:Clean:D8”. The simplistic approach would be to require all such strings to have a fixed number of parts, but this will look very messy with lots of “*”. A better solution is to require that all of the attribute names be unique and then the program can search for each name and from it determine if it represents the car’s length, class, door, or whatever. This seems to be a good compromise in that each attribute tends to be quite different in the types of names used, so not allowing the same name for different attributes should not be a problem. For example, lengths tend to be two digits (40), while capacities are 4 digits or more (6000). Time will tell if this assumption holds true or not as more car attributes are encountered from the real world.

The format of a role string, on the other hand, must include all of the parts in the correct sequence, because it must know which are to be ignored. It might be possible to make this more flexible with some more thought and testing, but for now this will have to be the case.

Calendar equivalents for 2020

I like to hang up old calendars that match the current year in order to enhance the period feel around the layout.

2020 is a leap-year, so there are far fewer calendars that will match it exactly, as they also must be leap-years. This is a good year for just matching January – February, and then changing again for March – December.

So, for 2020, the matches are:

Full year:
1908, 1936, 1964, and 1992

1902, 1908, 1913, 1919, 1930, 1936, 1941, 1947, 1958, 1964, 1969, 1975, 1986, 1992, 1997, 2003, and 2014

1903, 1908, 1914, 1925, 1931, 1936, 1942, 1953, 1959, 1964, 1970, 1981, 1987, 1992, 1998, 2009, and 2015

November 30th work session

Another great session on Saturday. The scenery around Curlew is looking great thanks to the guys.

Atlas/Kato GP7 LED headlights

Many years ago Atlas sold a variety of locomotives in the so-called “Yellow Boxes”. A number of these were made by Kato for Atlas, and have proven to be some of the best running locomotives of all time. They are still worth picking up at swap meets. In this series there were two numbers for Canadian Pacific in the block lettering scheme, and many of us have acquired these over the years. They of course need to be converted to DCC, but fortunately a number of the DCC vendors make drop-in boards that snap on to the mounting points perfectly. The lighting, however, is another story.

The original design used a single incandescent bulb sitting up above the motor, so that the light would shine in both directions through clear plastic light guides, and out the end headlights and number boards. With DCC, we can now control each light independently, so we need two LEDs. The first photo shows the new DCC decoder mounted, but still with the original light guides in the shell.

Chassis with new NCE decoder and the shell with the original clear plastic light guides before shortening.
Continue reading “Atlas/Kato GP7 LED headlights”

Goldilocks and the three metrics

Q Factor formula

How do we measure the “goodness” of an operations scheme for running a model railroad? Well, having a computer program that can easily run studies of a layout over many days with different operating schemes, train timetables, and other parameters, we can generate a lot of statistics from each run and then compare them, but what measures indicate a better or a worse outcome? We have all attended good and not so good operating sessions and can probably list a number of aspects that made one better than the other. The trick is to find a way to quantify at least some of these so that the program can better serve as a planning tool, and we don’t need to impose on our friends while we “try it and see”. There are certainly some aspects that people enjoy about a session that can’t be quantified, but maybe we can find some way to approximate a measure of “goodness”.

Stepping back from calculations for a moment, the main purpose of an operating session is to move cars around a layout to where they should be, through the running of various trains according to some operating scheme. The non train aspects, such as dispatching, train orders, etc., are outside of the scope of this discussion, because they are not simulated by the program. With that in mind, I think that the following characteristics can be accepted as indicative of a good, well run operating session.

  • Industries should have the number of cars they require.
  • A good number of the cars should move at least once.
  • All cars that are ready to move should move.
  • Only specialized cars should be off the layout in storage.
  • Yards, interchange, and other nonrevenue locations should have a minimum number of cars.

In other words, the layout should be well utilized, cars should flow smoothly to where they should be going, and there should be lots of activity to keep the crews busy during the session. Layouts with too few cars in play to provide sufficient interest or those with so many cars plugging up everywhere that hardly anything moves tend to be less satisfying for crews. Some variation is of course desirable, but extremes are not.

So the trick is to find some measures in the program that can capture these ideas so that we can judge if one operating scheme is better than another. The idea is to have a number of metrics about a session that can be combined to produce an overall score. If each one has a maximum value of 1.0, meaning that the aspect is as good as it can be, then we may be able to just multiply them together and still consider 1.0 as the “perfect” result.

Some of these characteristics tend to be at odds with one another. For example, if we add more cars to a layout so that we have a higher fraction of the industries fully served, it may result in cars not flowing through yards as quickly due to congestion and limits. This reduces the overall mobility and can lead to gridlock.

Here are three ideas for what we might measure.

  • Pickup Ratio – The fraction of times when a car is ready to move, and a train should move it, but it does not pick it up due to some limit on length, space ahead, etc. If a car always gets moved when it is ready, then the score would be 1.0.
  • Q Factor – The fraction of cars that are at revenue tracks (industries) and staging, versus those on nonrevenue tracks and in storage. We want the cars to be moving about the layout and not sitting waiting somewhere. Again, 1.0 is best.
  • Revenue Usage – The fraction of the track space at industries that is occupied by cars. Obviously this cannot always be 100 percent, as some industries only receive cars infrequently, but we also don’t want them never more than say half full either.

These three metrics are easy to calculate by the program, and are reported in a summary file for each study run.

To play around with how all of this might look, I plotted these measures for the S&BC for different numbers of cars, and different interchange probabilities. Other posts talk about some of the issues we have had with too many cars clogging up the Grand Forks yard because they are waiting to be interchanged between the two railways. The solution seemed to be to minimize the shipments that require interchange by coercing them to be selected less often, so this was a good test case to see if these metrics would support this idea in a quantifiable way.

The following graph shows the effect of having 40, 60, 70, 80, and 98 cars on the layout, with the train schedules and everything else the same. The probabilities of interchange shipments were not reduced. We would expect that as more cars are added, the revenue track usage would go up, as it is very low with only 40 cars in play, but we might end up with so much congestion that cars start to be unable to move when they should. This in fact is what happens. The green line shows the track usage going up from just over 0.2 to 0.7, meaning that we have a lot more cars delivered to the industries from the additional cars. But, the yellow line shows that there is a price to pay for this, namely congestion, as the rate of car pickup drops from over 0.9 (very good) to about 0.35 (very bad), which means that a lot of the cars that are ready to move are being skipped by trains when they should otherwise be picking them up.

Qfactor graph with interchange at 1.0

The blue line is what I am calling the Qfactor, using the formula shown at the start of this post. It is the fraction of cars at revenue and staging tracks, divided by the total number of cars. It simply indicates what portion of the cars are on the “good” parts of the layout, actively participating in the running of trains, versus those that are mostly sitting idle for one reason or another. In this case it is mostly constant and independent of the number of cars in play because there is extra capacity at the industries that can accept more cars, however a roughly proportionate number of additional cars will also end up on the non-revenue tracks such as yards while they wait longer to be delivered. This is a good example of why we need more than one metric, as there are opposing tends at work.

And finally, the red line is just a combination of the other three, in an attempt to provide a single value. I’m not sure yet how much value this may have. Time will tell.

A second set of studies were then run with the same numbers of cars, but with a much lower probability for the interchange shipments. This should result in far fewer cars waiting in the Grand Forks yard to be interchanged from one train to another and more at the industries. All of the shipments that required interchange between trains were set to a very low probability, so that they would be selected only as a “last resort” if there were no other direct shipments available.

Qfactor graph with interchange at 0.01

This time we have a very different set of curves. The car pickup ratio (yellow) is very high throughout, meaning that cars never have to wait long after they are ready to move, which is what was expected. The industry tracks are never very full at only 30% (green) so that is a concern, and the Q factor (blue) starts out very good, but drops rapidly as more cars are added. A closer examination shows that this is because almost all of the extra cars end up getting stuck in storage and never making it on to the layout. This in turn is because none of the shipments will be exchanged in the yard, so there is nowhere for them to accumulate and be in play on the layout. In short, the trains leaving staging quickly get saturated by cars freely going between staging and the industries, with none sitting around waiting. The flat portions of the yellow and green lines shows that the extra cars have no effect on them. This would probably be considered a good operating session with freely flowing cars, so long as it was acceptable to have low utilization of the industries. One conclusion from this is that the “natural” number of cars for this operating scheme is somewhere between 40 and 60 cars. The way to have more cars on the layout is probably to run more trains so that there is more capacity out of staging to feed the layout. This might be worth trying sometime.

So, in summary, I think these three metrics give a good insight into the nature of an operating session simulation. I expect to improve my understanding of their implications as more experience is gained, but for now, they should serve well for planning, comparing, and contrasting different operational schemes. Oh, and what does Goldilocks have to do with this? Nothing at all.

November 23rd work session

More work on the 23rd. See photo captions for details. Progress is great.

November 16th work session

The gang continued on on a number of fronts, refer to the captions for details. Thanks guys!

Noxious fumes

Now that all of the new track at Carson and Curlew had been tested by VanRail and other operating sessions, it was time to paint it before we start on the scenery.

I have been using a spray paint made by Rust-Oleum called Specialty Camouflage – Earth Brown. It is very flat and covers well, and seems to stick to the plastic ties.

I clean the tops of the rails after it dries with a special tool I made from a simple piece of aluminum with one end sharpened with a file. The aluminum is softer than the rail, so it does not scratch it, but the paint peels right off with very little effort. The tool needs to be sharpened a few times, as the rail wears a groove in it. I found that if I tried to wipe the paint off while it was still wet, I would manage to hit the ties as well, messing up the nice finish. Also, by carefully using the tool, the tops of non-running rails such as guard rails can be left brown.

Rail cleaning tool.

I have not bothered to try to paint the rails a different colour, as I just don’t have the patience for that. I find that the dark brown colour of the paint seems to make the track just recede from view, and once it is ballasted, it looks fine to me.

Mainline track at Grand Forks after ballasting.

The only problem with this painting method is the fumes. You can’t really take the layout outside to paint it, so the room quickly fills with noxious fumes. I close the door to my workbench area which closes off both it and the layout room from the rest of the house, and I use a respirator when spraying. Afterwards, I run my paint booth exhaust in my workbench area for about 24 hours to clear the air. One window elsewhere in the house is left open a bit to let in fresh air, and it seems to travel through the heating ducts to the train room to replace the air that is being exhausted. This works well and we don’t smell the paint elsewhere in the house.

Curlew masked and painted.
Carson done as well.

While the spray paint works well, I really need to find a suitable acrylic alternative and learn to spray it before I need to paint future track additions.

VanRail 2019

The biennial model railway operations event known as VanRail was held here from September 6 to 8th. I hosted sessions on all three days, and we operated using the new train scheme developed over the summer following that “Fateful Friday” and the lessons learned. More information about the event itself can be found on the VanRail web site.

All in all, the three sessions went well from my perspective, and there were no complaints voiced. The amount of work seemed about right, with the one exception of the Morning Star mine turn, which had been a last minute addition.

Of course, on the last day, Paul suggested a great way to enhance the challenge of the mine turn, and he then proceeded to successfully prove how it would work. The idea was to send the train up with more cars than could easily be run around, but that would still fit on the mine spur, necessitating more switching moves. In the end it all worked out as he expected it to, so now we can operate that train with two levels of difficulty, depending on the experience level of the operator.

Some photos from Friday with Dave, Rick, and Cal…

Some from Saturday with Andrew, Glen, and Jim…

And some from Sunday with Don, Norm, and Paul…

I am looking forward to having more layout built before the next VanRail in 2021. There is lots of work to do, but I have a great crew helping me!

Measure three times, cut twice

When “Measure Twice” is Not Enough

Fascia on the layout. It is a very important aspect that helps make a layout look finished, and it has to be good otherwise everyone notices. As one of the last construction steps before VanRail in September, the fascia around the corner with the Morning Star Mine was installed on Saturday with the help of my trusty Saturday gang. Everything was installed just fine, and it was left for me to drill out the three large holes for the switch control pushrods and guide cups. Due to the very tight space along that section of the layout with the track near the edge, there is no room for normal length pushrods. They are so short that there is no room for error and things have to line up well or it won’t work. So, I did a lot of careful measuring up, down, left, right, etc., etc., and made copious notes so that I could position the holes very accurately on the fascia, which is what I did. Or so I thought… I forgot to include the amount that the fascia sticks up above the plywood roadbed, so when I positioned the holes down from the top edge, they were in fact too high.

Oops, the push rods should line up with the centre of the holes.

Then, after remounting the fascia, and noticing my mistake and immediately knowing why, Suzy came along to inspect and tried to push the plastic control cups in and found that they hit the plywood. No problem, as the holes are too high, so that is to be expected, right? Well, it turns out that even if I had positioned them where I had so very carefully measured, it still would not have been right, as I had neglected to allow room between the cups and the switch mechanism attached to the bottom of the plywood. The track is so close to the fascia at that point that the cups have to be even lower than normal to clear the mechanisms.

Notice that the cups are hitting the switch mechanisms on the bottom of the plywood.

The solution was to install offset push rods that lower the rod so that the white cup can be below the switch mechanism and all will be well.

Now the cup can be lower and miss the switch mechanism.

So, even if I had “measured twice” and “cut once”, it still would have been wrong. I needed to measure “three times” and “cut once”. This is exactly what I did on the newly purchased second piece of fascia hardboard the next day. Tom was a huge help in coming over mid-week to help get it installed, and this time everything lined up correctly. We also decided that since we had a new piece of hardboard to play with that we would cut some significant undulations in the edge to add more scenic interest. So, in the end, it all worked out even better than had I done it “right” in the first place. Thanks Tom!