Explorer

The 'Explorer' search behavior takes inspiration from Dieussaert et al. [24], Benenson et al. [28], Levy et al. [29], Martens et al. [43], with some simplifications and additions. For example, variations in car speed or maximum search time are not considered, while variable agents' maximum walking distances and two measures for evaluating local parking availability are considered. An 'Explorer' agen<sup>t</sup> first tries to park as close as possible to its destination. If it fails, the agen<sup>t</sup> then tries to park in the first available parking spot it can find. Algorithm 1 presents pseudo-code which briefly describes the Explorer parking search behavior.

Agents move following the shortest network path to their destinations. An agen<sup>t</sup> starts searching for parking when it is within a maximum walking distance to its destination. An agent's maximum walking distance is a random value (*maxWalkDist*) within a range. The agents can detect only parking spaces within a visibility distance, which is defined by a model parameter. While searching, an agen<sup>t</sup> records the proportion of free-to-total parking spots it detects. The agen<sup>t</sup> decides to park in an available spot when (1) the current proportion falls below a critical ratio (*criticalRatio*); or (2) the difference between the proportion from the previous step and the current proportion is greater than a critical value (*criticalReduc*). Both (*criticalRatio*) and (*criticalReduc*) are model parameters.

If an agen<sup>t</sup> has completed the route to its destination without being able to park, it tries to park in the first available parking spot it detects searching first around the target building and then around other buildings. If it does not find available parking places around any building, the agen<sup>t</sup> returns to a campus' exit and leaves.


```
Input: destination, maxWalkDist, criticalRatio, criticalReduc
  f ound ← false compute shortest path to destination from current point while not at the end of path and f ound = false do
    if distance to destination ≤ maxWalkDist then
       pastratio ← ratio ratio ← local available parking spots / local total parking spots di f f ← ratio − pastratio if ratio > 0 and (ratio < criticalRatio or di f f > criticalReduc) then
         choose closest reachable parking spot and move to it f ound ← true end if
    end if
    compute next point in path to move to end while
  if f ound = true then
     park() else
    while more destinations to explore and f ound = false do
       destination ← next entrance of same building or another building compute shortest path to destination from current point while not at the end of path and f ound = false do
         get local available parking spots if there is available spots then
            choose closest reachable parking spot and move to it f ound ← true end if
         compute next point in path to move to end while
    end while
    if f ound = true then
       park() else
       leave the campus end if
  end if
```