GuidesAPI Reference
Guides

Customize pedestrian walking speed

Customize pedestrian walking speed

When planning tours for pedestrians, walking speed is a critical factor to consider. It affects tour duration and job assignments, making it essential to model speeds accurately.

The pedestrian fleet profile includes a speed parameter that enables accurate speed modeling. The default value is 1.0 m/s, representing an average walking pace.

You can adjust this value between 0.5 and 2.0 m/s to reflect various factors, such as:

  • Heavy loads: reduce the speed
  • Terrain or weather conditions: adjust accordingly
  • Walker fitness levels: increase or decrease the speed

You can configure the speed parameter in the pedestrian profile options, as shown in the following example:

{
  "fleet": {
    "profiles": [
      {
        "type": "pedestrian",
        "name": "pedestrian",
        "options": {
          "speed": 1.2
        }
      }
    ]
  }
}
📘

Note

  • The speed parameter is available only for the pedestrian profile
  • This parameter is optional. If omitted, the optimization algorithm uses the default speed of 1.0 m/s
  • The speed parameter sets the actual walking pace and directly affects walking duration calculations. This differs from speedFactor (available for car, truck, and scooter profiles), which applies a percentage adjustment to all speeds for a vehicle type.

Analyze the impact of walking speed on tour duration

The following sections provide a progressive analysis of how the speed parameter value directly impacts the tour completion time by testing a single problem across the full speed range (0.5 to 2 m/s), while maintaining all other parameters constant to isolate and highlight the speed effect.

Problem setup

The sample problem demonstrates a use case in which a pedestrian courier has to complete 15 delivery jobs with consistent 240-second service time distributed across Berlin city center within a 4.5 hour window. The courier's capacity is set to 15 to accommodate all jobs and the initial speed value is set to the slowest valid value of 0.5.

📘

Note

To demonstrate the impact of walking speed, this problem is tested repeatedly with speed values ranging from 0.5 to 2.0 m/s in 0.1 m/s increments.

The following section provides the full problem JSON:

Click to expand/collapse the sample JSON
{
  "fleet": {
    "types": [
      {
        "id": "courier_1",
        "profile": "pedestrian",
        "costs": {
          "fixed": 10.0,
          "distance": 0.001,
          "time": 0.002
        },
        "shifts": [
          {
            "start": {
              "time": "2024-06-24T08:00:00Z",
              "location": {
                "lat": 52.53097,
                "lng": 13.38504
              }
            },
            "end": {
              "time": "2024-06-24T12:30:00Z",
              "location": {
                "lat": 52.53097,
                "lng": 13.38504
              }
            }
          }
        ],
        "capacity": [
          15
        ],
        "amount": 1
      }
    ],
    "profiles": [
      {
        "type": "pedestrian",
        "name": "pedestrian",
        "options": {
          "speed": 0.5
        }
      }
    ]
  },
  "plan": {
    "jobs": [
      {
        "id": "Job_1",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53148,
                    "lng": 13.39665
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_2",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.5332,
                    "lng": 13.39519
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_3",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53306,
                    "lng": 13.3902
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_4",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53436,
                    "lng": 13.38273
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_5",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53178,
                    "lng": 13.39206
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_6",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.52756,
                    "lng": 13.38836
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_7",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.528909,
                    "lng": 13.385381
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_8",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.52716,
                    "lng": 13.38202
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_9",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53077,
                    "lng": 13.39388
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_10",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.52871,
                    "lng": 13.39338
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_11",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53011,
                    "lng": 13.38086
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_12",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53403,
                    "lng": 13.38023
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_13",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.53248,
                    "lng": 13.3788
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_14",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.531,
                    "lng": 13.37755
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      },
      {
        "id": "Job_15",
        "tasks": {
          "deliveries": [
            {
              "places": [
                {
                  "location": {
                    "lat": 52.52978,
                    "lng": 13.39248
                  },
                  "duration": 240
                }
              ],
              "demand": [
                1
              ]
            }
          ]
        }
      }
    ]
  }
}

Initial solution (speed: 0.5 m/s)

This solution establishes a baseline with the slowest walking speed of 0.5 m/s. At this pace, the courier successfully completes all 15 jobs in 4 hours and 26 minutes, just within the 4.5-hour shift window. The subsequent speed increases will show proportional time reductions. The following figure shows the visual breakdown of the baseline solution:

The baseline solution showing the tour statistics for the 0.5 m/s walking speed

The following section provides the full solution JSON:

Click to expand/collapse the sample JSON
{
  "statistic": {
    "cost": 48.152,
    "distance": 6116,
    "duration": 16018,
    "times": {
      "driving": 12418,
      "serving": 3600,
      "waiting": 0,
      "stopping": 0,
      "break": 0
    }
  },
  "tours": [
    {
      "vehicleId": "courier_1_1",
      "typeId": "courier_1",
      "stops": [
        {
          "time": {
            "arrival": "2024-06-24T08:00:00Z",
            "departure": "2024-06-24T08:00:00Z"
          },
          "load": [
            15
          ],
          "activities": [
            {
              "jobId": "departure",
              "type": "departure",
              "location": {
                "lat": 52.53097,
                "lng": 13.38504
              },
              "time": {
                "start": "2024-06-24T08:00:00Z",
                "end": "2024-06-24T08:00:00Z"
              }
            }
          ],
          "location": {
            "lat": 52.53097,
            "lng": 13.38504
          },
          "distance": 0
        },
        {
          "time": {
            "arrival": "2024-06-24T08:10:57Z",
            "departure": "2024-06-24T08:14:57Z"
          },
          "load": [
            14
          ],
          "activities": [
            {
              "jobId": "Job_11",
              "type": "delivery",
              "location": {
                "lat": 52.53011,
                "lng": 13.38086
              },
              "time": {
                "start": "2024-06-24T08:10:57Z",
                "end": "2024-06-24T08:14:57Z"
              }
            }
          ],
          "location": {
            "lat": 52.53011,
            "lng": 13.38086
          },
          "distance": 324
        },
        {
          "time": {
            "arrival": "2024-06-24T08:25:21Z",
            "departure": "2024-06-24T08:29:21Z"
          },
          "load": [
            13
          ],
          "activities": [
            {
              "jobId": "Job_14",
              "type": "delivery",
              "location": {
                "lat": 52.531,
                "lng": 13.37755
              },
              "time": {
                "start": "2024-06-24T08:25:21Z",
                "end": "2024-06-24T08:29:21Z"
              }
            }
          ],
          "location": {
            "lat": 52.531,
            "lng": 13.37755
          },
          "distance": 636
        },
        {
          "time": {
            "arrival": "2024-06-24T08:48:12Z",
            "departure": "2024-06-24T08:52:12Z"
          },
          "load": [
            12
          ],
          "activities": [
            {
              "jobId": "Job_8",
              "type": "delivery",
              "location": {
                "lat": 52.52716,
                "lng": 13.38202
              },
              "time": {
                "start": "2024-06-24T08:48:12Z",
                "end": "2024-06-24T08:52:12Z"
              }
            }
          ],
          "location": {
            "lat": 52.52716,
            "lng": 13.38202
          },
          "distance": 1196
        },
        {
          "time": {
            "arrival": "2024-06-24T09:07:18Z",
            "departure": "2024-06-24T09:11:18Z"
          },
          "load": [
            11
          ],
          "activities": [
            {
              "jobId": "Job_7",
              "type": "delivery",
              "location": {
                "lat": 52.528909,
                "lng": 13.385381
              },
              "time": {
                "start": "2024-06-24T09:07:18Z",
                "end": "2024-06-24T09:11:18Z"
              }
            }
          ],
          "location": {
            "lat": 52.528909,
            "lng": 13.385381
          },
          "distance": 1644
        },
        {
          "time": {
            "arrival": "2024-06-24T09:22:07Z",
            "departure": "2024-06-24T09:26:07Z"
          },
          "load": [
            10
          ],
          "activities": [
            {
              "jobId": "Job_6",
              "type": "delivery",
              "location": {
                "lat": 52.52756,
                "lng": 13.38836
              },
              "time": {
                "start": "2024-06-24T09:22:07Z",
                "end": "2024-06-24T09:26:07Z"
              }
            }
          ],
          "location": {
            "lat": 52.52756,
            "lng": 13.38836
          },
          "distance": 1963
        },
        {
          "time": {
            "arrival": "2024-06-24T09:40:28Z",
            "departure": "2024-06-24T09:44:28Z"
          },
          "load": [
            9
          ],
          "activities": [
            {
              "jobId": "Job_10",
              "type": "delivery",
              "location": {
                "lat": 52.52871,
                "lng": 13.39338
              },
              "time": {
                "start": "2024-06-24T09:40:28Z",
                "end": "2024-06-24T09:44:28Z"
              }
            }
          ],
          "location": {
            "lat": 52.52871,
            "lng": 13.39338
          },
          "distance": 2388
        },
        {
          "time": {
            "arrival": "2024-06-24T09:48:50Z",
            "departure": "2024-06-24T09:52:50Z"
          },
          "load": [
            8
          ],
          "activities": [
            {
              "jobId": "Job_15",
              "type": "delivery",
              "location": {
                "lat": 52.52978,
                "lng": 13.39248
              },
              "time": {
                "start": "2024-06-24T09:48:50Z",
                "end": "2024-06-24T09:52:50Z"
              }
            }
          ],
          "location": {
            "lat": 52.52978,
            "lng": 13.39248
          },
          "distance": 2519
        },
        {
          "time": {
            "arrival": "2024-06-24T09:59:40Z",
            "departure": "2024-06-24T10:03:40Z"
          },
          "load": [
            7
          ],
          "activities": [
            {
              "jobId": "Job_9",
              "type": "delivery",
              "location": {
                "lat": 52.53077,
                "lng": 13.39388
              },
              "time": {
                "start": "2024-06-24T09:59:40Z",
                "end": "2024-06-24T10:03:40Z"
              }
            }
          ],
          "location": {
            "lat": 52.53077,
            "lng": 13.39388
          },
          "distance": 2724
        },
        {
          "time": {
            "arrival": "2024-06-24T10:15:55Z",
            "departure": "2024-06-24T10:19:55Z"
          },
          "load": [
            6
          ],
          "activities": [
            {
              "jobId": "Job_1",
              "type": "delivery",
              "location": {
                "lat": 52.53148,
                "lng": 13.39665
              },
              "time": {
                "start": "2024-06-24T10:15:55Z",
                "end": "2024-06-24T10:19:55Z"
              }
            }
          ],
          "location": {
            "lat": 52.53148,
            "lng": 13.39665
          },
          "distance": 3081
        },
        {
          "time": {
            "arrival": "2024-06-24T10:27:34Z",
            "departure": "2024-06-24T10:31:34Z"
          },
          "load": [
            5
          ],
          "activities": [
            {
              "jobId": "Job_2",
              "type": "delivery",
              "location": {
                "lat": 52.5332,
                "lng": 13.39519
              },
              "time": {
                "start": "2024-06-24T10:27:34Z",
                "end": "2024-06-24T10:31:34Z"
              }
            }
          ],
          "location": {
            "lat": 52.5332,
            "lng": 13.39519
          },
          "distance": 3306
        },
        {
          "time": {
            "arrival": "2024-06-24T10:41:41Z",
            "departure": "2024-06-24T10:45:41Z"
          },
          "load": [
            4
          ],
          "activities": [
            {
              "jobId": "Job_5",
              "type": "delivery",
              "location": {
                "lat": 52.53178,
                "lng": 13.39206
              },
              "time": {
                "start": "2024-06-24T10:41:41Z",
                "end": "2024-06-24T10:45:41Z"
              }
            }
          ],
          "location": {
            "lat": 52.53178,
            "lng": 13.39206
          },
          "distance": 3601
        },
        {
          "time": {
            "arrival": "2024-06-24T10:58:53Z",
            "departure": "2024-06-24T11:02:53Z"
          },
          "load": [
            3
          ],
          "activities": [
            {
              "jobId": "Job_3",
              "type": "delivery",
              "location": {
                "lat": 52.53306,
                "lng": 13.3902
              },
              "time": {
                "start": "2024-06-24T10:58:53Z",
                "end": "2024-06-24T11:02:53Z"
              }
            }
          ],
          "location": {
            "lat": 52.53306,
            "lng": 13.3902
          },
          "distance": 3989
        },
        {
          "time": {
            "arrival": "2024-06-24T11:25:20Z",
            "departure": "2024-06-24T11:29:20Z"
          },
          "load": [
            2
          ],
          "activities": [
            {
              "jobId": "Job_4",
              "type": "delivery",
              "location": {
                "lat": 52.53436,
                "lng": 13.38273
              },
              "time": {
                "start": "2024-06-24T11:25:20Z",
                "end": "2024-06-24T11:29:20Z"
              }
            }
          ],
          "location": {
            "lat": 52.53436,
            "lng": 13.38273
          },
          "distance": 4651
        },
        {
          "time": {
            "arrival": "2024-06-24T11:48:23Z",
            "departure": "2024-06-24T11:52:23Z"
          },
          "load": [
            1
          ],
          "activities": [
            {
              "jobId": "Job_12",
              "type": "delivery",
              "location": {
                "lat": 52.53403,
                "lng": 13.38023
              },
              "time": {
                "start": "2024-06-24T11:48:23Z",
                "end": "2024-06-24T11:52:23Z"
              }
            }
          ],
          "location": {
            "lat": 52.53403,
            "lng": 13.38023
          },
          "distance": 5218
        },
        {
          "time": {
            "arrival": "2024-06-24T12:03:19Z",
            "departure": "2024-06-24T12:07:19Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "Job_13",
              "type": "delivery",
              "location": {
                "lat": 52.53248,
                "lng": 13.3788
              },
              "time": {
                "start": "2024-06-24T12:03:19Z",
                "end": "2024-06-24T12:07:19Z"
              }
            }
          ],
          "location": {
            "lat": 52.53248,
            "lng": 13.3788
          },
          "distance": 5536
        },
        {
          "time": {
            "arrival": "2024-06-24T12:26:58Z",
            "departure": "2024-06-24T12:26:58Z"
          },
          "load": [
            0
          ],
          "activities": [
            {
              "jobId": "arrival",
              "type": "arrival",
              "location": {
                "lat": 52.53097,
                "lng": 13.38504
              },
              "time": {
                "start": "2024-06-24T12:26:58Z",
                "end": "2024-06-24T12:26:58Z"
              }
            }
          ],
          "location": {
            "lat": 52.53097,
            "lng": 13.38504
          },
          "distance": 6116
        }
      ],
      "statistic": {
        "cost": 48.152,
        "distance": 6116,
        "duration": 16018,
        "times": {
          "driving": 12418,
          "serving": 3600,
          "waiting": 0,
          "stopping": 0,
          "break": 0
        }
      },
      "shiftIndex": 0
    }
  ]
}

Speed impact analysis

Based on the previously introduced problem, this analysis demonstrates the linear relationship between speed and tour duration when the speed parameter value is incrementally increased by 0.1 m/s, within the following sample practical speed ranges:

  • 0.5-0.7 m/s: Suitable for heavy loads, difficult terrain, or adverse weather conditions
  • 0.8-1.0 m/s: Represents typical walking pace with standard packages (1.0 m/s is the default)
  • 1.1-1.5 m/s: Appropriate for experienced walkers with lighter loads on favorable terrain
  • 1.6-2.0 m/s: Express deliveries or minimal package loads

The following table shows how tour duration changes across the full range of walking speeds for the previously demonstrated problem:

Walking Speed (m/s)Tour DurationNotes
0.54 h 26 mHeavy loads, difficult conditions
0.63 h 52 m
0.73 h 28 m
0.83 h 10 m
0.92 h 56 m
1.02 h 45 mDefault/average pace
1.12 h 35 m
1.22 h 27 m
1.32 h 21 m
1.42 h 15 m
1.52 h 10 mFast pace/experienced walker
1.62 h 6 m
1.72 h 3 m
1.81 h 59 m
1.91 h 56 m
2.01 h 54 mExpress delivery

The following chart provides a visual comparison of tour durations for different speed configurations, illustrating the considerable time savings achievable with faster walking speeds:

Visual comparison of the relation between pedestrian speed and tour duration based on a sample use case

The data shows that doubling the speed from 1.0 to 2.0 m/s reduces tour duration by approximately 31% (from 2h 45m to 1h 54m). At the slowest speed (0.5 m/s), the courier barely completes all deliveries within the 4.5-hour shift window, while at maximum speed (2.0 m/s), the same route takes less than half the time. This demonstrates the critical importance of selecting realistic speed values that match actual field conditions rather than optimistic estimates.

Impact of shift constraints on job assignments when pedestrian speed varies

When pedestrian speed varies, shift duration becomes a critical factor in determining job feasibility. To demonstrate this relationship, consider the following constrained use case where the shift duration was reduced from 4.5 to 3 hours.

Minimum Walking Speed Threshold

The following table shows the minimum walking speed required to complete all jobs:

Walking Speed (m/s)Jobs CompletedStatus
0.510/15Speed too low
0.612/15Speed too low
0.713/15Speed too low
0.814/15Speed too low
0.915/15Minimum speed for all jobs

In this sample scenario, a walking speed of 0.9 m/s is the minimum required to complete all jobs within the reduced shift duration. If the courier walks slower than this threshold, either the shift must be longer, you need to assign fewer jobs, or make additional couriers available to complete those jobs.

Next steps