{ "metadata": { "language": "Julia", "name": "", "signature": "sha256:26673520d20c3428f01b44ab1ce01aa78796b2a992e75d76d48584db0c83b1de" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Highway Scene Model\n", "===================\n", "\n", "This IJulia notebook contains model details, parameters, and associated code for traffic propagation models associated with *\"Initial Scene Configurations for Highway Traffic Propagation\"*\n", "\n", "Content:\n", "- Code Overview\n", "- Data Preprocessing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Code Overview\n", "-------------\n", "\n", "All code in this repository uses the Julia language. The versions for each package are available in REQUIRE.\n", "\n", "### Code Files\n", "- *Trajdata_.jl* - base NGSIM module\n", " - *trajdata_io.jl* - provides input and output functionality\n", " - *trajdata_preprocess.jl* - implementation of symmetric exponential moving average used to clean raw data\n", " - *utils.jl* - miscellaneous utilities\n", " - *piecewise_uniform.jl* - probability distribution implementation used by the marginal model\n", " - *model_validation_metrics.jl* - compute metrics used in model validation\n", "- *train_model.jl* - Julia script for model training\n", " - *univariate_scene_generator.jl* - marginal model\n", " - *joint_bn_simple_scene_generator.jl* - base model\n", " - *joint_bn_chain_scene_generator.jl* - chain model\n", " - *heirarchical_scene_generator.jl* - hierarchical model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Example Usage" ] }, { "cell_type": "code", "collapsed": false, "input": [ "using Trajdata_\n", "td = Trajdata_.Trajdata(Trajdata_.FILENAME_HW_101_0805)\n", "Trajdata_.carsinframe(td, 100)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 1, "text": [ "2-element Array{Int64,1}:\n", " 5\n", " 9" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "Trajdata_.get(td, 5, 100)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "Vehicle(4.902,140.923,-0.0046381856635791625,12.5,2,13.0,6.9)" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "get(td, :global_y, Trajdata_.car_df_index(td, 5, 100))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "1.873304155e6" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Scenes are extracted using the `pull` functions. For example, the scene below has frameindex 500 from 80a" ] }, { "cell_type": "code", "collapsed": false, "input": [ "reload(\"nbk_functions.jl\")\n", "render_scene_500_80a()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "png": "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", "prompt_number": 6, "text": [ "CairoSurface(Ptr{Void} @0x000000000caad140,800.0,200.0,#undef)" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The scene above draws each vehicle at its position in the dataset given by the local coordinates provided in the NGSIM data.\n", "The vehicle width and height are also provided from the NGSIM data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Scene Generators\n", "\n", "The abstract `SceneGenerator` was created to represent scene generation models. All concrete implementations are subclasses.\n", "Each `SceneGenerator` supports `generate_scene()`, `loglikelihood()`, and `cyclic_coordinate_ascent_parallel()`.\n", "\n", "Scene generation is the act of sampling a random scene from the distribution represented by the model. The roadway is specified using by the number of lanes, the width per lane (always the average lane width of 11.44 ft), and the scene length of 300 ft. The lane generation process for each model is detailed in the paper and is implemented for each model. In general, these methods construct lanes individually by iteratively adding the next vehicle in front of the previous one in the lane using a headway separation distribution. The initial placement of the first vehicle in each lane, however, deserves explanation.\n", "\n", "The distace of the first vehicle from the scene boundary is a uniform-random sample from the headway separation of said vehicle and the (missing) vehicle that trails it. This is achieved by sampling from the headway distribution and then sampling uniformally from that headway.\n", "\n", "The log-likelihood of a scene is computed as is detailed for each model in the paper. This assumes that the scene was generated using the given model. This requires computing conditional probabilities in Bayesian networks. The `Smile.jl` package was used to this end, which is a Julia wrapper around the `SMILE` C++ library developed by the Decision Systems Laboratory at the University of Pittsburgh. Inference in Bayesian networks was conducted using the Probability Propagation\n", "in Trees of Clusters \"Lauritzen\" algorithm in Smile, an exact inference algorithm.\n", "\n", "Model training was conducted using cyclic coordinate ascent and maximized the cross-validated likelihood, as detailed in the paper." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Data Preprocessing\n", "------------------" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The raw tracks were smoothed using the symmetric exponential moving average presented in *Estimating Acceleration and Lane-Changing Dynamics Based on NGSIM Trajectory Data* by Thiemann et al. The associated code is in `trajdata_preprocess.jl`. This approach smoothes the local position coordinates and the speed for each vehicle.\n", "\n", "The original datasets are each provided in three chunks of fifteen-minute length. Only full vehicle traces are provided, so it takes multiple frames before the entire road is saturated. Scenes were only extracted for frames in which the entire roadway was saturated.\n", "\n", "Model features were extracted from the NGSIM dataset. The vehicle centerline offset is defined as the signed lateral offset of a vehicle from the closest lane centerline. Lane centerlines were obtained by fitting 1D splines to the mean lateral position of the vehicles in the lane frame using the `Dierckx.jl` package. The smoothing constant was varied for each spline to produce the best fit. The lane relative-heading was computed directly from the smoothed trajectory using a three-frame forwards derivative. Vehicle separation distance was measured as the distance from the front of the trailing vehicle to the rear end of the leading vehicle." ] } ], "metadata": {} } ] }