Optimal placement of electric vehicle slow-charging stations: A continuous facility location problem under uncertainty
H.W. Ljósheim, S. Jenkins, K.D. Searle, J.K. Wolff, School of Mathematics and Maxwell Institute for Mathematical Sciences, University of Edinburgh
This front-end tool has been developed to make the model and solution approach developed in the paper: Optimal placement of electric vehicle slow-charging stations: A continuous facility location problem under uncertainty (link to paper tab). The goal is to identify optimal locations for constructing charging stations as well as the number of chargers at each station to minimize the total cost. In the 'Optimize' tab our model can be run with user-specified data and model parameters, after which the solution locations are graphically displayed, along with summary statistics.
The default parameters and problem set up are as follows:
- Default construction and maintenance cost of the station. Assume the annualized construction investment of a charger is $5000, and the maintenance fee of each charger is $500. Each station has at least 1 charger and at most 8 chargers.
- Cost of driving to the charging station: $0.041 per mile.
- Cost of charging. Each EV will charge to its full range at the station. Assume that the full range is 250 miles. The cost of charging is $0.0388 per mile. The charging demand in PA is modelled as follows.
- The geometry of PA is simplified as a rectangle with sides 290 miles by 150 miles, and the left lower corner is the origin. 1,079 vehicle locations are provided, and each location represents 10 EVs, i.e., we consider 10790 EVs in total.
- The range of an EV (in miles) is described by a truncated normal distribution generated by truncating a normal distribution
$N(100,50^2)$ with lower bound 20 and upper bound 250 (then normalizing the probability distribution function). - The probability that an EV travels to a charging station is
$e^{(-\lambda^2 (x-20)^2)}$ , where x is the range of the EV and$\lambda = 0.012$ . Assume all EVs are independent when they decide whether to go to a charging station. - Each charging station may have a queue with size up to the total number of chargers when all chargers are occupied. For example, a station with 3 chargers may have a waiting line with at most 3 EVs.
Our report detailing the model can be viewed in the 'Paper' tab.
There are some things that need setup.
We use rye as the package manager. To install rye on your machine follow this website. Make sure you add the shims to the path. To then install the virtual environment run
rye sync --all-features
to install all features including the GUI. If you don't need to GUI and would rather use your own solution you could just run
rye sync
You might need to included the --reset
flag if you ran other sync/lock commands. However, an extensive documentation is available at their website.
In order to run the solver you need to have CPLEX by IBM installed and added to you Python path. Please make sure this is set up properly, otherwise the code won't run.
After activating the virtual environment, you should be able to run
streamlit run Home.py
to launch the GUI. A fallback option is
rye run streamlit run Home.py
If you have trouble setting up the solver, feel free to open a new discussion. If you want to contribute to the code, feel free to fork the repository and submit a pull requests. That being said, happy optimising :)