Keywords

1 Introduction

Electric vehicles (EVs) have recently attracted great attention in transportation and logistics sector as they considerably reduce dependency to oil and consequently air pollution. The EVs are more efficient than conventional vehicles due to their electric motor and transmission system which transfers mechanical power to the wheels (Wu et al. 2015). Nevertheless, there are some technical drawbacks in case of using EVs. The most significant drawback is their battery capacity, which is low, and users should charge their batteries frequently in order to reach their destinations. Due to this restriction, routing an EV fleet has appeared as a challenging combinatorial optimization problem in the Vehicle Routing Problem (VRP) literature.

Electric Vehicle Routing Problem (EVRP) is an extension for VRP, where EVs are used in the fleet instead of fossil fuel vehicles. EVs reduce tailpipe emission and enhance green logistics. It tries to handle distribution tasks of logistics companies by minimizing the total energy consumption cost of serving customers and satisfying their demands. EVRP with Time Window (EVRPTW) is introduced by Schneider et al. (2014) where a full-recharge strategy was adopted. The authors developed the mathematical programming formulation of the problem and proposed a hybrid Variable Neighbourhood Search (VNS) and Tabu Search (TS) algorithm to solve it. Different variants of EVRP and EVRPTW were addressed in several studies including the cases of partial recharge (Bruglieri et al. 2015; Keskin and Çatay 2016), mixed fleet (Goeke and Schneider 2015; Hiermann et al. 2016), location routing (Schiffer and Walther 2017), fast charging (Felipe et al. 2014; Çatay and Keskin 2017; Keskin and Çatay 2018), non-linear charging function (Montoya et al. 2017; Froger et al. 2019), battery swapping (Yang and Sun 2015; Hof et al. 2017; Paz et al. 2018). Desaulniers et al. (2016) also studied EVRPTW and proposed a branch-price-and-cut algorithm to solve four different recharging strategies. Some recent studies have dealt with the availability of recharging stations and queueing for recharging service (Froger et al. 2017; Kullman et al. 2018; Keskin et al. 2019). A comprehensive review of the EV technology and survey of the EVRP variants may be found in (Pelletier et al. 2016; Pelletier et al. 2017; Erdelić and Carić 2019).

Energy consumption on the road does not only depend on the distance travelled but many other factors including the vehicle's weight, velocity, auxiliary equipment (internal factors) as well as ambient temperature and road gradient (external factors). These factors have been often neglected in the VRP literature either because they make the problem too complex to solve or the driving range is not an issue as the vehicles can easily refuel at a nearby gas station. However, they may play a critical for in the operational efficiency of the EVs since they can increase their energy consumption significantly (Rastani et al. 2019). Among them, the weight of the transported cargo may play a crucial role in route planning. The logistics operations of hypermarkets, hardware stores and other companies that deal with heavy loads are examples for which a load-dependent model produces more efficient transportation plans in comparison with basic routing models (Zachariadis et al. 2015), which constitutes the main motivation of this study.

Load Dependent Vehicle Routing Problem (LDVRP) was introduced in (Kara et al. 2007). They used the weighted distance objective and relate it with the energy requirements of vehicles. They proposed mathematical formulations for collection and distribution cases. Xiao et al. (2012) attacked the same problem by emphasizing the relation of the weighted distance with the fuel consumption of the vehicles within the context of Fuel Capacitated VRP. Zachariadis et al. (2015) extended LDVRP by considering simultaneous pick-ups and deliveries and proposed a local-search algorithm to solve large-scale instances.

In this study, we address the load-dependent variant of EVRPTW with partial recharges by taking into account the energy consumption associated with the cargo carried on the vehicle. We adopt a hierarchical objective function where the primary objective is to minimize the fleet size whereas the secondary objective is to minimize total energy consumption. We solve small-size instances using a commercial solver, and for the large-size instances, we develop a Large Neighbourhood Search (LNS) algorithm. The remainder of the chapter is organized as follows: Sect. 2 introduces the problem and formulates its mathematical programming model. Section 3 describes the proposed LNS method. Section 4 presents the experimental study and discusses the results. Finally, concluding remarks are provided in Sect. 5.

2 Problem Description and Mathematical Model

We tackle EVRPTW where a homogeneous fleet of EVs serve a set of customers with known demands, time windows, and service times. As opposed to previous studies in the literature which assume that the energy on the battery is consumed proportional to the distance traveled, we take into account the additional energy consumption related to freight load. Carrying more load by an EV causes more energy consumption. Furthermore, we allow partial recharging and its duration depends on the amount of energy transferred. Since it is a common practice in the real world to operate within the first phase of recharging where the energy transferred is a linear function of the recharge duration in order to prolong the battery life (Pelletier et al. 2017), we also assume a linear charging function. In addition, we assume that the EV can be recharged at most once between two consecutive customers, which is practical in last-mile logistics. We consider a pick-up problem where the load of the EV increases along its tour as it visits the customers. Each EV departs from the depot with full battery since it can be recharged overnight.

2.1 Mathematical Formulation

In line with the mathematical notation and modelling convention in the literature (Schneider et al. 2014; Keskin and Çatay 2016; Rastani et al. 2019) we define V = {1, …, n} as the set of customers and F as the set of recharging stations. Vertices 0 and n + 1 denote the depot where each vehicle departs from 0 (departure depot) and returns to n + 1 (arrival depot) at the end of its tour. We define V0 = V ∪ {0}, Vn + 1 = V ∪ {n + 1} and V0, n + 1 = V ∪ {0, n + 1}. Then, the problem can be represented on a complete directed graph G = (N, A) with the set of arcs, A = {(i, j) | i, j ∈  N, i ≠ j} where N = V0, n + 1 ∪ F is the total set of nodes on the network.

The energy consumption depends on the distance traveled and the total weight of the EV, which is affected by the cargo load carried on the EV. Each customer i ∈ V has a positive demand qi, service time si, and time window [ei, li]. All EVs have a cargo capacity of C and a battery capacity of Q. At each recharging station, one unit of energy is transferred in g time units. The direct distance from node i to j is represented by dij.

Travel time from customer i to customer j is denoted by ti j if the journey is direct and ijs = tis + tsjtij is the additional travel time if it is via station s. Note that ijs does not include the recharging time at station s. The amount of extra energy needed in order to move one unit of cargo is represented by w. The total energy consumption starting from customer i to customer j is calculated as (h + wui)dij, where ui is the weight of the load on the vehicle upon departure from customer i.

The decision variables (yki, ykijs, and Ykijs), keep track of battery SoC of vehicle k at arrival at customer/depot i, at arrival at station s on route (i, s, j), and at departure from station s on route (i, s, j), respectively. τi denotes the time when the loading starts at customer i. The binary decision variable \({\mathrm{x}}_{\mathrm{ij}}^{\mathrm{k}}\) takes value 1 if vehicle k travels from node i to node j, and 0 otherwise whereas the binary decision variable \({\mathrm{z}}_{\mathrm{ijs}}^{\mathrm{k}}\)takes value 1 if vehicle k traverses arc (i, j), through station s.

$${\text{Minimize}}\,\sum\limits_{k \in K} {(y_{0}^{k} - y_{n + 1}^{k} )} + \sum\limits_{{i \in V_{0} }} {\sum\limits_{{j \in V_{n + 1} }} {\sum\limits_{k \in K} {\sum\limits_{s \in F} {(Y_{ijs}^{k} - y_{ijs}^{k} )} } } }$$
(1)

subject to

$$y_{0}^{k} = Q \,\,\,{\forall k \in K}$$
(2)
$$\sum\limits_{\begin{subarray}{l} j \in V_{n + 1} \\ i \ne j \end{subarray} } {\sum\limits_{k \in K} {x_{ij}^{k} = 1} \,\,\,\forall i \in V}$$
(3)
$$\sum\limits_{\begin{subarray}{l} i \in V_{0} \\ i \ne j \end{subarray} } {x_{ij}^{k} - \sum\limits_{\begin{subarray}{l} i \in V_{n + 1} \\ i \ne j \end{subarray} } {x_{ji}^{k} = 0} \,\,\,\forall j \in V,\,k \in K}$$
(4)
$$\sum\limits_{s \in F} {z_{ijs}^{k} \le x_{ij}^{k} } \;\;\;\forall i \in V_{0} ,\,j \in V_{n + 1} ,\,k \in K,\,i \ne j$$
(5)
$$\begin{aligned} \tau_{i} + (t_{ij} + r_{i} )x_{ij}^{k} & + \sum\limits_{s \in F} {(\hat{t }_{ijs} z_{ijs}^{k} + g(Y_{ijs}^{k} - y_{ijs}^{k} ))} - l_{0} (1 - x_{ij}^{k} ) \le \tau_{j} \\ & \;\;\;\;\;\;\;\;\;\;\;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,k \in K,i \ne j \\ \end{aligned}$$
(6)
$$e_{j} \le \tau_{j} \le l_{j} \,\,\,\,\forall j \in N$$
(7)
$$\begin{aligned} 0 \le y_{j}^{k} \le y_{i}^{k} - (h + wu_{i} )d_{ij} & + M(1 - x_{ij}^{k} + \sum\limits_{s \in F} {z_{ijs}^{k} } ) \\ & \;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,k \in K,i \ne j \\ \end{aligned}$$
(8)
$$\begin{aligned} y_{j}^{k} \le Y_{ijs}^{k} - (h + wu_{i} )d_{sj} & + M(1 - z_{ijs}^{k} ) \\ & \;\;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,s \in F,k \in K,i \ne j \\ \end{aligned}$$
(9)
$$\begin{aligned} 0 \le y_{ijs}^{k} \le y_{i}^{k} - (h+wu_{i} )d_{is} & + M(1 - z_{ijs}^{k} ) \\ & \;\;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,s \in F,k \in K,i \ne j \\ \end{aligned}$$
(10)
$$y_{ijs}^{k} \le Y_{ijs}^{k} \le Qz_{ijs}^{k} \;\;\;\;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,s \in F,k \in K,i \ne j$$
(11)
$$y_{j}^{k} \le Q\sum\limits_{{i \in V_{0} }} {x_{ij}^{k} } \;\;\;\;\;\forall j \in V_{n + 1} ,k \in K$$
(12)
$$\begin{aligned} & u_{j} \ge u_{i} + q_{j} \sum\limits_{k \in K} {x_{ij}^{k} - C(1 - \sum\limits_{k \in K} {x_{ij}^{k} } )} \\ & \;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,i \ne j \\ \end{aligned}$$
(13)
$$0 \le u_{i} \le c\;\;\;\;\;\;\;\;\forall i \in V_{0,n + 1}$$
(14)
$$x_{ij}^{k} \in \left\{ {0,1} \right\}\;\;\;\;\;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,k \in K$$
(15)
$$x_{ijs}^{k} \in \left\{ {0,1} \right\}\;\;\;\;\;\;\;\forall i \in V_{0} ,j \in V_{n + 1} ,s \in F,k \in K$$
(16)

The objective function (1) minimizes the total energy consumption. Constraints (2) set the initial battery SoC of EVs at departure to full. The connectivity of customer visits is imposed by constraints (3) whereas the flow conservation at each vertex is ensured by constraints (4). Constraints (5) make sure that vehicle k serves customer j after customer i if it travels from i to j by recharging its battery en-route. Constraints (6) guarantee the time feasibility of arcs emanating from the customers (the depot). Constraints (7) establish the service time windows restriction. Constraints (6) and (7) also eliminate the formation of sub-tours. Constraints (8)–(11) keep track of the battery SoC at each node and make sure that it never falls below zero where M =  Q + (h + w.∑i V qi).max{dij}. Constraints (8) establish the battery SoC consistency if the vehicle travels from customer i to customer j without recharging en-route. Constraints (9) determine battery SoC at the arrival at customer j if the vehicle visits a recharging station after it has departed from customer i whereas constraints (10) check battery SoC at the arrival at a station if the battery is recharged en-route. Constraints (11) set the limits for battery SoC when the vehicle departs from a station. Constraints (12) allow positive battery SoC at the arrival of an EV at customer j only if that EV serves customer j. Constraints (13) keep track of the load of the vehicle throughout its journey. Constraints (14) ensure the non-negativity of the load on the vehicle and guarantee that the cargo capacity is not exceeded. Finally, constraints (15) and (16) define the binary decision variables.

2.2 Energy Consumption Function

The energy consumption of an EV that travels from one node to another depends on various factors such as its mass, shape, road gradient, acceleration, etc. By using tractive power requirements placed on the vehicle at the wheels, the power demand of a vehicle can be obtained using function (18) (Demir et al. 2012):

$$F = Ma + Mg\sin \theta + 0.5C_{a} \rho AV^{2} + MgC_{r} \cos \theta$$
(17)
$$P_{tract} (kW) = Fv/1000$$
(18)

where \(F\) shows the force function as calculated in (17), M is the total weight of the vehicle that consist of its curb weight and the cargo load (kg), a is the acceleration (m/s2), g is the gravitational constant, θ is road gradient, Cd is the coefficient of aerodynamic drag, ρ is the air density in (kg/m3), A is the frontal area, v is the speed (m/s), and Cr the coefficient of rolling resistance. The tractive power requirement can be converted to second-by-second engine power output (kW) as follows:

$$P = P_{tract} /\mu_{tf} + P_{acc}$$
(19)

where the vehicle’s drive train efficiency is shown by μtf and Pacc is the power demand associated with the accessory equipment such as air conditioning, audio system and cabin lights, which is neglected in this study. Then, the energy consumption in (kWh/km) can be calculated as follows:

$$E = P/v.$$
(20)

3 Solution Methodology

We attempt to solve small-size instances using a commercial solver. To solve the large-size instances, we develop an LNS method. LNS was introduced by Shaw (1998) and aims at improving an initial solution by using several destroy and repair mechanisms iteratively. In each iteration, some customers are removed from the solution and reinserted into the routes to create a new feasible solution. This procedure is repeated for a predetermined number of iterations. LNS and Adaptive LNS (ALNS) have been successfully applied to many VRP variants including EVRPs and EVRPTWs (Keskin and Çatay 2016, 2018; Goeke and Schneider 2015; Hiermann et al. 2016; Schiffer and Walther 2017; Keskin et al. 2019; Wen et al. 2016; Schiffer et al. 2018).

We create the initial solution using the insertion heuristic in (Keskin and Çatay 2016) where the cost of inserting a customer into a route is calculated as (h + wui)dik + (h + wuk)dkj(h + wui)dij. This insertion cost is calculated for all unvisited customers and the minimum cost insertion is performed by ensuring that the related constraints are not violated. If an EV runs out energy, a station may be inserted to make its tour energy feasible. We use First-Feasible Station Insertion algorithm which will be described in Sect. 3.3. If no customer can be feasibly inserted in the route, a new route is initialized, and the procedure is repeated until all customers are served.

Our LNS consist of customer removal and insertion mechanisms. In each iteration, a customer removal algorithm is applied on a feasible solution to remove a subset of customers from the routes. If any station is no longer needed in the partial solution, they are removed as well. Next, we apply a customer insertion algorithm that inserts all the customers removed to repair the solution in an attempt to obtain a new improved solution. Stations may be inserted to maintain the energy feasibility along the route. This procedure continues until the stopping criterion is satisfied, which is a limit on the number of iterations in our implementation. Note that the set of stations that can be visited between any two customers is reduced by using the dominance rules presented in (Bruglieri et al. 2016).

3.1 Customer Removal Operators

The current feasible solution is destroyed by removing γ customers. We use Worst-Consumption, Random Worst-Consumption, Shaw, Random Worst-Time, Random, Random Route Removal and Greedy Route Removal procedures of Keskin and Çatay (2016) by modifying them for the load dependent problem. The destroy operators are selected randomly.

  • Worst-Consumption algorithm selects the customers with high energy consumption imposed to the route by visiting that customer, which is calculated as (h + wui)dik + (h + wuk)dkj – (h + wui)dij that considers distance and cargo load effect in energy consumption.

  • Random Worst-Consumption sorts the customers with respect to the associated energy consumptions, considers a subset of σ × γ customers with highest costs to select γ customers randomly and remove them.

  • Shaw Removal removes similar customers with respect to their energy consumption, earliest service time, being in the same route, and their demand. It randomly selects customer i and calculates the relatedness measure as Ri j = ϕhidi j + ϕ|ei – ej| + ϕ3 lij + ϕ4 |Di – Dj| to find similar customers j. ϕ1 – ϕ4 are the Shaw parameters, li j =  –1 if \(i\) and \(j\) are in the same route, 1 otherwise. Small Ri j shows high similarity. So, using the non-decreasing order of the relatedness value with customer i, γ customers are removed from the solution.

  • Random Worst-Time algorithm is a version of Shaw Removal where ϕ1, ϕ3, ϕ4 are set equal to 0. The customers are sorted in the non-decreasing order of their relatedness values and γ customers are randomly removed from the subset of σ × γ customers with lowest relatedness values.

  • Random Removal mechanism randomly removes γ customers from the solution.

  • Random Route Removal algorithm randomly removes ω routes from the solution.

  • Greedy Route Removal mechanism sorts the routes in the non-decreasing order of the number of customers visited and removes ω routes which serve the least number of customers.

Note that the Route Removal algorithms attempt to reduce the fleet size.

3.2 Customer Insertion Operators

We adapt Random Greedy, Regret-2, Random Time-Based, Random Greedy with Noise Function, and Regret-2 with Noise Function repair algorithms in (Keskin and Çatay 2016; Demir et al. 2012) for our load-dependent case. In addition, we propose Exhaustive Greedy, Exhaustive Time-Based, Exhaustive Time-Based with Noise Function, and Random Time-Based with Noise Function mechanisms. The repair operators are selected randomly.

  • Random Greedy Insertion selects a customer and inserts it in the best position which leads to least increase of energy consumption.

  • Regret-2 Insertion try to avoid the higher costs in the subsequent iteration. It calculates the difference between the cost of the best insertion and the second-best insertion for all customers and selects the customer with the highest difference.

  • Random Time-Based Insertion calculates insertion costs similar to the Exhaustive Time-Based algorithm, however, at first an unassigned customer is selected randomly, and the algorithm inserts it in its best position.

  • Random Greedy Insertion with Noise Function is an extension of the Random Greedy Insertion mechanism with a degree of freedom. We use the same noise function presented in (Demir et al. 2012). The cost of insertion using the freedom degree is calculated as \(NewCost = ActualCost + \bar{d}\mu \epsilon\), where \(\bar{d}\) represents the maximum distance in the network, the noise parameter used for diversification is shown by \(\mu\), and \(\epsilon\) is a random number between [–1, 1].

  • Exhaustive Greedy Insertion considers all possible insertion positions for all not-inserted customers and selects the customer-position matching which leads to least increase of energy consumption.

  • Exhaustive Time-Based Insertion calculates the difference between the route duration after and before inserting a customer as the insertion cost. For all customers, the insertion costs in all possible positions are calculated and the customer with least insertion cost is selected.

Note that Regret-2 with Noise Function, Exhaustive Time-Based with Noise Function, Random Time-Based with Noise Function are extensions of Regret-2, Exhaustive Time-Based and Random Time-Based insertion mechanisms, respectively, using a similar noise function.

3.3 Station Removal and Insertion Operators

As we mentioned earlier, the unnecessary stations are removed from the partial solution obtained using the destroy operator. During the repair procedure, the insertion of a customer may not be feasible with respect to battery SoC. In that case, we first attempt to increase the recharge quantity if a station is visited prior to arriving to that customer. If the energy recharged at the station cannot be increased or no station is visited en-route we apply a station insertion operator to make the insertion feasible. We modified Best Station Insertion and Multiple Station Insertion operators from the literature (Keskin and Çatay 2016; Rastani et al. 2019) and applied them for the load dependent problem. Also, we develop First Feasible Station Insertion operator for this problem. Note that at most one station can be inserted between two consecutive customers in a route.

  • First-Feasible Station Insertion considers the first customer (or depot) where the vehicle arrives at with negative SoC and checks the insertion of a station in the preceding arcs backwards. The first station which makes the problem feasible is inserted.

  • Best-Station Insertion algorithm checks all possible stations in all possible arcs before the first customer (or depot) with negative SoC and inserts the best station in its best position.

  • Multiple-Station Insertion algorithm inserts multiple stations into a route when the insertion of a single station cannot make the route feasible. A station is inserted on the arc traversed immediately before arriving at the customer (or depot) with a negative SoC where the vehicle is recharged up to the maximum level allowed by the battery capacity and time windows restrictions of the succeeding customers. If the SoC is still negative at that customer or if the vehicle runs out of energy before reaching the inserted station, we attempt to insert another station prior to the last customer visited before traveling to the recently inserted station. This procedure is repeated until the route becomes energy feasible.

One of the First-Feasible Station Insertion and Best-Station Insertion algorithms is selected randomly. If it does not make the route feasible, we resort to Multiple-Station Insertion algorithm. Note that, we remove all stations in the solution after every β iterations and use Best-Station Insertion algorithm to insert stations to obtain an improved feasible solution.

4 Computational Study

We performed our computational tests using the dataset of Schneider et al. (2014) and Desaulniers et al. (2016) for the small-size and large-size instances, respectively. The small-size dataset consists of 36 instances involving 5, 10, and 15 customers, and the large-size dataset includes 56 instances generated based on the VRPTW instances of Solomon (1987). The instances are classified according to the geographic distribution of the customers: clustered (c-type), random (r-type), and half clustered half random (rc-type). Furthermore, in type-1 problems (i.e., subsets r1, c1, rc1) the planning horizon is shorter, and customers’ time windows are narrower compared to type-2 problems (i.e., r2, c2, rc2). In our study, we only consider type-1 problems from the large-size dataset as they better exhibit the influence of recharging decisions on route planning (Keskin and Çatay 2016, 2018; Rastani et al. 2019).

In order to deal with realistic vehicle cargo capacity and customer demands, we assumed an electric truck based on the specifications provided in (Demir et al. 2012). Since capacity of this vehicle is 3650 kg, we converted the demand quantities to reasonable weights by multiplying each by (3650/original capacity) in order to observe the effect of cargo weight on energy consumption. We assumed a drive train efficiency of 0.9 as EVs are more efficient than internal combustion engine vehicles. Furthermore, since the EVs in the original data are assumed to consume one unit of energy per unit distance/time travelled, we used Eq. (20) to calculate the actual energy consumption of an empty vehicle (i.e., 6350 kg) per unit distance and scaled it to h = 1. We used the same approach to determine the energy consumption w associated with unit load carried. We consider a flat network where road gradients are zero and we neglected vehicle acceleration.

The small-size instances were solved using Gurobi 9.0 with a 2-hour time limit. LNS was employed to solve both small- and large-size instances. LNS was coded in Python 3.7.1 and all runs were performed on an Intel Core (TM) i7-8700 processor with 3.20 GHz speed and 32 GB RAM. We performed five runs for each instance. The number of LNS iterations is set to 15,000 for the small-size instances and 25,000 for the large-size.

The results for small-size instances are provided in Table 1. Column “Gurobi” shows the results using Gurobi and “LNS” provides the results obtained by the proposed LNS algorithm. Column “Load Independent” reports the results for the case that does not consider the increased energy consumption associated with the cargo carried whereas column “Load Dependent” show the results for the case that considers the load on the vehicle. The comparison of these two columns exhibits the influence of the load on routing decisions. “#Veh”, “EC”, and “t” refer to the fleet size, energy consumption, and run time (in seconds), respectively. The results show that #Veh increases by one in four instances and by two in one instance (shown in bold). Notice that these increases are very significant considering the size of the fleet. Furthermore, we observe that EC values obtained in the load-independent case are far from the actual energy consumption found by taking into account the cargo load. Finally, we see that LNS finds (near-) optimal solutions in most of the instances while improving the solutions given by Gurobi in three instances with respect to #Veh and in four instances with respect to EC.

Table 1 Results of small-size instances obtained using Gurobi and LNS

We solved the large-size instances for both load-independent and load-dependent cases using LNS. The results are provided in Table 2. We observe that #Veh increases by one in fourteen instances (shown in bold) in the load-dependent case compared to the load-independent. Furthermore, in the remaining 15 instances, EC increases by 14.3% on the average. These results show the importance of considering cargo weight in route optimization.

Table 2 Results of large-size instances obtained using LNS

5 Conclusions and Future Research

In this study, we addressed EVRPTW with partial recharge by taking into account the energy consumption associated with the cargo carried on the vehicle. We formulated its 0–1 mixed integer linear programming model and used it to solve small-size instances. For solving the large-size instances, we proposed an LNS method. Our computational tests showed how the fleet size and/or energy consumption increase in comparison to the case where the load factor is neglected and revealed the importance of considering the weight of the vehicles for more accurate route planning. Future research on this topic may consider the road gradient as well. A loaded vehicle going uphill will consume significantly more energy. On the other hand, when it travels downhill it can recharge its battery with energy recuperation.