## 3 Materials and Methods
### Proposed Adaptive Large Neighborhood Search
#### 3.2.1 Initial Solution
```
Input:_served customers, unserved customers, routes for each route in routes do if tank capacity violation on the route then \(node\leftarrow\textbf{Find}\) node where SoC is negative ifnode == route\([-1]\)then \(last\_customer\leftarrow\textbf{Get}\ last\_customer\) in route Remove last_customer else \(node\_index\leftarrow\textbf{Get}\ index Remove route[node\_index:-1]\) endif endif endfor Update served customers and unserved customers
```
**Algorithm 4**Tank-Capacity-Violation-Customer Removal

**Route Operators:** Route removal operators remove selected routes from the solution with certain approximations. This process is applied every \(K\) iteration instead of every iteration due to runtime cost. The number of routes to be removed \((W)\) is determined in the range of \(min(0.1 TR,\ 0.4 TR)\) depending on the total number of routes \((TR)\)[21]. Random-Route Removal and Greedy-Route Removal operators are used in the literature. Random-Route Removal removes \(W\) randomly selected routes from all routes in the solution [48]. Greedy-Route Removal removes the \(W\) routes with the lowest number of customers. Its purpose is to create balanced routes in terms of the number of customers and to prevent routes with a small number of customers from being included in the solution [17]. In addition to these operators, we propose two more operators focused on tardiness and infeasibility in this study. 1. **Max-Tardiness-Route Removal:** The proposed operator examines each of the routes in the solution and calculates their tardiness. It sums up the total tardiness on a route and keeps the tardiness on the route as costs. It removes the \(W\) routes with the highest tardiness from the solution. The pseudocode is given in Algorithm 6.



commonly used operators in the literature, namely Random-Customer Insertion, Greedy-Customer Insertion, and Regret-2-Customer Insertion. Random-Customer Insertion tries to include each customer in the unserved customer list by selecting a random route and a random location in the solution [49]. However, in this study, the route arrangements of the operators do not allow the routes to exceed the vehicle capacity. **Greedy-Customer Insertion** examines each customer in the unserved customer list in order and inserts the customer with the least insertion cost among all routes. **Regret-2-Customer Insertion** calculates the best insertion and second-best insertion costs for each customer in the unserved customer list. The cost between these two values is determined as the regret value. The customer with the highest regret value is selected and added to the appropriate location. The purpose of this operator is to reduce the cost increase in future insertions and to prevent the cost increase caused by greedy approaches [47]. In addition to these operators, we propose three more operators that minimize the distance cost while adapting to customer time windows. 1. **Best-Customer Insertion:** The proposed operator examines all routes for each customer in the unserved customer list. For all locations in the routes, the distance to the customer to be added multiplied by the earliest start time to service value is taken as the cost. If the current location is a station or a warehouse, the cost is calculated by taking the nearest customer's earliest start time to service value. This operator aims to ensure not only distance cost but also time window compatibility in the current route. The pseudocode is given in Algorithm 8.