EV-SmartSim is a web playground for simulating electric vehicles as mobile energy storage. It shows vehicles, buildings, chargers and generators on a map and replays how energy moves between them over time.
This repository holds two versions of the tool:
deckgl-sim-client/: the current playground (React and deck.gl) with a small Rust service indeckgl-sim-client/rust-backend/. This is the version shown in the SIGSPATIAL 2026 demo (D-4605).Scenario_1/,Scenario_3/,animated_version/andcommented_version/: the earlier Python and React prototype, described further below.
You need Node.js with Yarn, and Rust with cargo.
# terminal 1: backend service on 127.0.0.1:8090
cd deckgl-sim-client/rust-backend
cargo run --release
# terminal 2: web app
cd deckgl-sim-client
yarn install
yarn devOpen the address that Vite prints. The start dialog offers the sample world, file import, building a world by hand, and the live feed.
The Import panel lists these examples under "Load an example", so a visitor can load each kind of input in one click. They are served from deckgl-sim-client/public/samples/; the same files are in deckgl-sim-client/fixtures/ for tests. Terms in the status bar and panels have a "?" button that shows a short description.
Example input files are in deckgl-sim-client/fixtures/:
example_complete.json: a complete run. It plays as it is.example_trace_no_roads.json: a trace without roads. The backend adds road routes and the missing battery values.example_incomplete.jsonandworld-plans.json: plans of intents. The backend simulates them, including queues at chargers.
Road routes come from the public OSRM server by default. Set OSRM_URL to use another OSRM server.
Ev-SmartSim is a discret-event simulation tool designed to be used by researcher to facilitate their research. The goal is to propose an open-source application in which you can implement your algorithm and test it no matter which EV-field you are studing. The discret dimension of the backend is necessary to test large scale scenarios. The UI is easy to use in order to be used by everyone.
In order to use this tool you need to install some Python and Javascript packages that will be listed below : Python :
- flask
- flask_cors
- flask_socketio
- simpy
Javascript :
- React
- Axios
- papaparse
- socket.io-client
- leaflet/dist/leaflet.css
- react-leaflet
Now that you installed every packages you need, you can use the tool. You can define scenarios in csv files or implement them manually directly on the UI. To do it with files you will need a file with your EVs, one with the stations and one with the steps. Take a look at the exemple files you have in the Github project. Now you need to run the backend and the frontend. The UI will appear on your browser and you can start to load your files. Once you loaded, you need to choose the trip calculation methode and the charge methode for your simulation. You can implement your own methodes in the backend. Then you can start the simulation and see the results on the UI.
This project is open-source and can be improved. To improve it you can implement new methodes to diversify the tool and make it more general. We want this tool to stay usable for every research. The UI can be improved as well with some real time animations. You can also add a clock to be able to control the time and the speed of the animation.
This project has been realised by the University of Melbourne.
- Adel Ntoosi - Project manager
- Loïc Merret - Project developper
- Muhammad Insan Al-Amin - Project developer