or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

batch-operations.mdclient-configuration.mddata-model.mdindex.mdroute-optimization.md

batch-operations.mddocs/

0

# Batch Operations

1

2

Batch processing capabilities for optimizing multiple route optimization requests as long-running operations with Cloud Storage integration. This allows processing large numbers of optimization requests asynchronously with results stored in Google Cloud Storage.

3

4

## Capabilities

5

6

### batch_optimize_tours

7

8

Optimizes vehicle tours for multiple requests as a batch Long Running Operation (LRO). Input and output files are read from and written to Cloud Storage.

9

10

```python { .api }

11

def batch_optimize_tours(

12

request: BatchOptimizeToursRequest,

13

*,

14

retry: Optional[Retry] = gapic_v1.method.DEFAULT,

15

timeout: Union[float, object] = gapic_v1.method.DEFAULT,

16

metadata: Sequence[Tuple[str, Union[str, bytes]]] = ()

17

) -> operation.Operation: ...

18

```

19

20

**Parameters:**

21

- `request`: `BatchOptimizeToursRequest` - Batch optimization request with input/output configuration

22

- `retry`: Optional retry configuration for the request

23

- `timeout`: Optional timeout for the request (float seconds or object)

24

- `metadata`: Optional metadata sequence for the request

25

26

**Returns:** `operation.Operation` - Long Running Operation handle for monitoring progress

27

28

### Request/Response Types

29

30

#### BatchOptimizeToursRequest

31

32

```python { .api }

33

class BatchOptimizeToursRequest:

34

parent: str # Required. Format: "projects/{project-id}" or "projects/{project-id}/locations/{location-id}"

35

model_configs: Sequence[AsyncModelConfig] # Required. Input/output configuration for each model

36

37

class AsyncModelConfig:

38

display_name: str # Optional. Display name for this model config

39

input_config: InputConfig # Required. Input file configuration

40

output_config: OutputConfig # Required. Output file configuration

41

```

42

43

#### BatchOptimizeToursResponse

44

45

```python { .api }

46

class BatchOptimizeToursResponse:

47

# Empty message - results are written to Cloud Storage locations specified in the request

48

pass

49

```

50

51

#### BatchOptimizeToursMetadata

52

53

```python { .api }

54

class BatchOptimizeToursMetadata:

55

# Metadata for the batch optimization LRO

56

pass

57

```

58

59

## File I/O Configuration

60

61

### InputConfig

62

63

```python { .api }

64

class InputConfig:

65

gcs_source: Optional[GcsSource] # Google Cloud Storage source

66

data_format: Optional[DataFormat] # File format (JSON or PROTO_TEXT)

67

```

68

69

### OutputConfig

70

71

```python { .api }

72

class OutputConfig:

73

gcs_destination: Optional[GcsDestination] # Google Cloud Storage destination

74

data_format: Optional[DataFormat] # File format (JSON or PROTO_TEXT)

75

```

76

77

### GcsSource

78

79

```python { .api }

80

class GcsSource:

81

uri: str # Required. GCS URI (e.g., "gs://bucket/input.json")

82

```

83

84

### GcsDestination

85

86

```python { .api }

87

class GcsDestination:

88

uri: str # Required. GCS URI (e.g., "gs://bucket/output.json")

89

```

90

91

### DataFormat

92

93

```python { .api }

94

class DataFormat(enum.Enum):

95

DATA_FORMAT_UNSPECIFIED = 0 # Invalid value

96

JSON = 1 # JavaScript Object Notation

97

PROTO_TEXT = 2 # Protocol Buffers text format

98

```

99

100

## Usage Examples

101

102

### Basic Batch Operation

103

104

```python

105

from google.maps import routeoptimization_v1

106

107

client = routeoptimization_v1.RouteOptimizationClient()

108

109

# Create batch request with multiple input files

110

request = routeoptimization_v1.BatchOptimizeToursRequest(

111

parent="projects/my-project",

112

model_configs=[

113

routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(

114

display_name="Route Set 1",

115

input_config=routeoptimization_v1.InputConfig(

116

gcs_source=routeoptimization_v1.GcsSource(

117

uri="gs://my-bucket/input/route_set_1.json"

118

),

119

data_format=routeoptimization_v1.DataFormat.JSON

120

),

121

output_config=routeoptimization_v1.OutputConfig(

122

gcs_destination=routeoptimization_v1.GcsDestination(

123

uri="gs://my-bucket/output/route_set_1_result.json"

124

),

125

data_format=routeoptimization_v1.DataFormat.JSON

126

)

127

),

128

routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(

129

display_name="Route Set 2",

130

input_config=routeoptimization_v1.InputConfig(

131

gcs_source=routeoptimization_v1.GcsSource(

132

uri="gs://my-bucket/input/route_set_2.json"

133

),

134

data_format=routeoptimization_v1.DataFormat.JSON

135

),

136

output_config=routeoptimization_v1.OutputConfig(

137

gcs_destination=routeoptimization_v1.GcsDestination(

138

uri="gs://my-bucket/output/route_set_2_result.json"

139

),

140

data_format=routeoptimization_v1.DataFormat.JSON

141

)

142

)

143

]

144

)

145

146

# Start batch operation

147

operation = client.batch_optimize_tours(request=request)

148

149

print(f"Batch operation started: {operation.name}")

150

```

151

152

### Monitoring Batch Operation

153

154

```python

155

from google.maps import routeoptimization_v1

156

import time

157

158

client = routeoptimization_v1.RouteOptimizationClient()

159

160

# Start batch operation (from previous example)

161

operation = client.batch_optimize_tours(request=request)

162

163

# Monitor progress

164

while not operation.done():

165

print("Batch optimization in progress...")

166

time.sleep(30) # Wait 30 seconds

167

operation = client.get_operation(name=operation.name)

168

169

# Check results

170

if operation.error:

171

print(f"Batch operation failed: {operation.error}")

172

else:

173

print("Batch optimization completed successfully")

174

print("Results are available in the specified GCS output locations")

175

176

# Access results from Cloud Storage

177

# (Results are written to the GCS URIs specified in output_config)

178

```

179

180

### Multiple File Formats

181

182

```python

183

from google.maps import routeoptimization_v1

184

185

client = routeoptimization_v1.RouteOptimizationClient()

186

187

# Process different file formats

188

request = routeoptimization_v1.BatchOptimizeToursRequest(

189

parent="projects/my-project",

190

model_configs=[

191

# JSON input/output

192

routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(

193

display_name="JSON Processing",

194

input_config=routeoptimization_v1.InputConfig(

195

gcs_source=routeoptimization_v1.GcsSource(

196

uri="gs://my-bucket/input.json"

197

),

198

data_format=routeoptimization_v1.DataFormat.JSON

199

),

200

output_config=routeoptimization_v1.OutputConfig(

201

gcs_destination=routeoptimization_v1.GcsDestination(

202

uri="gs://my-bucket/output.json"

203

),

204

data_format=routeoptimization_v1.DataFormat.JSON

205

)

206

),

207

# Protocol Buffer text format

208

routeoptimization_v1.BatchOptimizeToursRequest.AsyncModelConfig(

209

display_name="Proto Text Processing",

210

input_config=routeoptimization_v1.InputConfig(

211

gcs_source=routeoptimization_v1.GcsSource(

212

uri="gs://my-bucket/input.pbtxt"

213

),

214

data_format=routeoptimization_v1.DataFormat.PROTO_TEXT

215

),

216

output_config=routeoptimization_v1.OutputConfig(

217

gcs_destination=routeoptimization_v1.GcsDestination(

218

uri="gs://my-bucket/output.pbtxt"

219

),

220

data_format=routeoptimization_v1.DataFormat.PROTO_TEXT

221

)

222

)

223

]

224

)

225

226

operation = client.batch_optimize_tours(request=request)

227

```

228

229

### Input File Format

230

231

Each input file should contain a single `OptimizeToursRequest` in the specified format:

232

233

**JSON format example:**

234

```json

235

{

236

"parent": "projects/my-project",

237

"model": {

238

"shipments": [

239

{

240

"displayName": "Package 1",

241

"deliveries": [

242

{

243

"location": {

244

"latLng": {

245

"latitude": 37.7749,

246

"longitude": -122.4194

247

}

248

}

249

}

250

]

251

}

252

],

253

"vehicles": [

254

{

255

"displayName": "Vehicle 1",

256

"startLocation": {

257

"latLng": {

258

"latitude": 37.7649,

259

"longitude": -122.4294

260

}

261

}

262

}

263

]

264

}

265

}

266

```

267

268

### Output File Format

269

270

Each output file will contain a single `OptimizeToursResponse` with the optimized routes and metrics in the requested format.