# Smart Recommendations for Renting Bikes in Bike-Sharing Systems
## 5 Evaluation of User-Centred Recommendation
### Simulation Experiment Setup  
There are publicly available data on the usage of the BiciMAD system, in particular:  
* Data on the trips: Including, for each trip, the time of taking a bike, origin station, destination station, travel time, and approximate route. However, in order to anonymize the data, only the day and hour of the pick-up time of each trip are given (without minutes). Each trip includes a user type, with possible values representing regular or occasional users, BiciMAD staff, or unidentifiable users;
* Situation of the stations: including the number of available bikes and slots, and whether or not a station was active. In order to replicate a real-world scenario, we extracted the user data for a 24-h period (in particular, from 7:00 on 20 July 2018 to 7:00 on 21 July 2018). That period comprised 12,296 real user trips, whose data were used to generate the artificial users of our simulation. These data, however, only include the stations where a user took or returned a bike, but not their origin or destination location. Therefore, and in order to reflect the real situation as accurately as possible, we generated random origin and destination locations in an area spanned by a circle of 300 m around the rental station and the return station, respectively. Finally, the instant of creation of the simulated user was generated randomly within the hour of their appearance in the real-world data (with a uniform distribution), since the exact minute and second of appearance were unknown. For specifying the initial station configuration in the simulated scenario, we used the official (real) data at the initial time (20 July 2018 at 7:00), at which there were 169 active stations with a total capacity of 4086 slots and 1792 bikes plugged in. However, since we wanted to analyse the performance of the different recommendation strategies in rather critical situations (where it is more likely to have empty and full stations), we reduced the station capacities and the number of plugged-in bikes at each station to approximately half of the original values--that is, in our experiments, we used 169 stations with a total capacity of 1995 slots and 896 bikes. Even though the Bike3S tool can simulate the movements of people walking or cycling on real networks of roads and footpaths (using OpenStreetMap data), in our simulation, we used straight-line movements on the geographical map. The impact of this choice on the performance comparison of the analysed strategies was marginal, but it allowed us to reduce the simulation time considerably. We considered a default walking and cycling velocity of 1.4 m/s and 4 m/s, respectively [38; 39]. However, since we used straight-line movements, and in order to adjust to more realistic values, we applied a velocity factor of 0.614. This factor was established based on comparing real and straight-line travel times between a set of origin/destination locations in Madrid (using OpenStreetMap data). Thus, the actual applied velocities were 0.8596 m/s for walking and 2.456 m/s for cycling. These velocities were used to simulate the movements of users; they were also used in the recommendation strategies to estimate the expected arrival times of users. Using the specified setup, we carried out experiments to compare the performance of the five previously defined recommendation strategies:  
* _ShortestDistance (SD)_;
* _InformedShortestDistance (ISD)_;
* _DistanceResources (DR)_;
* _DistanceExpectedResources (DER)_;
* _ExpectedCost (EC(x,y))_, where \(x=RentFailCost\) and \(y=ReturnFailCost\). The user behaviour for renting a bike in the simulations was as follows:  
1. A user \(u_{k}\) appears at a geographical location \(l_{k}\) at time \(t\) and asks the recommendation system for a rental recommendation (with request \(rent_{k}=\langle l_{k},t,md\rangle\)). The maximum acceptable distance in the experiments is set to \(md=600\) m;
2. The recommendation system applies its strategy and returns a ranking of possible stations;
3.