Building a Traffic Model

Building a Traffic Model

I’ve decided to start a new project: building a traffic model.


I went to school and got my undergrad in Civil Engineering. The classes and work experience I liked best revolved around traffic and transportation planning. When I came across the opportunity to get my Masters in transportation planning, I jumped at it. Following school, I was able to work in the discipline for a time, but then I tried to change jobs, had it blow up, and then discovered there no more work in the field. It turns out my job prospects were tied much more closely to the economy generally and oil prices specifically than I’d expected. I’ve sent out hundreds of resumes, landed a few interviews, but never an engineering job offer. That was five years ago.


In the intervening time, I’ve kept busy. I was starting to learn Python about the time I changed engineering jobs and have used it extensively since. I’ve tried staying in the loop for engineering, but never felt particularly skilled at that sort of networking. I’ve worked some other jobs and built a company. Through it all, the bills have been paid. But it feels like time to put more time and effort into getting back into traffic engineering. But by combining my programming skills, my business experience, and my technical background, I hope to do something more effective (and fun!) than just firing off random resumes. Hence building a traffic model.



Scope for this project is rather had to define from the onset, and as long as I keep having fun, I’ll probably keep expanding it. Just the same, it’s helpful to have a scope defined to help understand what to focus on. So here is my “starter scope”:

  1. Implement the 4-step model in Python.
  2. Visual the model output; generated 3D video is the ultimate goal.
  3. Explore and attempt to model multi-modal transportation systems.
  4. Explore and attempt to quantify and model the impact of that new technologies such as driverless cars and smart roads will have on the transportation system.

Measures of Success

I expect this project will take some time, and be somewhat large, and so I figure it’s worthwhile to lay out some of the ways I’ll know if this is a success. These, of course, are subject to change, and for now, remain mostly qualitative rather than quantitative.

I’ll consider the project a success if it accomplishes several of the following:

  • expands my Python skills.
    • In particular, I expect that this project will become rather complex, and when dealing with complex program, one has to organize its functionality much more deliberately.
    • The project will consume and produce large datasets. I want to learn more about dealing with such datasets.
    • I want to explore options for parallel processing.
  • refreshes and expands my traffic planning skills. I’m planning to learn more about traffic planning, rather than just reiterate was I already know. One exciting option would be to somehow turn this project in a PhD degree.
  • earns me money. I imagine it could happen in a number of ways:
    • turns into a full-time engineering job
    • turns into a full-time programming job
    • provides engineering consulting opportunities
  • makes “pretty pictures”. I think this is essential to explaining the results of the model to a lay audience (including both hiring managers and politicians). These are the particular forms of pictures come to mind:
    • 2D images: This is the standard for much of this type of work, and probably where I’ll start.
    • 2D video: showing how 2D images change based on different parameters (time of day, future time horizons).
    • 3D video: I think this is one of more exciting things I can do with the model. Current 3D video options tend to be very expensive, and so rarely used. Thus, it becomes a high value skill for me to develop. Plus, I think this is one of the most striking ways to explain the power of the model, its results, and implications.
    • replace a video game’s traffic model. At the moment, I’m thinking of Cities: Skyline, which is a city building game I enjoy playing (and where the top image comes from). The game can be changed (“modded”) through plugins written in C#, so it may well the possible to swap out the game’s traffic model for my own.
  • is fun!

Next Steps

This post was the first concrete step toward building my traffic model, particularly defining the goals of the project. Here are some of the next steps that need to happen:

  • register the project name of PyPI;
  • create a repository of the project code on GitHub;
  • set up basic project structure;
  • write a blog post reviewing the 4 Step Model, which will serve as the basic structure for my traffic model;
  • set up a basic project website; and
  • look into the availability of free/trial/educational copies of other transportation planning and modeling software. Part of the is to avoid re-inventing the wheel, but also to provide inter-operability with current industry tools.


So, the journey begins. I’ll post updates here to my blog, as appropriate.

Other posts


Avatar for Steven S
Steven S on

Check out the desmod package we developed on top of simpy. You can build complex models on top of python’s discrete event simulator.

Add a Comment

You can use the Markdown syntax to format your comment.

or alternately, send me your thoughts at minchinweb [at]

Comment Atom Feed (for this post)