Skip to main content

Co2mpas_driver implements the microsimulation free-flow acceleration model (MFC), able to accurately and consistently reproduce acceleration dynamics of light-duty vehicles

Project description

Com2pas_driver: Try it live

Binder

Access this Binder at the following URL:

https://mybinder.org/v2/gh/JRCSTU/co2mpas_driver/master

Click the binder badge to try it live without installing anything. This will take you directly to JupyterLab where we used Jupyter notebook to present examples on how to use co2mpas_driver model (i.e., MFC) to simulate the driver behaviour of a vehicle.

co2mpas_driver

Co2mpas_driver is a library used to implement the microsimulation free-flow acceleration model (MFC). The MFC is able to accurately and consistently capture the acceleration dynamics of road vehicles using a lightweight and parsimonious approach. The model has been developed to be integrated in traffic simulation environments to enhance the realism of vehicles movements, to explicitly take into account driver behaviour during the vehicle acceleration phases, and to improve the estimation of fuel/energy consumptions and emissions, without significantly increasing their computational complexity. The proposed model is valid for both internal combustion engine and battery electric vehicles. The MFC has been developed by the Joint Research Centre of the European Commission in the framework of the Proof of Concept programme 2018/2019. For more details on the model please refer to Makridis et al. (2019)1 and He et al. (2020)2

Installation

Install co2mpas_driver This package can be installed from source easily on any machine that has git and pip. You can install co2mpas_driver's most recent commit.

    pip install git+https://github.com/JRCSTU/co2mpas_driver.git@75e619a

or from @master branch.

    pip install git+https://github.com/JRCSTU/co2mpas_driver.git@master 

Uninstall your package

    pip uninstall co2mpas_driver

Usage

In this example we will use co2mpas_driver model in order to extract the drivers acceleration behavior as approaching the desired speed.

a. Setup

  • First, set up python, numpy, matplotlib.

    set up python environment: numpy for numerical routines, and matplotlib for plotting

    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    
  • Import dispatcher(dsp) from co2mpas_driver that contains functions and simulation model to process vehicle data and Import also schedula for selecting and executing functions. for more information on how to use schedula https://pypi.org/project/schedula/

    >>> from co2mpas_driver import dsp
    >>> import schedula as sh
    

b. Load data

  • Load vehicle data for a specific vehicle from vehicles database

    >>> db_path = 'EuroSegmentCar.csv'
    
  • Load user input parameters from an excel file

    >>> input_path = 'sample.xlsx'  
    
  • Sample time series

    >>> sim_step = 0.1 #The simulation step in seconds
    >>> duration = 100 #Duration of the simulation in seconds
    >>> times = np.arange(0, duration + sim_step, sim_step)
    
  • Load user input parameters directly writing in your sample script

    >>> inputs = {
    'vehicle_id': 35135,  # A sample car id from the database
    'inputs': {'gear_shifting_style': 0.7, #The gear shifting style as 
                                            described in the TRR paper
                'starting_speed': 0,
               'desired_velocity': 40,
               'driver_style': 1},  # gear shifting can take value
    # from 0(timid driver) to 1(aggressive driver)
    'time_series': {'times': times}
    }
    

c. Dispatcher

  • Dispatcher will select and execute the proper functions for the given inputs and the requested outputs

    >>> core = dsp(dict(db_path=db_path, input_path=input_path, inputs=inputs),
       outputs=['outputs'], shrink=True)
    
  • Plot workflow of the core model from the dispatcher

    >>> core.plot()
    

    This will automatically open an internet browser and show the work flow of the core model as below. you can click all the rectangular boxes to see in detail sub models like load, model, write and plot.

    alt text

    The Load module

    alt text

    merged vehicle data for the vehicle_id used above

    alt text

  • Load outputs of dispatcher Select the chosen dictionary key (outputs) from the given dictionary.

    >>> outputs = sh.selector(['outputs'], sh.selector(['outputs'], core))
    
  • select the desired output

    >>> output = sh.selector(['Curves', 'poly_spline', 'Start', 'Stop', 'gs',
                  'discrete_acceleration_curves', 'velocities',
                  'accelerations', 'transmission'], outputs['outputs'])
    

    The final acceleration curves, the engine acceleration potential curves (poly_spline), before the calculation of the resistances and the limitation due to max possible acceleration (friction).

    >>> curves, poly_spline, start, stop, gs, discrete_acceleration_curves, \
    velocities, accelerations, transmission = \
    output['Curves'], output['poly_spline'], output['Start'], output['Stop'], output['gs'], \
    output['discrete_acceleration_curves'], output['velocities'], \
    output['accelerations'], output['transmission'], \
    

    curves: Final acceleration curves poly_spline: start and stop: Start and stop speed for each gear gs: discrete_acceleration_curves velocities: accelerations:

d. Plot

>>> plt.figure('Time-Speed')
>>> plt.plot(times, velocities)
>>> plt.grid()
>>> plt.figure('Speed-Acceleration')
>>> plt.plot(velocities, accelerations)
>>> plt.grid()
>>> plt.figure('Acceleration-Time')
>>> plt.plot(times, accelerations)
>>> plt.grid()


>>> plt.figure('Speed-Acceleration')
>>> for curve in discrete_acceleration_curves:
    sp_bins = list(curve['x'])
    acceleration = list(curve['y'])
    plt.plot(sp_bins, acceleration, 'k')
>>> plt.show()

e. Results

alt text

Figure 1. Speed(m/s) versus time(s) graph over the desired speed range.

Acceleration(m/s*2) versus speed(m/s) graph

alt text

Figure 2. Acceleration per gear, the gear-shifting points and final acceleration potential of our selected vehicle over the desired speed range

Acceleration(m/s*2) versus speed graph(m/s)

alt text

Figure 3. The final acceleration potential of our selected vehicle over the desired speed range

Contributing

Pull requests and stars are very welcome.

For bugs and feature requests, please create an issue.

Release
1.0.2

Release date
2020-06-26

Repository
https://github.com/JRCSTU/co2mpas_driver

copyright
2015-2019 European Commission JRC https://ec.europa.eu/jrc/

pypi-repo
https://pypi.org/project/co2mpas_driver/

License
EUPL 1.1+ https://joinup.ec.europa.eu/software/page/eupl

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

co2mpas_driver-1.3.0.tar.gz (53.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

co2mpas_driver-1.3.0-py2.py3-none-any.whl (112.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file co2mpas_driver-1.3.0.tar.gz.

File metadata

  • Download URL: co2mpas_driver-1.3.0.tar.gz
  • Upload date:
  • Size: 53.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for co2mpas_driver-1.3.0.tar.gz
Algorithm Hash digest
SHA256 eb51b6e53b12dba700c108be1d72aab4d903a229de69eaee8458ed4c24aab931
MD5 1f42e433f87a7d50bfd5f143a98e3a3d
BLAKE2b-256 25695b66666bd4fdea2254db6367cf22bf1e230304d09be4744cbb2eaf40afb2

See more details on using hashes here.

File details

Details for the file co2mpas_driver-1.3.0-py2.py3-none-any.whl.

File metadata

  • Download URL: co2mpas_driver-1.3.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 112.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for co2mpas_driver-1.3.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 db804560a53d2ab7f6bf18495e88bf6b5abccc2284334d8e2d9d8d1bf848f82d
MD5 1656b79521adf3d8c935b42434e53d72
BLAKE2b-256 766879967fcf567611a7a20d7af38ddf36a0873b9e46430aa4b6d4781d91ae90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page