On the Forest Industry in Ontario Part 3: North of Superior

In a couple of older posts, I explored some of the forest products mills to the west of the ACR line on the CN and Ontario Northland railways in north-east Ontario and north-west Quebec with an eye to mills that could have provided some amount of bridge traffic over the ACR. (For mills served directly by the ACR, see these older posts on paper, lumber and other forest products traffic on the ACR.)

I’ve never discussed here anything west of the ACR though, and it is known from photographic and other evidence that shipments of wood pulp, wood chips, logs and lumber to or from various mills to the west to, from, or over the ACR did happen on a regular basis. This posting, similar to ones before it, will try to explore some of the mills north of Lake Superior west of the ACR line.

As usual, if anyone knows of any I’ve missed, or can expound upon or correct any information presented here, I welcome your comments. It’s difficult to actually get a coherent history on some of these mills and companies from online searches.

Note on company names: similar to previous posts, companies are listed by their mid 1980s name where possible, since that’s kinda my operating era, and describe the history within the text as best as I can determine using online resources.

Additional note on corporate consolidations: The Minnesota and Ontario Paper Company (a.k.a. M&O or Mando) operated a several mills in north-western Ontario and northern Minnesota until being acquired by Boise Cascade Company in 1965. In 1995 the former Mando Canadian mills were sold by Boise to Abitibi-Consolidated. Abitibi-Consolidated went through a major merger with Bowater Inc. in 2007 to create the Abitibi-Bowater company, which renamed to Resolute Forest Products in 2011 and continues to do business under that name today.

You’ll notice in the histories below (and in some of the previous postings in this series) a theme of widespread mill closures during the period of about 2007-2009, when the Canadian forestry took a significant hit due to economic factors and trade disputes and tariffs related to softwood lumber between the USA and Canada.

White River (CP) – White River Forest Products (Lumber mill)

Operated by White River Forest Products, this mill is still operational as an independent mill today.

Terrace Bay (CP) – Kimberly Clark (Pulp mill)

This is one of the prime candidates for a large amount of the Canadian Pacific wood pulp boxcars being shipped over the Algoma Central into Michigan and Wisconsin or beyond.

Of additional interest, from the late 1970s to early 1990s Kimberly Clark owned their own fleet of 150 pulpwood flatcars (with KCWX reporting marks) to support log shipments to their mill. For several years they ran a unit train operation of pulpwood logs from a siding at Hillsport on CN to Terrace Bay via Manitouwadge. Reg Fitzpatrick, former ACR agent/operator at Franz, has indicated that occasionally some of the Kimberly Clark cars would be sent up to Mosher for loading, with logs shipped to Terrace Bay or Thorold, Ontario.

Also coincidentally some of the former Kimberly Clark cars were later acquired by WC and numbered into the AC 238500 series in the late 1990s.

Marathon (CP) – James River Marathon Ltd. (Pulp mill)

This is the second major candidate for a source of wood pulp boxcars routing over the ACR from Franz to Sault Ste. Marie for US export.

Like Kimberly Clark at Terrace Bay, this was a pulp mill, producing market pulp for shipment to other finishing mills and not finished papers. The mill (and town) was established in 1944 by Marathon Paper Mills (a subsidiary of Marathon Corporation out of Wisconsin) with the mill completing construction in 1946. In 1957 the mill was sold to American Can of Canada (renamed America Can Canada Inc. in 1980). In 1982 American Can sold assets to James River Corporation of Virginia and the mill became know as James River Marathon Inc. (In 1997 parent company James River Corp. merged with Fort Howard Paper Co. and renamed Fort James Corporation.) In 2000 the mill was acquired by a partnership of Tembec and Kruger and named Marathon Pulp Inc. The Marathon operation went bankrupt and was shut down in 2009, and the mill later demolished.

This mill was the destination for large amounts of wood chips shipped out of the Dubreuil Forest Products mill on the Algoma Central at Dubreuilville. During the 1960s, chips were shipped in regular boxcars (provided by CP for this service). From the mid 1970s to mid 1980s, the mill on the ACR was apparently somewhat dormant from a rail-shipping perspective, but around 1986 they reconfigured some rail spurs into the mill and started shipping out lumber and wood chips again. This time chips were loaded into 50′-60′ gondola cars, again provided by CP for this service. (I’m told CP had about 100-150 cars assigned to this service, with the mill shipping up to 20 cars a day of chips between Dubreuilville and Franz. The ACR ran a dedicated afternoon/evening job for Franz/Dubreuilville switching requirements and empty cars were stored at Wanda siding between Franz and Dubreuilville.) These shipments from the ACR ended by 2007 when the supplying mill at Dubreuilville closed. Chips were also supplied to marathon from a sawmill in Chapleau on the CPR east of the Wawa area.

Also, I’m seeing in early 1950s AC timetables a Marathon Paper Mills spur at mile 294.8 connecting off the AC-CNR wye at Wyborn. It’s possible to infer (though not confirm) that logs could have been shipped from this spur via Franz. It’s also possible they could ship via CNR through Nakina and Manitouwadge.

Red Rock (CN and CP) – Domtar (Paper mill)

In 1937 Lake Sulphite Pulp Company began construction of a pulp mill but went into receivership about a year later and the mill construction halted. After a brief stint as a POW camp during the early years of World War II, the property was purchased by Brompton Pulp & Paper Company/St. Lawrence Corporation and construction on a new integrated mill began in 1944 and opened in 1945. In 1961 the St. Lawrence Corporation was merged into Dominion Tar & Chemical (Domtar) and in 1997 was organized as Norampac, a joint venture of Domtar and Cascades.

Of interest, CP for a time handled wood chips into this mill in 40′ and 50′ de-roofed boxcars although the ACR was not a source for this traffic.

This mill closed down in 2007, a victim of a downturn in the forest industry at that time, and has since been demolished.

Nakina (CN) – Nakina Forest Products (Lumber mill)

There a YouTube video from 2007 of a southbound freight at Franz showing several loads from Nakina Forest Products and Long Lake Lumber (next entry), so this is one we can actually prove as a specific source of traffic.

This mill closed down in 2008, but restarted operations in 2017 as Nakina Lumber Inc., owned by Buchanan Sawmills. I couldn’t find much other history online on when this mill was established.

Longlac (CN) – Long Lake Lumber (Lumber mill)

Once again I couldn’t find much detailed early history on this one, but in 2012 the bankrupt mill closed but was reorganized and re-opened in 2013 as Longlac Lumber Inc.

Dryden (CP) – Weyerhaeuser? (Paper mill)

The beginnings of the current mill at Dryden were built in 1913 by Dryden Timber and Power Company. It went through a few ownership and name changes afterwards; in the 1960s it changed to Dryden Paper Company, and after a few more changes at some point (the when is not clear) it was acquired by forestry giant Weyerhaeuser, who in turn sold this mill to Domtar in 2007, who still owns and operates the mill today.

The Dryden mill produces a full range of finished and coated papers.

Kenora (CP) – Kenora Forest Products (Lumber mill)

I couldn’t find a lot of history on this mill but it was acquired by the current owner in 1994 and idled in 2008, but reopened in 2015.

Kenora (CP) – Weyerhauser (lumber mill)

Thanks to a commenter on this post who highlighted this mill. Opened in 2002 by Weyerhaeuser, this mill produces laminated strand lumber (LSL) under the brand names Trus Joist and TimberStrand. Obviously that date means it wasn’t around during my own modeling time frame, but it could be a good source of traffic for a contemporary modeler.

Kenora (CP) – Boise Cascade (Pulp and Paper mill)

This mill was originally built in 1924 (although I couldn’t immediately dig up the original company name) and acquired by Minnesota and Ontario Paper Co. (Mando) in 1941, which was merged with Boise Cascade Company in 1965. In 1978 the Kenora and Fort Frances locations were officially renamed Boise Cascade Canada Ltd.

The mill underwent an extensive modernization program in the early 1980s and in 1995 the Boise Cascade Canada mills were sold to Abitibi-Consolidated.

In 2005 the mill was permanently closed by Abitibi-Consolidated.

Of particular interest with this mill, was a group of boxcars owned by the Minnesota, Dakota & Western Railroad (which was a subsidiary owned by Boise Cascade) built in 1969 by National Steel Car and featuring Boise Cascade lettering that were marked for international service and assigned to loading at this mill. These cars were sold or returned to lessor and had their lease transferred to CP in 1987, renumbering into a CPAA series – the only Canadian built cars ever to bear CPAA reporting marks.

Fort Frances (MD&W/IB&T) – Boise Cascade (Pulp and Paper mill)

Established in 1914, this mill has a similar history to the one at Kenora, both being owned by Minnesota and Ontario Paper before being acquired by Boise Cascade in 1965 and sold to Abitibi-Consolidated in 1995. Like the Kenora mill it produced pulp and un-coated paper/newsprint. The most recent owner of the mill was Resolute Forest Products, however the mill has been idle since 2012. As of spring 2019, it appears that Resolute has been entertaining bids for sale of the Fort Frances property.

The Fort Frances mill is pretty much guaranteed to not be contributing any bridge traffic to the ACR though, as they are significantly west of the Superior lakehead and situated right on the Ontario/Minnesota border – actually served by a branch of the Minnesota, Dakota & Western/International Bridge and Terminal Railway running across the river from International Falls, Minnesota. Traffic interchanges to the CN/DW&P via the MD&W in International Falls and any traffic flowing to the US midwest would just go south from there. However it remains an interesting addition to the list and could be of interest to someone modeling other lines pulling traffic from northern Ontario.

Also of note is the even larger mill (established in 1910) immediately across the river in International Falls served by the MD&W, also formerly owned by Minnesota and Ontario Paper and Boise Cascade and now owned by Packaging Corporation of America (PCA).

Log Loading Equipment and an Interesting Idea about Traffic

Other than iron ore from Wawa, and finished products from Algoma Steel created from said iron ore, one of the primary cargoes carried on the Algoma Central Railway was pulpwood.

Over the years a number of private spurs operated by different logging and forestry companies are listed in employee timetables, as well as other major operations loading from a clearing alongside the railway’s house track at various sidings.

So, with pulpwood loading being such a significant source of traffic on the ACR (or in several locations on pretty much all other Northern Ontario and Quebec lines) anyone modeling the ACR or really any model railways loosely based on Northern Ontario will want to include some pulpwood traffic at least, and probably actually at least one loading spur somewhere to represent this.

So I thought I’d share a series of my photos of different pulpwood loading locations and take a look what such an operation looks like. We find that the common word here is “simplicity”. Loading pulpwood does not require large overhead cranes or loading equipment (although at some larger saw mills like the Tembec mill at Hearst massive cranes make short work of moving tree-length logs between railcars or trucks and a large storage pile and the mill), enclosed loading bays, conveyors, dump pits, etc. All that is needed in most cases is simply a flat cleared area next to the tracks where trucks can drive up and unload their logs either directly into waiting railcars or into a storage pile. There are no fixed structures required to model, but the log trucks and other self-propelled equipment are of definite interest.

scan0009

This first photo is from my slide collection (photographer’s name unknown) and is taken at the Hawk Junction in early 1981 showing a pair of trucks loading gondola cars with logs on the team track behind the old railway freight shed (the grey building at background left).

Note that the truck in the middle (and likely the one at left as well) has its own hydraulic loading crane permanently mounted directly to the rear of the truck itself. Not all trucks will have this, but the self loader is a fairly common feature that allows the truck itself to also include the required loading equipment.

Unfortunately I haven’t taken the chance to actually personally photograph any individual trucks directly, but a google image search for “pulpwood truck” will turn up some good results.

IMG_0175

This photo is from the Huron Central ex-CP yard in Sault Ste. Marie. These two south tracks of the yard are always jammed with pulpwood flatcars which are loaded here for shipment to the paper mill at Espanola, ON on the Huron Central between Sault Ste. Marie and Sudbury. The facility is no more involved than a wide driveway along the track running the length of the yard. For the detail-oriented, I noted in most of my closer shots of individual railcars on these tracks quite a bit of bark and other debris alongside the rails where trucks load the cars.

IMG_7499

This photo was taken at Eton from my trip on the Tour of the Line in fall 2013. Here again we see another log truck equipped with a self loader on the rear loading logs into flatcars on the spur track. While this photo really only shows about a quarter to a third of the operation here (there is a second spur to the left and this shows only a portion of the cleared area) the unseen parts are simply more of the same and this shot really shows all that is required for a log loading operation.

DSC_0101

This last photo was again taken at Eton, this time in 2005, and was sent to me by Steve Watson to illustrate the loading equipment. The machine this time is a SERCO Model 290 log loader; a larger specialized stand alone piece of equipment.

This photo also shows something else that is interesting. Notice the tank car (with diesel fuel placards) spotted at the very end of the spur track. While some pulpwood is delivered via the main highway system and loaded at spur tracks in or near town, some of these logging spurs can be pretty isolated from any regular road system (I was able to actually trace a logging road from Eton through Frater on satellite imagery, but it’s a pretty long and circuitous route over what’s likely some pretty poor excuses for roads, and even then you’re still 100 miles north of Sault Ste. Marie on Highway 17 by the time you get to the main road), making bringing in a tanker truck to refuel your logging trucks and other equipment a difficult proposition.

So an interesting idea to add to your operation, if the logging camp is particularly remote, is to occasionally spot a tank car of diesel fuel at the very end of a spur to refuel all your trucks. This sounds like something I can do at my pulpwood camp at Mosher which was also pretty isolated. I’ve heard this location also had portable unloading ramp on the north spur where trucks and other equipment could be brought in to the camp and older equipment was just sometimes abandoned there since there was little to no access to the outside road system from the logging road network around Mosher at the time.

Throwback Thursday #6

Another old message form from April 26, 1970, given to the crew of southbound Hearst-Hawk Junction train no. 6.

msg2

No. 6 is directed to lift a pair of cars, an AC 40′ flatcar and a CN 50′ boxcar from a spur at Mile 176.5, about a mile south of Goudreau. Both cars are apparently to be routed to Hearst, but as the spur is south-facing, the southbound train will lift the outbound cars and bring them to Hawk Junction where they will connect with the next day’s northbound train to Hearst.

A fall 1969 timetable in my collection shows a spur here owned by Superior Acid & Iron, Ltd. Not much detail is known specifically about this particular company; through some correspondence with Dale Wilson and access to some of his sources, it appears to have been a new company started in 1969 with plans to rework an existing iron pyrites deposit near Goudreau. Pyrites had been mined in this area off and on over the years, with the earliest operations around the 1920s by companies like Madoc Mining and Nichols Chemicals, and while it’s not quite clear if any of these are the same or multiple deposits, it had most recently previously been worked by R.F. Fry & Associates under contract to Algoma Steel/Algoma Ore Properties from 1958 to 1963 shipping iron pyrite ores to Wawa for processing. In 1969 Superior Acid & Iron was started with plans to process iron pyrites and sell acid (a process caled “heap leaching” of pyrites (iron sulphides) was a common production method of sulphuric acid) into the US. Ultimately it doesn’t appear to have been very successful and all records of this company disappear around 1976.

Excel Car Cards and Waybills

Here I will discuss how I created my own car cards and waybills using Microsoft Excel’s spreadsheet software.

Note: this will not be intended to be a detailed tutorial on Excel, or the specific features I’m using; I will show enough to convey how I’m using the feature(s), but for additional details I will refer you to Excel’s documentation or other help sites. It should also be possible to achieve these results using similar tools in other spreadsheet software, but I leave that research to the reader as to how the tools in those softwares may differ from Excel.

Car Cards

The specific design of the car cards and waybills is inspired by the ones we use at the club created and printed using the Ship-It model railroad software. They follow the same dimensions and general form factor, although I have tweaked the design a little to customize it for my own purposes (especially of the shipment waybill insert slips – see below).

On the car card, the car information goes at the top, with the most important information (identifying reporting mark and number) in the central place of prominence. Other descriptive information such as type, colour and length are included below to assist in visually identifying the car. The Notes field may indicate other special features of the car, or usage restrictions (for example, “Paper service only” on boxcars meant for such).

The bottom of the card is designed to fold up and be taped to form a pocket into which the shipment/routing portion of the paper work (waybill) is inserted.

Below we see the Excel sheet I use for printing out my car cards. It took some tweaking to get the column sizes exactly correct, but otherwise looks pretty straightforward. However, under the hood all of the fields are defined with formulas that pull data from another sheet in the workbook. I didn’t want to copy and past page after page after page of hand-coded car cards (and especially the waybills with their vastly higher number of fields and flopped orientation) so I made one template page, and used Excel lookup functions to pull the data from another sheet, so the car data could be tracked and manipulated far easier in a standard grid format, and any arbitrary range selected for actual printing. In this way, car cards for a large fleet of hundreds of cars can easily be created.

car car sheet

You’ll see in the first image above of the car card template sheet, a “Starting ID” cell below the cards (in cell E16, highlighted). I’m going to use the value in this cell to feed into the Excel lookup functions, which will extract data from the actual roster sheet, and populate it into the fields in the car card template for printing.

Below is the actual roster information, contained in another sheet within the same workbook. Way easier to read and keep track of, and much more additional notes and information can be added in further columns to the right; our lookup only needs to deal with the first ten columns. Note in particular the first column with the heading “ID”. This is the value we’re going to lookup, and then populate the date from the other columns in the same row into the template sheet for printing.

car card data

Excel has several data lookup functions, and the one we want is the “VLOOKUP” function. The VLOOKUP function scans through a specified range of data, looking for a specific value in a particular column. Once that value is found in the search column, it can return a value from another column in that row. The VLOOKUP function in Excel looks like this:

=VLOOKUP( [value], 
          [source sheet name]![data columns], 
          [column # in data to pull result from], 
          [allow approximate matches])

In my case above, we’re pulling the lookup value (the car ID) out of cell E16, so the reference to that cell is the value. (For the subsequent car cards, we want to pull the next several cars in the data sheet, so the lookup value will be the value of (E16)+1, (E16)+2, etc., so if the starting ID is 1, car cards 1 through 5 will be printed.)

The name of my second sheet with the car data is “Data”, and the data is in columns A through K in that sheet. (The VLOOKUP function will scan the first column trying to find the lookup value.)

The last argument should be set to FALSE as we only want an exact match.

Put that all together, and the lookup for the reporting mark field on the first car card looks like this:

lookup function

One thing to know about the VLOOKUP function in excel, is that if the returned cell in the data sheet is blank, the VLOOKUP function will display that as a 0 in the display cell. For some fields here, like the Notes and Empty return information, I definitely want the cell to be blank if there’s no data, not rendered as zeroes. To protect that, any cell that’s using a VLOOKUP that you want to allow to be blank will need to be wrapped with an Excel IF function, which looks like this:

=IF ([condition], [value if true], [value if false])

In this case, my condition will be if the value from the lookup function is blank (“”), make the cell blank, otherwise insert the returned value. If I do this for the example cell in the image above, it would end up looking like this:

=IF (VLOOKUP(E16,Data!A:K,2,FALSE)="", "", VLOOKUP(E16,Data!A:K,2,FALSE))

… which actually looks far more complicated than it is, since the whole lookup function is pasted in there twice.

IMG_5039

Waybills

I also used these tools to create my own custom waybill template. This was a lot more work than the car cards simply owing to the sheer number of fields involved in each waybill compared to the car card, and managing to fit 10 of them per sheet as opposed to 5 per sheet for the car cards. However, it was largely a matter of just taking the time and effort to copy and adjust the lookup functions much as above. While there are quite a number more fields to deal with, and more waybills fit onto a page than the car cards, the general method is exactly the same. Just time consuming to do that many fields. But once it’s done, you have a dynamic template that can easily and quickly create and print out hundreds of different waybills.

waybill template

My waybills are “two-cycle” with each one printed on one side of the paper and having two separate moves (generally an empty move and a loaded move), one of which is visible at a time and rotated (between sessions) in the car card pocket to display the second move when the first move is completed. This required printing the second move upside-down to the first – although Excel doesn’t allow you to set the text orientation in a cell to “upside down”. It does however let you do “up” and “down”, so I just designed the waybills sideways with each half oriented a different way, as seen in the image above.

Two-sided four-cycle waybills can also be created, just more of the same effort to set up the additional fields on the second page, and a bit of playing with the page margins and column positions to find the proper alignment so that when the second page is printed on the reverse of the first, the waybill edges line up properly for cutting them out. I only needed two-cycle bills, so I did not bother with this effort.

You’ll see that my waybill template includes a block code for switching/routing at the very top, as generally this is the most important information required when switching or handling cars – “Where does this go?” and using a routing or block code at the top of the waybill makes it easier to identify the car’s immediate destination. This is reinforced with a colour-coded bar below the block code which matches the block. (I plan on making a chart of the blocks and a system map readily available to operators in the model railroad’s timetable document.)

To make the colour coded bar, I created a series of Conditional Formatting rules to apply a fill colour to this cell based on the text value in the block code cell above/beside it.

Once the waybill template is completed, it’s a matter of playing around in the data grid to create the various shipment information, and then printing them out in the template by adjusting the starting ID/group to fill in the data and print the results. Cut out with scissors, insert into the appropriate car cards, and voilà:

IMG_5042

Files

A few people asked if I would share the actual Excel files. Here they are.

Notes: The car cards file is useable as-is by anyone. I cleared out my own roster information so the entire world doesn’t know my inventory, just leaving the first few cars behind to illustrate how the data works. For the waybills file, I actually uploaded my file as-is, including all my data. Consider it a gift to other ACR modelers, and shows how the data works. Note that if you’re adapting the file to your own railway and want to include the colour coded bars that match to the destination block codes, you’ll have to go in and edit all the conditional formatting rules for your own station/block names. Note that this workbook also contains the customer order sheet described in my previous post.

If clicking on the link doesn’t open the file properly, right click and choose “Save As…” from the menu that comes up. (Mac users with a one-button mouse, I believe you hold the “Command” key and click for this menu.)

Update: see also followup post where I add company logos to the cards.

Simulating Customer Demand on a Model Railroad

In this post, I’d like to discuss one method to really improve on the car card and waybill operating system for simulating freight traffic and moving cars around a model railroad. This post won’t discuss the particulars of how the system works as a whole, just a way to enhance it by controlling or introducing variability into how many new cars are brought into the layout, and which customers will get switched.

Someone recently asked a similar question on a Canadian Railway Modelers facebook group of “how to determine which industries on a switching layout get cars in a session”, so I thought I’d take the opportunity to expand on my version. A few different ideas that people have used, of which this is only one, were given in response to the facebook question such as rolling a die for each industry, drawing random playing cards, etc. The spreadsheet system does have an advantage of being easily scaleable to a larger layout as well as a smaller one, but it’s certainly not the only approach.

The system described here was initially developed by my friends at the Waterloo Region Model Railway Club to generate traffic on our large club layout. I’ve copied it to play with generating traffic for my own layout (which doesn’t exist yet, but I can plan and experiment with traffic for the future) and also tweaked a few minor aspects of the system to customize it for myself.

Use With CC&WB and Other Systems

My club and I have used this in conjuction with a car card & waybill system to select number of fresh waybills to assign, but really the spreadsheet just generates a number of cars and you can use this with any sort of system from CC&WB, to tab-on-car, to manually written switch lists, or almost any other form of non-computerized car forwarding system. The spreadsheet just takes the every day decision making out of how many waybills/tab markers/cars to select for a customer after the initial up-front setup of the sheet. And if you find things aren’t quite balanced you can always play with tweaking the numbers in the spreadsheet.

If you’re using with with car cards and waybills (CC&WB) note that one major thing that is assumed by this system is that you are constantly removing and replacing waybills in the car cards and one waybill/car card combination is NOT permanently associated with each other. I’ve seen a number of modelers and even software programs (like Ship-It!, which our club used to actually create and print our car cards/waybills, but required some serious work-arounds of the system in some places including separate databases for the car cards and waybills due to the 1:1 permanent waybill to car card assignment issue…) using systems that permanently assign a specific four-cycle waybill to a specific car. This I think also leads to one of the more common complaints of the CC&WB method being “too rigid” with the same car always travelling the same pattern. Which is only an issue if you have a rigid mindset of never changing the waybill assigned to the car. Or your cars are so unique

Also, since we’re varying the number of new waybills assigned to empty cars in staging (or interchange tracks, or yard storage), this method will end up requiring breaking down and re-making inbound trains in a “fiddle” staging yard (or else assigning generic “through” waybills to remaining unused cars that are left over in the trains in staging, if you don’t want to physically change around any cars in staging).

If you aren’t already familiar with the “car card and waybill” system, I could do a separate primer later, but there’s plenty of information out there if you search the phrase “model railroad car card and waybill”. The short version is that it was designed by a model railroad back in the 1970s to simulate the important details from a real shipping waybill, but making all the paperwork reusable by separating the car and shipment information into two pieces of paper that combine together, usually by inserting the “waybill” (shipment details) into a pouch built in to the car card.

How it Works

The basic method is to generate car orders between a given minimum and maximum number of cars on a percentage frequency, or odds of occurring. (i.e. “30% of the time”, “50% of the time”, “100% of the time”…) By using a spreadsheet with a random number generator, it’s simple to generate varying orders for a number of different customers or car types. By varying the minimum/maximum and frequency values, it’s possible to have different orders range from completely constant (i.e. min/max the same at 100% frequency) to completely variable, with each order having a different statistical odds of occurring or range of amounts of cars to order.

I also figured out a way to tweak the spreadsheet to allow some orders to be generated on specific days of the week (e.g. Mondays, Wednesdays, etc.) which can be helpful if you have certain trains that every other session, or to reduce traffic for a “Weekend” session with less trains if you have fewer operators available. I’ll discuss this tweak at the end.

Setting up the Order “Pools”

Since the point is to control customer demand, you’ll generally want to have an order line for each significant customer/car type. However pools can also be somewhat generic for through cars.

For example, on my future layout, I’ll have several different pulpwood orders for my major customers: Abitibi/St. Marys Paper (possibly split into separate orders for the spurs at Trembley, Limer, and Wyborn), Newaygo (possibly split into separate orders for Mosher and Trembley spurs), and Miscellaneous. For the Newaygo sawmill, in addition to the inbound logs, I’d also have an order for lumber flatcars, and one for woodchip gondolas. A few other lumber flatcar orders would exist for other mills in Sault Ste. Marie and Hearst. I’ll also have some generic pools for CN overhead traffic between Oba and Hearst.

At the Waterloo Region club, which is a very large layout with a lot of traffic we actually developed a numeric classification/pool code system to replace the AAR car types on our car cards and waybills. We then organized and set up the customer order pools organized by these car types. This could be an entire discussion unto itself how we developed the specific details of this system, and while it’s probably sounding a lot more complicated right now than it actually is, and one doesn’t necessarily need to go this far, for now let’s just say that doing it this way for a large layout makes it much easier to organize the waybills and car cards by sorting on the classification/pool number and to generate realistic looking traffic by separating out different car types, configurations and assignments (for example assigned-service paper boxcars). Specific service assignments can also be indicated by a note on the car card like “Paper Service Only” but when re-waybilling over a hundred cars for a session, reducing the decision making by making the car types distinct is helpful. On a smaller layout, NOT reducing the decision making “could” be more fun by actually making you feel like you’re acting more like the local station agent in assigning cars for loading –

How to Setup the Spreadsheet in Excel

The original spreadsheet was created in MicroSoft Excel, and the formulas used here are specific to that program, although they may be similar if not the same in other spreadsheet software. Confirming that or figuring out the equivalent syntax or formula for different software is left to the reader.

Note however, that in laying out specific formulas, for simplicity of description I just referenced the columns (for example “= A + B”) while when actually entering the formulas you actually need to reference the specific cells (“= A2 + B2”). You can do this for the first column and then drag and fill down the sheet in Excel.

Basic Customer Demand based on a Percentage Frequency

The first four columns of the sheet are manually filled in and define the parameters of the order:

A – Description
B – Minimum cars to order
C – Maximum cars to order
D – Frequency% (0-100) – how often to fill this order

Then, we use a few columns to generate our random numbers and calculate the results:

E – Generate a random number between 0-100 to compare against the frequency column:
= RANDBETWEEN(0, 100)

F – Compare the generated result against the frequency. Output a 1 if less than or equal (so the order will happen), or 0 if over (it won’t happen today/this session):
= IF (E <= D, 1, 0)

G – Randomly generate the number of cars to pull within the minimum to maximum range specified. Note that we also multiply the result by the 1 or 0 in column F to make sure orders that have a frequency of less than 100%. This is the final number of cars to assign to this order for the session.
= RANDBETWEEN(B, C) * F

[Optional Advanced Feature] Generating Orders Based on a Specific Day of the Week (DOW)

The original spreadsheet we used at the Waterloo club was exactly as above, using a simple percentage frequency to control whether an order is filled or not. (Setting a minimum value of 0 cars to order will also reduce how many times a car shows up, but the statistical probability is a bit harder to calculate if the frequency is also less than 100.) Most of you will probably stop at this point, but this was an interesting proof of concept so I’ll go ahead and discuss it (though it gets a bit more technical).

In some cases, you might have a railway that runs certain trains on alternating days, or a reduced schedule on weekends (which could be helpful to be able to run a “weekend” schedule for a session if you know you’re going to have a smaller operating crew, or a fuller session with extra traffic if you have an extended session with extra crews. Using a couple of additional slightly more advanced Excel formulas and features I was able to be able to also be able to specify Days of Week for each customer pool to be ordered. (I specifically set it up for Day of Week, but you can use the same technique for “Full”, “Normal” and “Reduced” sessions.)

Note – this will get a little bit more technical to evaluate the day of week.

In this version, the first six columns (A-F) are the same, but the final result will be calculated a little differently, so delete column G for now.

We’ll also need a few extra columns to represent the days of the week, so we’ll use up the next seven columns* (G through M) to represent the days Monday-Sunday. Put a “1” in the column for each day the shipment *should* occur. Leave blank for the days to be skipped.

*Stylistically, I actually put my DOW columns all the way to the right hand side of my own spreadsheet to make it more readable when using and editing the sheet, but we’re mainly talking concept here so I’m just going to keep everything in the order I discuss them right now. Just make sure if you put things in a different order to reference the column that contains the right data. Another suggestion to make the sheet better to look at is to change the text colour on the calculated comparison columns to white or light grey so those numbers aren’t visible if you print out the sheet. As mentioned before, you can also adapt this concept to make different orders for high/normal/low traffic sessions, using three columns here instead of seven. Adjust other column references accordingly.

Column “N” then evaluates against the selected Day of Week. This is where things get interesting. First of all, I stuck a cell at the very top of the spreadsheet where I can indicate the Day of Week for the session I’m generating orders for (1 for Monday, through 7 for Sunday). In my case, that’s specifically in cell B1. Excel has an “offset” function which allows you to fill the value of one cell with the value of another cell in a different column in the same row. The function looks like this: OFFSET(reference, rows, columns) where the reference is a starting cell reference, and the number of rows and columns to shift over from that starting position.

In our case what we want is to use that function to check whether there is a 1 in the column for today’s DOW, by using the value from cell B1. So we want to shift over than many columns on the same row. But we also want to make sure that when we fill the cell formulas down to following rows, that the cell we’re referencing here doesn’t shift down a row with the other cell references. So we want to use an absolute cell reference to make sure that this never changes. Excel does this by putting a $ in front of the part of the reference we don’t want to change. So to make sure that the offset *always* references cell B1, the cell reference should look like $B$1 instead of B1.

In this case, to be absolutely clear, and to show the difference between the relative and absolute cell references, I’ll show the formula as if it were for row 3 of the sheet. The final result in cell N3 should look like this:
= OFFSET(F3, 0, $B$1)

Then finally in Column “O”, we again generate our random number within the min/max range and multiply it by both the frequency result and the DOW result:
= RANDBETWEEN(B, C) * F * N

There you have it! Now the spreadsheet will control the minimum and maximum number of cars, frequency (% odds of occuring) and also specific days of the week to order cars for a customer. And remember, if you simply want a particular customer to *always* get cars, just set the frequency to 100 and make sure there’s a 1 in all of the Day of Week columns. This order sheet is now completely as rigid or flexible as you could possibly desire, on a customer-by-customer basis.

Full spreadsheet column definitions (based on starting position in row 3):

Column Description Formula
A Name/Description
B Minimum
C Maximum
D Frequency (%)
E Frequency Random* =RANDBETWEEN(0, 100)
F Frequency Check* =IF (E3 <= D3, 1, 0)
G DOW Monday
H DOW Tuesday
I DOW Wednesday
J DOW Thursday
K DOW Friday
L DOW Saturday
M DOW Sunday
N DOW Check* =OFFSET(F3, 0, $B$1)
O Final order amount =RANDBETWEEN(B3, C3) * F3 * N3

* – Calculated column that can have its visibility reduced for readability when using.