Data Generation Manual
1. Introduction
1.1 Purpose of this manual
Demonstrates Optimal Shared Mobility Deployment's ability to upload files and create data for API data registration.
1.2 Prerequisites
- Have a FUJITSU Research Portal account
1.3 Sample Data
The demo simulation results and the data used in the demo simulation are published to the demo application. Please use this data when creating data.
- Demo Simulation Results
You can view the demo simulation results from the top screen.
- List of sample data
Sample data used in the demo simulation is available. Click theUpload Data Files
button to view the data list.
2. Procedure
2.1 Creating Data Using Data Generation Tools
From the FUJITSU Research Portal, select Technology Browser - > Optimal Shared Mobility Deployment. You can use this service by clicking the Try Data Generation Tools button at the bottom of the page. The top screen of Optimal Shared Mobility Deployment is shown below.
2.1.1 Map Data Generation: OSM Converter
OSM Converter generates map data at any point.
- Enter the city you want in Geocoding
- Adjust the parameters as necessary.
- Press the Generate button
- Press the Download button
2.1.2 OD Data Generation
You can generate data on people's movements by setting the movement start and destination locations.
Method 1: Manual Registration Using OD Builder
- Open OD Builder
- Register your starting point and destination on the map
- Adjust the parameters as necessary
- Press the Download button
Method 2: Automatic generation using OD Generator
- Open Synthetic OD Generator
- Set the number of people with the slider
- Adjust the parameters as necessary
- Press the Download button
2.1.3 Shared e-Scooter Station Settings
Method 1 Manual Registration Using Stations Builder
- Open Stations Builder
- Register station location on map
- Adjust the parameters as necessary.
- Press the Download button
Method 2 Automatic generation using Stations Generator
- Opens the Synthetic Stations Generator
- Set the number of stations with the slider
- Adjust the parameters as necessary.
- Press the Download button
2.1.4 model.json Settings
This is a configuration file for when you want to specify an arbitrary selection probability as a human behavior selection model.
- Open model.json Generator
- Adjust the parameters as necessary.
- Press the Download button
2.1.5 precondition.json Settings
Generates the JSON data needed to upload on the demo app (web app) and perform digital Rehearsal.
- Open precondition.json Builder
- Adjust the parameters as necessary.
- Press the Download button
{
"USECASE":"dynamic-discount"
"ASSIMIL_PERSON_FILE":"simdata-your-simdataId-of-od/od.csv.gz"
"SOARS_STATIONS_FILE":"simdata-your-simdataId-of-stations-csv/stations.csv"
"SUMO_NET_FILE":"simdata-your-simdataId-of-net-file/map.net.xml.gz"
"DMM_MODEL_INFO_FILE":"simdata-your-simdataId-of-model-file/model.json"
"MAP_CENTER_LATITUDE":"35.444395"
"MAP_CENTER_LONGITUDE":"139.636773"
"CURRENCY_SYMBOL":"¥"
"CURRENCY_RATE":"189.1800"
"START_HOUR":"10"
"END_HOUR":"12"
}
2.1.6 road-closure.csv road-pricing.csv Settings
road-closure.csv
A CSV file that sets the roads to be closed.
road-pricing.csv
A CSV file that sets the roads to be charged.
- Open closure.csv road-pricing.csv Generator
- Adjust the parameters as necessary.
- Press the Download button
2.2 Use Case: Dynamic Discount
Overview
It is a use case where people have the option of driving, walking, or scooter to get to a destination, and each person chooses the means of transportation depending on the cost and time, and then rehearses digitally. When renting an scooter, discounts based on the status of the scooter station will impact costs and change people's transportation choices. That way, you can see what the changes to scooter utilization and user fee revenue are. You can also modify the initial deployment of the scooter.
Digital Rehearsal Input/Output
Digital rehearsal input/output is defined for each use case. Dynamic Discount provides input files in the following formats: The output is in the "File output as a result of digital rehearsal" format described below.
Input Files Required for Digital Rehearsal
(Common)
- stations.csv
- map.net.xml.gz
- od.csv.gz
- (model.json)
map.net.xml.gz
and od.csv.gz
must be gzip
.
(WebApp)
- precondition.json
(API)
- condition.json
- env.json
map.net.xml.gz
Net file used by SUMO. For the creation method, please refer to 2.1.1 Map Data Generation: OSM Converter or 2.6 Map Data Registration Procedure.
stations.csv
name,zone,latitude,longitude,initial
bay1,a,35.55934337167842,139.63850582201087,3
bay2,a,35.580495,139.6351646,3
...
A CSV file that sets the initial placement of the scooter stations.
Item | Example value | Description |
---|---|---|
name | bay0 | The name of the station. |
zone | b | The zone to which the station belongs. You can only move between stations in the same zone. |
latitude | 35.58 | The latitude of the station. |
longitude | 139.64 | Longitude of the station. |
initial | 2 | Initial deployment number of scooters. |
od.csv.gz
A file that specifies a person's travel as a point of departure and arrival.
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat,household_carvan,sex_type,age_type
person-0,05:00:22,139.582230,35.436874,139.558556,35.424722,3,1,3
...
Item | Example value | Description |
---|---|---|
oid | person-0 | Required. Must be a unique ID in the OD. |
timestamp | 05:00:00 | Required. ISO_LOCAL_TIME format. |
origin_lon | 139.582230 | Required. Longitude of the origin. |
origin_lat | 35.436874 | Required. Latitude of the point of departure. |
dest_lon | 139.558556 | Required. Longitude of the place of arrival. |
dest_lat | 35.424722 | Required. Latitude of the place of arrival. |
age | 52 | Optional, Actual age. |
gender_type | 1 | Optional. Sex. 1 for women and 0 for others. |
driving_license | 1 | Optional. Does the person have a driver's license? 1 if the person has one, 0 otherwise. |
car_ownership | 2 | Optional. Household car retention status. 0 if not held, 1 if less than one unit per adult is held, and 2 if more than one unit per adult is held. |
household_carvan | 1 | Optional. Specifies the number of private cars. Valid only when car_ownership is not specified. |
sex_type | 1 | Optional. 1 is male. 2 is female. Valid only when gender_type is not specified. |
age_type | 1 | Optional. 1: 0 to 15 years, 2: 16 to 24 years, 3: 25 to 34 years, 4: 35 to 49 years, 5: 50 to 64 years, 6: 65 years and older. Valid only when age is not specified. |
If you omit an item, omit it for all lines. If there are only required items, the format is as follows:
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat
person-0,05:00:22,139.582230,35.436874,139.558556,35.424722
...
model.json
This file is for the case where you want to specify an arbitrary selection probability as a human behavior selection model.
Fixed Probability
{
"rulebase_model": "fixed",
"fixed_weights": {
"CAR": 1,
"WALKING": 1,
"CYCLING": 1
}
}
For specifying the selection probability (weight) of each means of transportation.
Key | Value Example | Description | |
---|---|---|---|
rulebase_model | "fixed" | fixed probability | |
fixed_weights | CAR | 1 | car weight. If not specified, 0 is assumed. |
WALKING | 1 | pedestrian weight. If not specified, 0 is assumed. |
|
CYCLING | 1 | escooter weight. If not specified, 0 is assumed. |
- To select only
escooter
:"fixed_weights": {"CYCLING": 1}
- To select only
car
:"fixed_weights": {"CAR": 1}
- To select only
pedestrian
:"fixed_weights": {"WALKING": 1}
Random
{"rulebase_model": "random"}
For randomizing the selection probability of each means of transportation.
Specifying Time and Cost Weight Factors
{
"rulebase_model": "linear",
"w_time": 1,
"w_cost": 1
}
For specifying time and cost weights for each transportation choice.
Key | Value Example | Description |
---|---|---|
rulebase_model | "linear" | |
w_time | 1 | Time weight. If not specified, 1 is assumed. |
w_cost | 1 | Cost weight. If not specified, 1 is assumed. |
- To choose transportation based on time alone (i.e., a mean of transportation with a shorter duration),
"w_time": 1, "w_cost": 0
- To choose transportation based on cost alone (i.e., less expensive transportation),
"w_time": 0, "w_cost": 1
precondition.json
{
"USECASE":"dynamic-discount",
"ASSIMIL_PERSON_FILE":"simdata-your-simdataId-of-od/od.csv.gz",
"SOARS_STATIONS_FILE":"simdata-your-simdataId-of-stations-csv/stations.csv",
"SUMO_NET_FILE":"simdata-your-simdataId-of-net-file/map.net.xml.gz",
"DMM_MODEL_INFO_FILE":"simdata-your-simdataId-of-model-file/model.json",
"MAP_CENTER_LATITUDE":"35.444395",
"MAP_CENTER_LONGITUDE":"139.636773",
"CURRENCY_SYMBOL":"¥",
"CURRENCY_RATE":"189.1800",
"START_HOUR":"10",
"END_HOUR":"12"
}
condition.json
{
"name":"09/11_14:59:08",
"seed":0,
"start":5,
"end":6,
"usecases":{"batteryBased":{"enabled":true,"discount":10,"lowBatteryPercent":15},"numberBased":{"enabled":true,"discount":25,"scooterNumberThreshold":1}},
"usecase":"dynamic-discount",
"vtypes":{"car":true,"pedestrian":true,"escooter":true},
"dmmmodel":{},
"currencySymbol":"¥","createdAt":"2023-09-11T05:59:18.403Z","mapcenter":[139.645,35.584],
"stations":[{"id":"bay0","initial":2,"pos":[35.438606,139.642578],"zone":"b"},{"id":"bay1","initial":0,"pos":[35.449786,139.642196],"zone":"a"},{"id":"bay2","initial":1,"pos":[35.440275,139.645568],"zone":"a"},...]
}
A JSON-formatted file that registers the conditions under which the digital rehearsal was performed. Refer to the above for the property names. The sample web server uses this file to display digital rehearsal results.
env.json
{
"USECASE":"dynamic-discount",
"CONDITION_JSON_ID":"simdata-d2d0e1b3-7f78-4939-affc-939d712b15d7",
"ASSIMIL_PERSON_FILE":"simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz",
"ASSIMIL_ALIGNER_MAX_STEPS":"3600",
"ASSIMIL_ALIGNER_START_TIME":"5",
"SOARS_STATIONS_FILE":"simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv",
"SUMO_NET_FILE":"simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz",
"DMM_MODEL_INFO_FILE":"simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json",
"RANDOM_SEED":"0",
"CURRENCY_RATE":"1.0",
"VTYPES":"car,pedestrian,escooter",
"USECASE_BATTERY_ENABLED":"false",
"USECASE_BATTERY_DISCOUNT":"0",
"USECASE_BATTERY_LOW_PERCENT":"15",
"USECASE_NUMBER_ENABLED":"false",
"USECASE_NUMBER_DISCOUNT":"0",
"USECASE_NUMBER_THRESHOLD":"1"
}
A JSON-formatted file that contains information that is input to the digital rehearsal when the digital rehearsal is executed. Specify this env.json to indicate the execution of the digital rehearsal.
Key | Value example | Description |
---|---|---|
USECASE | "dynamic-discount" | Specifies the use case for the digital rehearsal to be performed. |
CONDITION_JSON_ID | "simdata-d2d0e1b3-7f78-4939-affc-939d712b15d7" | Specifies the simdataId of "condition.json". |
ASSIMIL_PERSON_FILE | "simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz" | Specifies that the registered OD file will be used for digital rehearsal. Specifies in simdataId/filename . If not specified, the sample OD file is used. |
ASSIMIL_ALIGNER_MAX_STEPS | "3600" | Specifies the time (in seconds) for the digital rehearsal. An example is an hour. |
ASSIMIL_ALIGNER_START_TIME | "5" | Specifies the start time of the digital rehearsal (in hours). Digitally rehearses the OD of the timestamp for the period of ASSIMIL_ALIGNER_MAX_STEPS after the start time. |
SOARS_STATIONS_FILE | "simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv" | Specifies the registered initial deployment file of the scooter for the station. Specifies in simdataId/filename . |
SUMO_NET_FILE | "simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz" | Specify this to execute digital rehearsal using a registered SUMO net file. Specifies in simdataId/filename . If not specified, the sample net file is used. |
DMM_MODEL_INFO_FILE | "simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json" | Specify this to execute digital rehearsal using a registered behavior selection model file. Specifies in simdataId/filename . If not specified, the behavior selection model learned from the London data is used. |
RANDOM_SEED | "0" | Sets the seed for the random number. The same seed does not mean the same digital rehearsal results. |
CURRENCY_RATE | "1.0" | Set the currency rate. It is based on £, so if you want to convert it to yen, you can specify 186.0 for example. |
VTYPES | "car,pedestrian,escooter" | Specifies the transportation options for digital rehearsals. You can configure car, pedestrian, escooter. |
USECASE_BATTERY_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with low battery scooters. |
USECASE_BATTERY_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_BATTERY_LOW_PERCENT | "15" | Specifies the amount of battery remaining to be considered low (%). |
USECASE_NUMBER_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with fewer scooters available. |
USECASE_NUMBER_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_NUMBER_THRESHOLD | "1" | Specify the number of units for which you want to determine that the number of available units is small. |
File output as a result of digital rehearsal
- states.txt
- output.txt
- current-usage.txt
- total-usage.txt
These files can be obtained using the digital rehearsal result file acquisition API.
states.txt
{"name":"states","time":180,"data":{"oid":"person-12","value":{"co2":0.0,"lon":139.64,"type":"pedestrian","lat":35.58,"speed":1.39}}}
...
Output in JSON Lines format. Every minute, it shows where a person is using what means of transportation in latitude and longitude. co2 is the current amount of co2 emissions. speed is the speed at that point.
key | value example | Description | ||
---|---|---|---|---|
name | "states" | |||
time | 180 | Elapsed digital rehearsal time in seconds | ||
data | oid | "person-12" | ID of the person appearing in the digital rehearsal | |
value | co2 | 0.0 | CO2 emissions (mg/s) | |
lon | 139.64 | Longitude of the current location | ||
type | "pedestrian" | Travel (pedestrian, car, scooter) | ||
lat | 35.58 | Latitude of the current location | ||
speed | 1.39 | Speed at current position (m/s) |
output.txt
{"name":"output","time":310,"data":{"oid":"person-119","value":{"move":{"travelTime":60,"totalCo2":11818.295182953709,"type":"car"}}}}
{"name":"output","time":310,"data":{"oid":"person-3","value":{"move":{"travelTime":180,"totalCo2":0.0,"type":"pedestrian"}}}}
...
{"name":"output","time":480,"data":{"oid":"person-118","value":{"move":{"opportunityLoss":2.0},"move2":{"travelTime":150,"totalCo2":34648.580464738196,"type":"car"}}}}
...
{"name":"output","time":1010,"data":{"oid":"person-269","value":{"move":{"pedestrianTime":380,"travelTime":500,"escooterDiscount":0.0,"escooterCost":1.7,"totalCo2":0.0,"escooterTime":120,"type":"escooter"}}}}
...
Output in JSON Lines format. Prints a travel history of people arriving at their destination at 10 second intervals. For one person, information about that person is output only once when that person arrives.
key | value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 310 | Elapsed digital rehearsal time in seconds | |||
data | oid | "person-119" | ID of the person appearing in the digital rehearsal | ||
value | move | travelTime | 60 | Time taken to move (s) | |
totalCo2 | 11818.295182953709 | CO2 emissions (mg) | |||
type | "car" | Means of travel (pedestrian, car, scooter) | |||
scooterCost | 1.7 | Usage fee (scooter only) | |||
escorterDiscount | 0.0 | Discounted amount (escorters only) | |||
scooterTime | 120 | Time using scooter (s) (scooter only) | |||
pedestrianTime | 380 | Time spent walking (s) (scooter only) |
The rates for escooterCost and escooterDiscount start at £and are converted by the rate by setting CURRENCY_RATE
in env.json.
Also, if the scooter is not borrowed, the output is:
key | value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 480 | Elapsed digital rehearsal time in seconds | |||
data | oid | "person-118" | ID of the person appearing in the digital rehearsal | ||
value | move | opportunityLoss | 2.0 | Output the fee if the scooter was available when it was available | |
move2 | travelTime | 150 | Time taken to move (s) | ||
totalCo2 | 34648.580464738196 | CO2 emissions (mg) | |||
type | "car" | Means of travel (pedestrian, car) |
current-usage.txt
{"simulator":"soars","name":"current-usage","time":60,"data":{"oid":"bay91","value":{"available":2,"reserved":0,"low":0,"minBattery":100.0}}}
...
Output in JSON Lines format. At 1-minute intervals, the status of the escooer for all stations is printed.
key | value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "current-usage" | |||
time | 60 | Elapsed digital rehearsal time in seconds | ||
data | oid | "bay91" | ID of the station | |
value | available | 2 | Number of scooters available at the station | |
reserved | 0 | Number of scooters reserved at the station | ||
low | 0 | Number of scooters with low battery capacity at the station | ||
minBattery | 100.0 | Minimum battery level (%) for the scooter located at the station |
An escorter that is considered low is one that is less than or equal to the amount left in env.json specified by USECASE_BATTERY_LOW_PERCENT
.
total-usage.txt
{"simulator":"soars","name":"total-usage","time":3600,"data":{"oid":"bay34","value":{"rentScooters":4,"returnScooters":5}}}
...
Output in JSON Lines format. At the end of the digital rehearsal, the lending result of the escooer for all stations is output.
key | value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "total-usage" | |||
time | 3600 | Elapsed digital rehearsal time in seconds | ||
data | oid | "bay34" | ID of the station | |
value | rentScooters | 4 | Number of scooters rented at the station | |
retuenScooters | 5 | Number of scooters returned to the station |
2.3 Use Case: Road Closure
Summary
It is a use case in which a person has the option of driving, walking, biking, or scooter to get to a destination, and each person chooses the means of transportation depending on the cost and time, and rehearses it digitally. By closing roads by time of day for each mode of travel, travel routes change, affecting travel times and changing people's choice of mode of travel.
As with the dynamic discount and initial deployment use cases, you can also see the impact of:
- When renting an scooter, discounts based on the status of the escooter's station will impact costs and change people's transportation choices. That way, you can see what the changes to scooter utilization and user fee revenue are.
- You can also modify the initial deployment of the scooter, similar to the initial deployment use case.
Trucks also exist as a means of transportation. However, the truck will always appear in the digital rehearsal as someone who travels by truck, rather than as a mode of transportation of choice.
Digital rehearsal input/output
Digital rehearsal input/output is defined for each use case. Road Closure provides input files in the following formats:
The output is in the "File output as a result of digital rehearsal" format described below.
Input files required for digital rehearsal
(Common)
- stations.csv
- road-closure.csv
- map.net.xml.gz
- od.csv.gz
- (model.json)
map.net.xml.gz
and od.csv.gz
must be gzip
.
(WebApp)
- precondition.json
(API)
- condition.json
- env.json
precondition.json
{
"USECASE": "road-closure",
"ASSIMIL_PERSON_FILE": "simdata-your-simdataId-of-od/od.csv.gz",
"SOARS_STATIONS_FILE": "simdata-your-simdataId-of-stations-csv/stations.csv",
"SUMO_NET_FILE": "simdata-your-simdataId-of-net-file/map.net.xml.gz",
"DMM_MODEL_INFO_FILE": "simdata-your-simdataId-of-model-file/model.json",
"ROAD_CLOSURE_FILE": "simdata-your-simdataId-of-road-closure-file/road-closure.csv",
"MAP_CENTER_LATITUDE":"35.444395",
"MAP_CENTER_LONGITUDE":"139.636773",
"MAP_ZOOM": "14",
"CURRENCY_SYMBOL": "¥",
"CURRENCY_RATE":"189.1800",
"START_HOUR": "10",
"END_HOUR": "12"
}
condition.json
{
"name":"09/11_14:59:08",
"seed":0,
"start":5,
"end":6,
"usecases":{"batteryBased":{"enabled":true,"discount":10,"lowBatteryPercent":15},"numberBased":{"enabled":true,"discount":25,"scooterNumberThreshold":1}},
"usecase":"road-closure",
"vtypes":{"car":true,"pedestrian":true,"escooter":false,"bicycle":false,"truck":false},
"dmmmodel":{},
"currencySymbol":"¥","createdAt":"2023-09-11T05:59:18.403Z","mapcenter":[139.645,35.584],
"stations":[{"id":"bay0","initial":2,"pos":[35.438606,139.642578],"zone":"b"},{"id":"bay1","initial":0,"pos":[35.449786,139.642196],"zone":"a"},{"id":"bay2","initial":1,"pos":[35.440275,139.645568],"zone":"a"},...]
}
A JSON-formatted file that registers the conditions under which the digital rehearsal was performed. The format is up to you. The sample web server uses this file to display digital rehearsal results.
stations.csv
name,zone,latitude,longitude,initial
bay1,a,35.55934337167842,139.63850582201087,3
bay2,a,35.580495,139.6351646,3
...
A CSV file that sets the initial placement of the scooter stations.
Item | Example values | Description |
---|---|---|
name | bay0 | The name of the station. |
zone | b | The zone to which the station belongs. Scooter can only move between stations in the same zone. |
latitude | 35.58 | The latitude of the station. |
longitude | 139.64 | The Longitude of the station. |
initial | 2 | Initial deployment of escooters. |
road-closure.csv
oid,start,end,type,polygon,lanes
948feb22aa309eda98f5f36cee428b4b,05:00:00,06:00:00,car,"139.66056921784974,35.57560496598741,139.66658309933842,35.57404537981951,139.66449131447303,35.56879927623754,139.66056921784974,35.57560496598741",""
...
A CSV file that sets the roads to be closed.
Item | Example values | Description |
---|---|---|
oid | 948feb22aa309eda98f5f36cee428b4b | The ID of the road closure setting. |
start | 05:00:00 | Time to start the road closure. ISO_LOCAL_TIME format. |
end | 06:00:00 | Time to end the road closure. ISO_LOCAL_TIME format. |
type | car | a means of transportation that becomes impassable. |
polygon | "139.66056921784974,35.57560496598741,139.66658309933842,35.57404537981951,139.66449131447303,35.56879927623754,139.66056921784974,35.57560496598741" | Specify the area as a pair of longitude,latitudes, separated by ,. Enclose with ". |
lanes | "" | Specify the lane IDs, separated by a comma (,). Enclose with ". |
map.net.xml.gz
Net file used by SUMO. For the creation method, please refer to 2.1.1 Map Data Generation: OSM Converter or 2.6 Map Data Registration Procedure.
od.csv.gz
A file that specifies a person's travel as a point of departure and arrival.
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat,type,age,gender_type,driving_license,car_ownership
person-0,05:00:00,139.582230,35.436874,139.558556,35.424722,truck,52,1,1,2
...
Item | Example values | Description |
---|---|---|
oid | person-0 | Required. Must be a unique ID in the OD. |
timestamp | 05:00:00 | Required. ISO_LOCAL_TIME format. |
origin_lon | 139.582230 | Required. Longitude of the origin. |
origin_lat | 35.436874 | Required. Latitude of the point of departure. |
dest_lon | 139.558556 | Required. Longitude of the place of arrival. |
dest_lat | 35.424722 | Required. Latitude of the place of arrival. |
type | truck | Optional. Specifies that the moving means is fixed. Possible values are: car, pedestrian, escooter, bicycle, truck. If you do not specify anything, select the mode of travel. |
age | 52 | Optional, Actual age. |
gender_type | 1 | Optional. Sex. 1 for women and 0 for others. |
driving_license | 1 | Optional. Does the person have a driver's license? 1 if the person has one, 0 otherwise. |
car_ownership | 2 | Optional. Household car retention status. 0 if not held, 1 if less than one unit per adult is held, and 2 if more than one unit per adult is held. |
household_carvan | 1 | Optional. Specifies the number of private cars. Valid only when car_ownership is not specified. |
sex_type | 1 | Optional. 1 is male. 2 is female. Valid only when gender_type is not specified. |
age_type | 1 | Optional. 1: 0 to 15 years, 2: 16 to 24 years, 3: 25 to 34 years, 4: 35 to 49 years, 5: 50 to 64 years, 6: 65 years and older. Valid only when age is not specified. |
If you omit an item, omit it for all lines. If there are only required items, the format is as follows:
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat
person-0,05:00:00,139.582230,35.436874,139.558556,35.424722
...
model.json
This file is for the case where you want to specify an arbitrary selection probability as a human behavior selection model.
Fixed Probability
{
"rulebase_model": "fixed",
"fixed_weights": {
"CAR": 1,
"WALKING": 1,
"CYCLING": 1
}
}
For specifying the selection probability (weight) of each means of transportation.
Key | Value Example | Description | |
---|---|---|---|
rulebase_model | "fixed" | fixed probability | |
fixed_weights | CAR | 1 | car weight. If not specified, 0 is assumed. |
WALKING | 1 | pedestrian weight. If not specified, 0 is assumed. |
|
CYCLING | 1 | escooter weight. If not specified, 0 is assumed. |
- To select only
escooter
:"fixed_weights": {"CYCLING": 1}
- To select only
car
:"fixed_weights": {"CAR": 1}
- To select only
pedestrian
:"fixed_weights": {"WALKING": 1}
Random
{"rulebase_model": "random"}
For randomizing the selection probability of each means of transportation.
Specifying Time and Cost Weight Factors
{
"rulebase_model": "linear",
"w_time": 1,
"w_cost": 1
}
For specifying time and cost weights for each transportation choice.
Key | Value Example | Description |
---|---|---|
rulebase_model | "linear" | |
w_time | 1 | Time weight. If not specified, 1 is assumed. |
w_cost | 1 | Cost weight. If not specified, 1 is assumed. |
- To choose transportation based on time alone (i.e., a mean of transportation with a shorter duration),
"w_time": 1, "w_cost": 0
- To choose transportation based on cost alone (i.e., less expensive transportation),
"w_time": 0, "w_cost": 1
env.json
{
"USECASE":"road-closure",
"CONDITION_JSON_ID":"simdata-d2d0e1b3-7f78-4939-affc-939d712b15d7",
"ASSIMIL_PERSON_FILE":"simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz",
"ASSIMIL_ALIGNER_MAX_STEPS":"3600",
"ASSIMIL_ALIGNER_START_TIME":"5",
"SOARS_STATIONS_FILE":"simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv",
"SUMO_NET_FILE":"simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz",
"DMM_MODEL_INFO_FILE":"simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json",
"RANDOM_SEED":"0",
"CURRENCY_RATE":"1.0",
"ROAD_CLOSURE_FILE":"simdata-f261a82b-dac2-4034-a765-7e4d56901c12/road-closure.csv",
"VTYPES":"car,pedestrian",
"USECASE_BATTERY_ENABLED":"false",
"USECASE_BATTERY_DISCOUNT":"0",
"USECASE_BATTERY_LOW_PERCENT":"15",
"USECASE_NUMBER_ENABLED":"false",
"USECASE_NUMBER_DISCOUNT":"0",
"USECASE_NUMBER_THRESHOLD":"1"
}
A JSON-formatted file that contains information that is input to the digital rehearsal when the digital rehearsal is executed. Specify this env.json to indicate the execution of the digital rehearsal.
Key | Value example | Description |
---|---|---|
USECASE | "road-closure" | Specifies the use case for the digital rehearsal to be performed. |
CONDITION_JSON_ID | "simdata-d2d0e1b3-7f78-4939-affc-939d712b15d7" | Specifies the simdataId of "condition.json". |
ASSIMIL_PERSON_FILE | "simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz" | Specifies that the registered OD file will be used for digital rehearsal. Specifies in simdataId/filename . If not specified, the sample OD file is used. |
ASSIMIL_ALIGNER_MAX_STEPS | "3600" | Specifies the time (in seconds) for the digital rehearsal. An example is an hour. |
ASSIMIL_ALIGNER_START_TIME | "5" | Specifies the start time of the digital rehearsal (in hours). Digitally rehearses the OD of the timestamp for the period of ASSIMIL_ALIGNER_MAX_STEPS after the start time. |
SOARS_STATIONS_FILE | "simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv" | Specifies the registered initial deployment file of the scooter for the station. Specifies in simdataId/filename . |
SUMO_NET_FILE | "simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz" | Specify this to execute digital rehearsal using a registered SUMO net file. Specifies in simdataId/filename . If not specified, the sample net file is used. |
DMM_MODEL_INFO_FILE | "simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json" | Specify this to execute digital rehearsal using a registered behavior selection model file. Specifies in simdataId/filename . If not specified, the behavior selection model learned from the London data is used. |
RANDOM_SEED | "0" | Sets the seed for the random number. The same seed does not mean the same digital rehearsal results. |
CURRENCY_RATE | "1.0" | Set the currency rate. It is based on £, so if you want to convert it to yen, you can specify 186.0 for example. |
ROAD_CLOSURE_FILE | "simdata-f261a82b-dac2-4034-a765-7e4d56901c12/road-closure.csv" | Specifies the registered road closure configuration file. Specifies in `simdataId/filename . |
VTYPES | "car,pedestrian" | Specifies the transportation options for digital rehearsals. You can configure car, pedestrian, escooter, bicycle, and truck. However, truck is not selected as the mode of travel. |
USECASE_BATTERY_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with low battery scooters. |
USECASE_BATTERY_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_BATTERY_LOW_PERCENT | "15" | Specifies the amount of battery remaining to be considered low (%). |
USECASE_NUMBER_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with fewer scooters available. |
USECASE_NUMBER_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_NUMBER_THRESHOLD | "1" | Specify the number of units for which you want to determine that the number of available units is small. |
File output as a result of digital rehearsal
- states.txt
- output.txt
- current-usage.txt
- total-usage.txt
These files can be obtained using the digital rehearsal result file acquisition API.
states.txt
{"name":"states","time":180,"data":{"oid":"person-12","value":{"co2":0.0,"lon":139.64,"type":"pedestrian","lat":35.58,"speed":1.39}}}
...
Output in JSON Lines format. Every minute, it shows where a person is using what means of transportation in latitude and longitude. co2 is the current amount of co2 emissions. speed is the speed at that point.
Key | Value example | Description | ||
---|---|---|---|---|
name | "states" | |||
time | 180 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "person-12" | ID of the person appearing in the digital rehearsal | |
value | co2 | 0.0 | CO2 emissions (mg/s) | |
lon | 139.64 | Longitude of the current location | ||
type | "pedestrian" | Means of transportation (pedestrian, car, escooter, bicycle, truck) | ||
lat | 35.58 | Latitude of the current location | ||
speed | 1.39 | Velocity at current position (m/s) | ||
ec | 0.3372070179260734 | Electricity consumption (Wh/s) (escooter only) |
When no one is moving, data is null.
{"name":"states","time":60,"data":null}
output.txt
{"name":"output","time":310,"data":{"oid":"person-119","value":{"move":{"travelTime":60,"totalCo2":11818.295182953709,"type":"car"}}}}
{"name":"output","time":310,"data":{"oid":"person-3","value":{"move":{"travelTime":180,"totalCo2":0.0,"type":"pedestrian"}}}}
...
{"name":"output","time":480,"data":{"oid":"person-118","value":{"move":{"opportunityLoss":2.0},"move2":{"travelTime":150,"totalCo2":34648.580464738196,"type":"car"}}}}
...
{"name":"output","time":1010,"data":{"oid":"person-269","value":{"move":{"pedestrianTime":380,"travelTime":500,"escooterDiscount":0.0,"escooterCost":1.7,"totalCo2":0.0,"escooterTime":120,"type":"escooter"}}}}
...
Output in JSON Lines format. Prints a travel history of people arriving at their destination at 10 second intervals. For one person, information about that person is output only once when that person arrives.
Key | Value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 310 | Elapsed digital rehearsal time (seconds) | |||
data | oid | "person-119" | ID of the person appearing in the digital rehearsal | ||
value | move | travelTime | 60 | Time taken to move (seconds) | |
totalCo2 | 11818.295182953709 | CO2 emissions (mg) | |||
type | "car" | means of transportation (pedestrian, car, escooter, bicycle, truck) | |||
escooterCost | 1.7 | Usage fee (escooter only) | |||
escooterDiscount | 0.0 | Discounted amount (escooter only) | |||
escooterTime | 120 | Time spent using escooter (seconds) (escooter only) | |||
pedestrianTime | 380 | Time traveled on foot (seconds) (escooter only) |
The rates for escooterCost and escooterDiscount start at £ and are converted to rates by setting: CURRENCY_RATE
in env.json.
Also, if the escooter is not borrowed, the output is:
Key | Value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 480 | Elapsed digital rehearsal time (seconds) | |||
data | oid | "person-118" | ID of the person appearing in the digital rehearsal | ||
value | move | opportunityLoss | 2.0 | If you cannot reserve the escooter, print the charge if it is available. | |
move2 | travelTime | 150 | Time taken to move (seconds) | ||
totalCo2 | 34648.580464738196 | CO2 emissions (mg) | |||
type | "car" | means of transportation(pedestrian, car, bicycle) |
If it is not possible to move using the alternative means, the following is output:
{"name":"output","time":150,"data":{"oid":"person-18","value":{"move":{"message":"Could not create plan."}}}}
current-usage.txt
{"simulator":"soars","name":"current-usage","time":60,"data":{"oid":"bay91","value":{"available":2,"reserved":0,"low":0,"minBattery":100.0}}}
...
Output in JSON Lines format. At 1-minute intervals, the status of the escooter for all stations is printed.
Key | Value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "current-usage" | |||
time | 60 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "bay91" | ID of the station | |
value | available | 2 | Number of scooters available at the station | |
reserved | 0 | Number of scooters reserved at the station | ||
low | 0 | Number of scooters with a low battery at the station | ||
minBattery | 100.0 | Minimum battery level (%) for the scooter located at the station |
An escooter that is considered low is one that is less than or equal to the amount left in env.json specified by USECASE_BATTERY_LOW_PERCENT
.
total-usage.txt
{"simulator":"soars","name":"total-usage","time":3600,"data":{"oid":"bay34","value":{"rentScooters":4,"returnScooters":5}}}
...
Output in JSON Lines format. At the end of the digital rehearsal, the lending result of the escooter for all stations is output.
Key | Value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "total-usage" | |||
time | 3600 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "bay34" | ID of the station | |
value | rentScooters | 4 | Number of scooters rented at the station | |
returnScooters | 5 | Number of scooters returned to the station |
2.4 Use Case: Road Pricing
Summary
It is a use case in which a person has the option of driving, walking, biking, or scooter to get to a destination, and each person chooses the means of transportation depending on the cost and time, and rehearses it digitally. By charging roads by time of day for each mode of travel, costs are affected, and when detours are made, travel times are affected, and people's choice of mode of travel is changed.
As with road closures, dynamic discounts, and initial deployment use cases, the following impacts can also be observed:
- By closing roads by time zone for each mode of travel, travel routes change, affecting travel times and changing people's choice of mode of travel.
- When renting an scooter, discounts based on the status of the scooter's station will impact costs and change people's transportation choices. That way, you can see what the changes to scooter utilization and user fee revenue are.
- You can also modify the initial deployment of the scooter, similar to the initial deployment use case.
Trucks also exist as a means of transportation. However, the truck will always appear in the digital rehearsal as someone who travels by truck, rather than as a mode of transportation of choice.
Digital rehearsal input/output
Digital rehearsal input/output is defined for each use case. Road Pricing provides input files in the following formats:
The output is in the "File output as a result of digital rehearsal" format described below.
Input files required for digital rehearsal
(Common)
- stations.csv
- road-closure.csv
- road-pricing.csv
- map.net.xml.gz
- od.csv.gz
- (model.json)
map.net.xml.gz
and od.csv.gz
must be gzip
.
(WebApp)
- precondition.json
(API)
- condition.json
- env.json
precondition.json
{
"USECASE": "road-pricing",
"ASSIMIL_PERSON_FILE": "simdata-your-simdataId-of-od/od.csv.gz",
"SOARS_STATIONS_FILE": "simdata-your-simdataId-of-stations-csv/stations.csv",
"SUMO_NET_FILE": "simdata-your-simdataId-of-net-file/map.net.xml.gz",
"DMM_MODEL_INFO_FILE": "simdata-your-simdataId-of-model-file/model.json",
"ROAD_CLOSURE_FILE": "simdata-your-simdataId-of-road-closure-file/road-closure.csv",
"ROAD_PRICING_FILE": "simdata-your-simdataId-of-road-pricing-file/road-pricing.csv",
"MAP_CENTER_LATITUDE":"35.444395",
"MAP_CENTER_LONGITUDE":"139.636773",
"MAP_ZOOM": "14",
"CURRENCY_SYMBOL": "¥",
"CURRENCY_RATE":"189.1800",
"START_HOUR": "10",
"END_HOUR": "12"
}
condition.json
{
"name":"09/11_14:59:08",
"seed":0,
"start":5,
"end":6,
"usecases":{"batteryBased":{"enabled":true,"discount":10,"lowBatteryPercent":15},"numberBased":{"enabled":true,"discount":25,"scooterNumberThreshold":1}},
"usecase":"road-pricing",
"vtypes":{"car":true,"pedestrian":true,"escooter":false,"bicycle":false,"truck":false},
"detour":{"car":true,"pedestrian":false,"bicycle":false},
"dmmmodel":{},
"currencySymbol":"¥","createdAt":"2023-09-11T05:59:18.403Z","mapcenter":[139.645,35.584],
"stations":[{"id":"bay0","initial":2,"pos":[35.438606,139.642578],"zone":"b"},{"id":"bay1","initial":0,"pos":[35.449786,139.642196],"zone":"a"},{"id":"bay2","initial":1,"pos":[35.440275,139.645568],"zone":"a"},...]
A JSON-formatted file that registers the conditions under which the digital rehearsal was performed. The format is up to you. The sample web server uses this file to display digital rehearsal results.
stations.csv
name,zone,latitude,longitude,initial
bay1,a,35.55934337167842,139.63850582201087,3
bay2,a,35.580495,139.6351646,3
...
A CSV file that sets the initial placement of the scooter stations.
Item | Example values | Description |
---|---|---|
name | bay0 | The name of the station. |
zone | b | The zone to which the station belongs. Scooter can only move between stations in the same zone. |
latitude | 35.58 | The latitude of the station. |
longitude | 139.64 | The Longitude of the station. |
initial | 2 | Initial deployment of escooters. |
road-closure.csv
oid,start,end,type,polygon,lanes
948feb22aa309eda98f5f36cee428b4b,05:00:00,06:00:00,car,"139.66056921784974,35.57560496598741,139.66658309933842,35.57404537981951,139.66449131447303,35.56879927623754,139.66056921784974,35.57560496598741",""
...
A CSV file that sets the roads to be closed.
Item | Example values | Description |
---|---|---|
oid | 948feb22aa309eda98f5f36cee428b4b | The ID of the road closure setting. |
start | 05:00:00 | Time to start the road closure. ISO_LOCAL_TIME format. |
end | 06:00:00 | Time to end the road closure. ISO_LOCAL_TIME format. |
type | car | a means of transportation that becomes impassable. |
polygon | "139.66056921784974,35.57560496598741,139.66658309933842,35.57404537981951,139.66449131447303,35.56879927623754,139.66056921784974,35.57560496598741" | Specify the area as a pair of longitude,latitudes, separated by ,. Enclose with ". |
lanes | "" | Specify the lane IDs, separated by a comma (,). Enclose with ". |
road-pricing.csv
oid,start,end,type,price,polygon
2ac5dc629aebf5a9077c2a77178a0b84,05:00:00,06:00:00,car,200,"139.6512009048468,35.579720773775605,139.6559554628551,35.5770538920699,139.65275843247736,35.57592044045461,139.6512009048468,35.579720773775605"
...
A CSV file that sets the roads to be charged.
Item | Example values | Description |
---|---|---|
oid | 2ac5dc629aebf5a9077c2a77178a0b84 | The ID of the road charging configuration. |
start | 05:00:00 | The time to start road charging. ISO_LOCAL_TIME format. |
end | 06:00:00 | Time to end road charging. ISO_LOCAL_TIME foramt. |
type | car | Charged transportation. |
price | 200 | The charge amount. |
polygon | "139.66056921784974,35.57560496598741,139.66658309933842,35.57404537981951,139.66449131447303,35.56879927623754,139.66056921784974,35.57560496598741" | Specify the area as a pair of longitude,latitudes, separated by ,. Enclose with ". |
map.net.xml.gz
Net file used by SUMO. For the creation method, please refer to 2.1.1 Map Data Generation: OSM Converter or 2.6 Map Data Registration Procedure.
od.csv.gz
A file that specifies a person's travel as a point of departure and arrival.
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat,type,age,gender_type,driving_license,car_ownership
person-0,05:00:00,139.582230,35.436874,139.558556,35.424722,truck,52,1,1,2
...
Item | Example values | Description |
---|---|---|
oid | person-0 | Required. Must be a unique ID in the OD. |
timestamp | 05:00:00 | Required. ISO_LOCAL_TIME format. |
origin_lon | 139.582230 | Required. Longitude of the origin. |
origin_lat | 35.436874 | Required. Latitude of the point of departure. |
dest_lon | 139.558556 | Required. Longitude of the place of arrival. |
dest_lat | 35.424722 | Required. Latitude of the place of arrival. |
type | truck | Optional. Specifies that the moving means is fixed. Possible values are: car, pedestrian, escooter, bicycle, truck. If you do not specify anything, select the mode of travel. |
age | 52 | Optional, Actual age. |
gender_type | 1 | Optional. Sex. 1 for women and 0 for others. |
driving_license | 1 | Optional. Does the person have a driver's license? 1 if the person has one, 0 otherwise. |
car_ownership | 2 | Optional. Household car retention status. 0 if not held, 1 if less than one unit per adult is held, and 2 if more than one unit per adult is held. |
household_carvan | 1 | Optional. Specifies the number of private cars. Valid only when car_ownership is not specified. |
sex_type | 1 | Optional. 1 is male. 2 is female. Valid only when gender_type is not specified. |
age_type | 1 | Optional. 1: 0 to 15 years, 2: 16 to 24 years, 3: 25 to 34 years, 4: 35 to 49 years, 5: 50 to 64 years, 6: 65 years and older. Valid only when age is not specified. |
If you omit an item, omit it for all lines. If there are only required items, the format is as follows:
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat
person-0,05:00:00,139.582230,35.436874,139.558556,35.424722
...
model.json
This file is for the case where you want to specify an arbitrary selection probability as a human behavior selection model.
Fixed Probability
{
"rulebase_model": "fixed",
"fixed_weights": {
"CAR": 1,
"WALKING": 1,
"CYCLING": 1
}
}
For specifying the selection probability (weight) of each means of transportation.
Key | Value Example | Description | |
---|---|---|---|
rulebase_model | "fixed" | fixed probability | |
fixed_weights | CAR | 1 | car weight. If not specified, 0 is assumed. |
WALKING | 1 | pedestrian weight. If not specified, 0 is assumed. |
|
CYCLING | 1 | escooter weight. If not specified, 0 is assumed. |
- To select only
escooter
:"fixed_weights": {"CYCLING": 1}
- To select only
car
:"fixed_weights": {"CAR": 1}
- To select only
pedestrian
:"fixed_weights": {"WALKING": 1}
Random
{"rulebase_model": "random"}
For randomizing the selection probability of each means of transportation.
Specifying Time and Cost Weight Factors
{
"rulebase_model": "linear",
"w_time": 1,
"w_cost": 1
}
For specifying time and cost weights for each transportation choice.
Key | Value Example | Description |
---|---|---|
rulebase_model | "linear" | |
w_time | 1 | Time weight. If not specified, 1 is assumed. |
w_cost | 1 | Cost weight. If not specified, 1 is assumed. |
- To choose transportation based on time alone (i.e., a mean of transportation with a shorter duration),
"w_time": 1, "w_cost": 0
- To choose transportation based on cost alone (i.e., less expensive transportation),
"w_time": 0, "w_cost": 1
env.json
{
"USECASE":"road-pricing",
"CONDITION_JSON_ID":"simdata-d2d0e1b3-7f78-4939-affc-939d712b15d7",
"ASSIMIL_PERSON_FILE":"simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz",
"ASSIMIL_ALIGNER_MAX_STEPS":"3600",
"ASSIMIL_ALIGNER_START_TIME":"5",
"SOARS_STATIONS_FILE":"simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv",
"SUMO_NET_FILE":"simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz",
"DMM_MODEL_INFO_FILE":"simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json",
"RANDOM_SEED":"0",
"CURRENCY_RATE":"1.0",
"ROAD_CLOSURE_FILE":"simdata-f261a82b-dac2-4034-a765-7e4d56901c12/road-closure.csv",
"ROAD_PRICING_FILE":"simdata-f0917da6-4a9b-4e24-99f4-909f240be14d/road-pricing.csv",
"VTYPES":"car,pedestrian",
"DETOUR_VTYPES":"car",
"USECASE_BATTERY_ENABLED":"false",
"USECASE_BATTERY_DISCOUNT":"0",
"USECASE_BATTERY_LOW_PERCENT":"15",
"USECASE_NUMBER_ENABLED":"false",
"USECASE_NUMBER_DISCOUNT":"0",
"USECASE_NUMBER_THRESHOLD":"1"
}
A JSON-formatted file that contains information that is input to the digital rehearsal when the digital rehearsal is executed. Specify this env.json to indicate the execution of the digital rehearsal.
Key | Value example | Description |
---|---|---|
USECASE | "road-pricing" | Specifies the use case for the digital rehearsal to be performed. |
CONDITION_JSON_ID | "simdata-d2d0e1b3-7f78-4939-affc-939d712b15d7" | Specifies the simdataId of "condition.json". |
ASSIMIL_PERSON_FILE | "simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz" | Specifies that the registered OD file will be used for digital rehearsal. Specifies in simdataId/filename . If not specified, the sample OD file is used. |
ASSIMIL_ALIGNER_MAX_STEPS | "3600" | Specifies the time (in seconds) for the digital rehearsal. An example is an hour. |
ASSIMIL_ALIGNER_START_TIME | "5" | Specifies the start time of the digital rehearsal (in hours). Digitally rehearses the OD of the timestamp for the period of ASSIMIL_ALIGNER_MAX_STEPS after the start time. |
SOARS_STATIONS_FILE | "simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv" | Specifies the registered initial deployment file of the scooter for the station. Specifies in simdataId/filename . |
SUMO_NET_FILE | "simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz" | Specify this to execute digital rehearsal using a registered SUMO net file. Specifies in simdataId/filename . If not specified, the sample net file is used. |
DMM_MODEL_INFO_FILE | "simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json" | Specify this to execute digital rehearsal using a registered behavior selection model file. Specifies in simdataId/filename . If not specified, the behavior selection model learned from the London data is used. |
RANDOM_SEED | "0" | Sets the seed for the random number. The same seed does not mean the same digital rehearsal results. |
CURRENCY_RATE | "1.0" | Set the currency rate. It is based on £, so if you want to convert it to yen, you can specify 186.0 for example. |
ROAD_CLOSURE_FILE | "simdata-f261a82b-dac2-4034-a765-7e4d56901c12/road-closure.csv" | Specifies the registered road closure configuration file. Specifies in `simdataId/filename . |
ROAD_PRICING_FILE | "simdata-f0917da6-4a9b-4e24-99f4-909f240be14d/road-pricing.csv" | Specifies the registered road charging configuration file. Specifies in simdataId/filename . |
VTYPES | "car,pedestrian" | Specifies the transportation options for digital rehearsals. You can configure car, pedestrian, escooter, bicycle, and truck. However, truck is not selected as the mode of travel. |
DETOUR_VTYPES | "car" | Specifies the means of travel to bypass. You can configure car, pedestrian, and bicycle. |
USECASE_BATTERY_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with low battery scooters. |
USECASE_BATTERY_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_BATTERY_LOW_PERCENT | "15" | Specifies the amount of battery remaining to be considered low (%). |
USECASE_NUMBER_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with fewer scooters available. |
USECASE_NUMBER_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_NUMBER_THRESHOLD | "1" | Specify the number of units for which you want to determine that the number of available units is small. |
File output as a result of digital rehearsal
- states.txt
- output.txt
- current-usage.txt
- total-usage.txt
These files can be obtained using the digital rehearsal result file acquisition API.
states.txt
{"name":"states","time":180,"data":{"oid":"person-12","value":{"co2":0.0,"lon":139.64,"type":"pedestrian","lat":35.58,"speed":1.39}}}
...
Output in JSON Lines format. Every minute, it shows where a person is using what means of transportation in latitude and longitude. co2 is the current amount of co2 emissions. speed is the speed at that point.
Key | Value example | Description | ||
---|---|---|---|---|
name | "states" | |||
time | 180 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "person-12" | ID of the person appearing in the digital rehearsal | |
value | co2 | 0.0 | CO2 emissions (mg/s) | |
lon | 139.64 | Longitude of the current location | ||
type | "pedestrian" | Means of transportation (pedestrian, car, escooter, bicycle, truck) | ||
lat | 35.58 | Latitude of the current location | ||
speed | 1.39 | Velocity at current position (m/s) | ||
ec | 0.3372070179260734 | Electricity consumption (Wh/s) (escooter only) |
When no one is moving, data is null.
{"name":"states","time":60,"data":null}
output.txt
{"name":"output","time":310,"data":{"oid":"person-119","value":{"move":{"travelTime":60,"totalCo2":11818.295182953709,"type":"car","toll":0.0}}}}
{"name":"output","time":310,"data":{"oid":"person-3","value":{"move":{"travelTime":180,"totalCo2":0.0,"type":"pedestrian","toll":0.0}}}}
...
{"name":"output","time":480,"data":{"oid":"person-118","value":{"move":{"opportunityLoss":2.0},"move2":{"travelTime":150,"totalCo2":34648.580464738196,"type":"car","toll":0.0}}}}
...
{"name":"output","time":1010,"data":{"oid":"person-269","value":{"move":{"pedestrianTime":380,"travelTime":500,"escooterDiscount":0.0,"escooterCost":1.7,"totalCo2":0.0,"escooterTime":120,"type":"escooter","toll":0.0}}}}
...
Output in JSON Lines format. Prints a travel history of people arriving at their destination at 10 second intervals. For one person, information about that person is output only once when that person arrives.
Key | Value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 310 | Elapsed digital rehearsal time (seconds) | |||
data | oid | "person-119" | ID of the person appearing in the digital rehearsal | ||
value | move | travelTime | 60 | Time taken to move (seconds) | |
totalCo2 | 11818.295182953709 | CO2 emissions (mg) | |||
type | "car" | means of transportation (pedestrian, car, escooter, bicycle, truck) | |||
toll | 200 | amount charged | |||
escooterCost | 1.7 | Usage fee (escooter only) | |||
escooterDiscount | 0.0 | Discounted amount (escooter only) | |||
escooterTime | 120 | Time spent using escooter (seconds) (escooter only) | |||
pedestrianTime | 380 | Time traveled on foot (seconds) (escooter only) |
The rates for escooterCost and escooterDiscount start at £ and are converted to rates by setting: CURRENCY_RATE
in env.json.
Also, if the escooter is not borrowed, the output is:
Key | Value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 480 | Elapsed digital rehearsal time (seconds) | |||
data | oid | "person-118" | ID of the person appearing in the digital rehearsal | ||
value | move | opportunityLoss | 2.0 | If you cannot reserve the escooter, print the charge if it is available. | |
move2 | travelTime | 150 | Time taken to move (seconds) | ||
totalCo2 | 34648.580464738196 | CO2 emissions (mg) | |||
type | "car" | means of transportation(pedestrian, car, bicycle) | |||
toll | 200 | amount charged |
If it is not possible to move using the alternative means, the following is output:
{"name":"output","time":150,"data":{"oid":"person-18","value":{"move":{"message":"Could not create plan."}}}}
current-usage.txt
{"simulator":"soars","name":"current-usage","time":60,"data":{"oid":"bay91","value":{"available":2,"reserved":0,"low":0,"minBattery":100.0}}}
...
Output in JSON Lines format. At 1-minute intervals, the status of the escooter for all stations is printed.
Key | Value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "current-usage" | |||
time | 60 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "bay91" | ID of the station | |
value | available | 2 | Number of scooters available at the station | |
reserved | 0 | Number of scooters reserved at the station | ||
low | 0 | Number of scooters with a low battery at the station | ||
minBattery | 100.0 | Minimum battery level (%) for the scooter located at the station |
An escooter that is considered low is one that is less than or equal to the amount left in env.json specified by USECASE_BATTERY_LOW_PERCENT
.
total-usage.txt
{"simulator":"soars","name":"total-usage","time":3600,"data":{"oid":"bay34","value":{"rentScooters":4,"returnScooters":5}}}
...
Output in JSON Lines format. At the end of the digital rehearsal, the lending result of the escooter for all stations is output.
Key | Value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "total-usage" | |||
time | 3600 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "bay34" | ID of the station | |
value | rentScooters | 4 | Number of scooters rented at the station | |
returnScooters | 5 | Number of scooters returned to the station |
2.5 Use Case: Park and Ride
Summary
This is a use case where people can choose to travel to a destination by car, by foot, by escooter, by bicycle, or by a public common authority, and then digital rehearsal each person's choice of transportation based on cost and time.
By installing a parking lot, transferring to public transport becomes an option, affecting costs and travel times, and changing people's choice of transportation.
As with the dynamic discount and initial deployment use cases, you can also see the impact of:
- When renting an scooter, discounts based on the status of the escooter's station will impact costs and change people's transportation choices. That way, you can see what the changes to scooter utilization and user fee revenue are.
- You can also modify the initial deployment of the scooter, similar to the initial deployment use case.
Digital rehearsal input/output
Digital rehearsal input/output is defined for each use case. Park and Ride provides input files in the following formats:
The output is in the "File output as a result of digital rehearsal" format described below.
Input files required for digital rehearsal
(Common)
- stations.csv
- map.net.xml.gz
- od.csv.gz
- parking.csv
- (osm.pbf)
- (gtfs.zip)
map.net.xml.gz
and od.csv.gz
must be gzip
.
(WebApp)
- precondition.json
(API)
- condition.json
- env.json
precondition.json
{
"USECASE": "park-and-ride",
"ASSIMIL_PERSON_FILE": "simdata-your-simdataId-of-od/od.csv.gz",
"SOARS_STATIONS_FILE": "simdata-your-simdataId-of-stations-csv/stations.csv",
"SUMO_NET_FILE": "simdata-your-simdataId-of-net-file/map.net.xml.gz",
"MAP_CENTER_LATITUDE":"35.444395",
"MAP_CENTER_LONGITUDE":"139.636773",
"MAP_ZOOM": "14",
"CURRENCY_SYMBOL": "¥",
"CURRENCY_RATE":"189.1800",
"START_HOUR": "10",
"END_HOUR": "12",
"DATE": "2024-05-13",
"TIMEZONE": "Asia/Tokyo",
"PARKING_FILE": "simdata-your-simdataId-of-parking-csv/parking.csv",
"PARK_CHARGE_DST": 0,
"OTP_OSM_FILE": "simdata-your-simdataId-of-otp-osm-pbf/osm.pbf",
"OTP_GTFS_USE_DEFAULT": true
}
condition.json
{
"name":"03/15_16:17:44",
"seed":0,
"date":{"year":2024,"month":3,"day":14},
"start":5,
"end":6,
"park_charge_dst":0,
"usecases":{"batteryBased":{"enabled":false,"discount":0,"lowBatteryPercent":15},"numberBased":{"enabled":false,"discount":0,"scooterNumberThreshold":1}},
"usecase":"park-and-ride",
"vtypes":{"car":true,"pedestrian":true,"escooter":false,"bicycle":true},
"dmmmodel":{},
"currencySymbol":"¥",
"createdAt":"2024-03-15T07:17:58.470Z",
"mapcenter":[139.645,35.584],
"parking":[{"id":"parking1","total":5,"pos":[139.64652349472,35.58208039592385],"type":"car","charge":100},{"id":"parking2","total":5,"pos":[139.64478542327885,35.58114675367203],"type":"bicycle","charge":100},{"id":"parking3","total":5,"pos":[139.64345504760655,35.581207833404605],"type":"car","charge":100},{"id":"parking4","total":5,"pos":[139.64252163887005,35.58129509008397],"type":"car","charge":100}]
}
A JSON-formatted file that registers the conditions under which the digital rehearsal was performed. The format is up to you. The sample web server uses this file to display digital rehearsal results.
stations.csv
name,zone,latitude,longitude,initial
bay1,a,35.55934337167842,139.63850582201087,3
bay2,a,35.580495,139.6351646,3
...
A CSV file that sets the initial placement of the scooter stations.
Item | Example values | Description |
---|---|---|
name | bay0 | The name of the station. |
zone | b | The zone to which the station belongs. Scooter can only move between stations in the same zone. |
latitude | 35.58 | The latitude of the station. |
longitude | 139.64 | The Longitude of the station. |
initial | 2 | Initial deployment of escooters. |
parking.csv
name,latitude,longitude,total,type,charge
parking1,35.58139979797416,139.64179207801715,5,car,100
parking2,35.58081517716869,139.64339067458974,5,car,100
...
A CSV file for setting parking lot placement.
Item | Example values | Description |
---|---|---|
name | parking1 | The name of the parking. |
latitude | 35.58139979797416 | The latitude of the parking. |
longitude | 139.64179207801715 | The longitude of the parking. |
total | 5 | Number of cars that can be parked. |
type | car | Types of Parking. (car or bicycle) |
charge | 100 | Parking fee. |
map.net.xml.gz
Net file used by SUMO. For the creation method, please refer to 2.1.1 Map Data Generation: OSM Converter or 2.6 Map Data Registration Procedure.
od.csv.gz
A file that specifies a person's travel as a point of departure and arrival.
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat,age,gender_type,driving_license,car_ownership
person-0,05:00:00,139.582230,35.436874,139.558556,35.424722,52,1,1,2
...
Item | Example values | Description |
---|---|---|
oid | person-0 | Required. Must be a unique ID in the OD. |
timestamp | 05:00:00 | Required. ISO_LOCAL_TIME format. |
origin_lon | 139.582230 | Required. Longitude of the origin. |
origin_lat | 35.436874 | Required. Latitude of the point of departure. |
dest_lon | 139.558556 | Required. Longitude of the place of arrival. |
dest_lat | 35.424722 | Required. Latitude of the place of arrival. |
type | car | Optional. Specifies that the moving means is fixed. Possible values are: car, pedestrian, escooter, bicycle. If you do not specify anything, select the mode of travel. |
age | 52 | Optional, Actual age. |
gender_type | 1 | Optional. Sex. 1 for women and 0 for others. |
driving_license | 1 | Optional. Does the person have a driver's license? 1 if the person has one, 0 otherwise. |
car_ownership | 2 | Optional. Household car retention status. 0 if not held, 1 if less than one unit per adult is held, and 2 if more than one unit per adult is held. |
household_carvan | 1 | Optional. Specifies the number of private cars. Valid only when car_ownership is not specified. |
sex_type | 1 | Optional. 1 is male. 2 is female. Valid only when gender_type is not specified. |
age_type | 1 | Optional. 1: 0 to 15 years, 2: 16 to 24 years, 3: 25 to 34 years, 4: 35 to 49 years, 5: 50 to 64 years, 6: 65 years and older. Valid only when age is not specified. |
If you omit an item, omit it for all lines. If there are only required items, the format is as follows:
oid,timestamp,origin_lon,origin_lat,dest_lon,dest_lat
person-0,05:00:00,139.582230,35.436874,139.558556,35.424722
...
env.json
{
"USECASE":"park-and-ride",
"CONDITION_JSON_ID":"simdata-79e4b04f-532e-43b5-8898-22b71e0b3aa4",
"ASSIMIL_PERSON_FILE":"simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz",
"ASSIMIL_ALIGNER_MAX_STEPS":"3600",
"ASSIMIL_ALIGNER_START_TIME":"5",
"SOARS_STATIONS_FILE":"simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv",
"SUMO_NET_FILE":"simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz",
"DMM_MODEL_INFO_FILE":"simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json",
"RANDOM_SEED":"0",
"CURRENCY_RATE":"186.0",
"VTYPES":"car,pedestrian,bicycle",
"USECASE_BATTERY_ENABLED":"false",
"USECASE_BATTERY_DISCOUNT":"0",
"USECASE_BATTERY_LOW_PERCENT":"15",
"USECASE_NUMBER_ENABLED":"false",
"USECASE_NUMBER_DISCOUNT":"0",
"USECASE_NUMBER_THRESHOLD":"1"
"DATE":"2024-03-14",
"TIMEZONE":"Asia/Tokyo",
"PARKING_FILE":"simdata-10f56ac9-9296-4c9b-ba34-7db6ddda809d/parking.csv",
"PARK_CHARGE_DST":0,
}
A JSON-formatted file that contains information that is input to the digital rehearsal when the digital rehearsal is executed. Specify this env.json to indicate the execution of the digital rehearsal.
Key | Value example | Description |
---|---|---|
USECASE | "park-and-ride" | Specifies the use case for the digital rehearsal to be performed. |
CONDITION_JSON_ID | "simdata-d2d0e1b3-7f78-4939-affc-939d712b15d7" | Specifies the simdataId of "condition.json". |
ASSIMIL_PERSON_FILE | "simdata-272c8229-5a50-48c1-b0db-771c46e3b5d3/od.csv.gz" | Specifies that the registered OD file will be used for digital rehearsal. Specifies in simdataId/filename . If not specified, the sample OD file is used. |
ASSIMIL_ALIGNER_MAX_STEPS | "3600" | Specifies the time (in seconds) for the digital rehearsal. An example is an hour. |
ASSIMIL_ALIGNER_START_TIME | "5" | Specifies the start time of the digital rehearsal (in hours). Digitally rehearses the OD of the timestamp for the period of ASSIMIL_ALIGNER_MAX_STEPS after the start time. |
SOARS_STATIONS_FILE | "simdata-1c480139-c8d5-4d24-a551-af10f008339a/stations.csv" | Specifies the registered initial deployment file of the scooter for the station. Specifies in simdataId/filename . |
SUMO_NET_FILE | "simdata-4467079a-fbd0-440e-8505-a8c518e94562/map.net.xml.gz" | Specify this to execute digital rehearsal using a registered SUMO net file. Specifies in simdataId/filename . If not specified, the sample net file is used. |
DMM_MODEL_INFO_FILE | "simdata-feaf5067-43c2-4673-a229-43e0d7d5dc6d/model.json" | Specify this to execute digital rehearsal using a registered behavior selection model file. Specifies in simdataId/filename . If not specified, the behavior selection model learned from the London data is used. |
RANDOM_SEED | "0" | Sets the seed for the random number. The same seed does not mean the same digital rehearsal results. |
CURRENCY_RATE | "1.0" | Set the currency rate. It is based on £, so if you want to convert it to yen, you can specify 186.0 for example. |
VTYPES | "car,pedestrian,escooter" | Specifies the transportation options for digital rehearsals. You can configure car, pedestrian, escooter, and bicycle. |
USECASE_BATTERY_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with low battery scooters. |
USECASE_BATTERY_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_BATTERY_LOW_PERCENT | "15" | Specifies the amount of battery remaining to be considered low (%). |
USECASE_NUMBER_ENABLED | "false" | Set to true to enable the discount policy for returning to stations with fewer scooters available. |
USECASE_NUMBER_DISCOUNT | "0" | The percentage to discount (%). |
USECASE_NUMBER_THRESHOLD | "1" | Specify the number of units for which you want to determine that the number of available units is small. |
DATE | "2024-03-14" | Specifies the date of the digital rehearsal. ISO_LOCAL_DATE format. |
TIMEZONE | "Asia/Tokyo" | Specifies the timezone of the digital rehearsal. Specifies the time zone defined by Time Zone Database. |
PARKING_FILE | "simdata-10f56ac9-9296-4c9b-ba34-7db6ddda809d/parking.csv" | Specifies a file for the parking. Specifies in simdataId/filename . |
PARK_CHARGE_DST | "0" | In case of traveling by car, set the fee for parking at the destination. |
OTP_OSM_FILE | "simdata-b5824fa3-97e5-45a3-b087-fa7b5bb9c6b0/osm.pbf" | Specifies the map information used by OpenTripPlanner. Specifies in simdataId/filename . If not specified, the sample osm file is used. |
OTP_GTFS_USE_DEFAULT | "true" | true if OpenTripPlanner uses a pre-set file as the GTFS file to use. The sample files include Kawasaki City Bus, JR(Nambu Line, Yokosuka Line, Tsurumi Line), and Tokyu (Toyoko Line, Meguro Line, Denentoshi Line, Oimachi Line). |
OTP_GTFS_FILE_0 | "simdata-59d4f411-8fc8-411d-a882-c5e9e233cdcf/0_.gtfs.zip" | Specifies the GTFS file used by OpenTripPlanner. Specifies in simdataId/filename . |
OTP_GTFS_FILE_1 | "simdata-59d4f411-8fc8-411d-a883-c5e9e233cdcf/1_.gtfs.zip" | Specifies the GTFS file used by OpenTripPlanner. Specifies in simdataId/filename . |
OTP_GTFS_FILE_2 | "simdata-59d4f411-8fc8-411d-a884-c5e9e233cdcf/2_.gtfs.zip" | Specifies the GTFS file used by OpenTripPlanner. Specifies in simdataId/filename . |
OTP_GTFS_FILE_3 | "simdata-59d4f411-8fc8-411d-a885-c5e9e233cdcf/3_.gtfs.zip" | Specifies the GTFS file used by OpenTripPlanner. Specifies in simdataId/filename . |
OTP_GTFS_FILE_4 | "simdata-59d4f411-8fc8-411d-a886-c5e9e233cdcf/4_.gtfs.zip" | Specifies the GTFS file used by OpenTripPlanner. Specifies in simdataId/filename . |
OTP_GTFS_FILE_5 | "simdata-59d4f411-8fc8-411d-a887-c5e9e233cdcf/5_.gtfs.zip" | Specifies the GTFS file used by OpenTripPlanner. Specifies in simdataId/filename . |
GTFS files must be specified in order, starting with 0. If it is not specified in the middle, it is not used thereafter. For example, if you specify 0 and 2, only 0 is used.
osm.pbf
Map information used by OpenTripPlanner. See here how to create it.
gtfs.zip
GTFS fie used by OpenTripPlanner. See here about GTFS.
File output as a result of digital rehearsal
- states.txt
- output.txt
- current-usage.txt
- total-usage.txt
These files can be obtained using the digital rehearsal result file acquisition API.
states.txt
{"name":"states","time":180,"data":{"oid":"person-12","value":{"co2":0.0,"lon":139.64,"type":"pedestrian","lat":35.58,"speed":1.39}}}
...
Output in JSON Lines format. Every minute, it shows where a person is using what means of transportation in latitude and longitude. co2 is the current amount of co2 emissions. speed is the speed at that point.
Key | Value example | Description | ||
---|---|---|---|---|
name | "states" | |||
time | 180 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "person-12" | ID of the person appearing in the digital rehearsal | |
value | co2 | 0.0 | CO2 emissions (mg/s) | |
lon | 139.64 | Longitude of the current location | ||
type | "pedestrian" | Means of transportation (pedestrian, car, escooter, bicycle, bus, rail, tram, subway, waiting) | ||
lat | 35.58 | Latitude of the current location | ||
speed | 1.39 | Velocity at current position (m/s) | ||
ec | 0.3372070179260734 | Electricity consumption (Wh/s) (escooter only) |
When no one is moving, data is null.
{"name":"states","time":60,"data":null}
output.txt
{"name":"output","time":310,"data":{"oid":"person-119","value":{"move":{"travelTime":60,"totalCo2":11818.295182953709,"type":"car"}}}}
{"name":"output","time":310,"data":{"oid":"person-3","value":{"move":{"travelTime":180,"totalCo2":0.0,"type":"pedestrian"}}}}
...
{"name":"output","time":480,"data":{"oid":"person-118","value":{"move":{"opportunityLoss":2.0},"move2":{"travelTime":150,"totalCo2":34648.580464738196,"type":"car"}}}}
...
{"name":"output","time":1010,"data":{"oid":"person-269","value":{"move":{"pedestrianTime":380,"travelTime":500,"escooterDiscount":0.0,"escooterCost":1.7,"totalCo2":0.0,"escooterTime":120,"type":"escooter"}}}}
{"name":"output","time":660,"data":{"oid":"person-34","value":{"move":{"travelTime":100,"carDistance":775.9799999999999,"totalCo2":203530.09611421896,"travelRoute":{"type":"FeatureCollection","features":[{"type":"feature","properties":{"mode":"car"},"geometry":{"type":"LineString","coordinates":[[139.6496,35.57605],[139.64991,35.57605],[139.6502,35.57604],[139.6502,35.57637],[139.65021,35.57682],[139.65022,35.57693],[139.6499,35.57699],[139.64954,35.57705],[139.64873,35.57706],[139.64745,35.57709],[139.64747,35.57743],[139.64746,35.57759],[139.64744,35.57773],[139.64722,35.57782],[139.64698,35.57795],[139.64674,35.57807],[139.64626,35.57834],[139.64603,35.57846],[139.64587,35.57855],[139.64567,35.57865],[139.64413,35.57949],[139.64414,35.57939],[139.64418,35.57895]]}}]},"park_dst":0.0,"type":"car","carTime":100,"fuelCost":13.869874222266384}}}}
...
Output in JSON Lines format. Prints a travel history of people arriving at their destination at 10 second intervals. For one person, information about that person is output only once when that person arrives.
Key | Value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 310 | Elapsed digital rehearsal time (seconds) | |||
data | oid | "person-119" | ID of the person appearing in the digital rehearsal | ||
value | move | travelTime | 60 | Time taken to move (seconds) | |
totalCo2 | 11818.295182953709 | CO2 emissions (mg) | |||
type | "car" | means of transportation (combination of pedestrian, car, escooter, bicycle, bus, rail, tram, and subway) | |||
escooterCost | 1.7 | Usage fee (escooter only) | |||
escooterDiscount | 0.0 | Discounted amount (escooter only) | |||
escooterTime | 120 | Time spent using escooter (seconds) (escooter only) | |||
escooterDistance | 765.0 | Distance traveled by scooter (m) | |||
pedestrianTime | 380 | Time traveled on foot (seconds) | |||
pedestrianDistance | 510.0 | Distance traveled on foot (m) | |||
carTime | 300 | Time spent in a car (s) | |||
carDistance | 2037.8 | Distance traveled by car (m) | |||
bicycleTime | 420 | Time traveled by bicycle (s) | |||
bicycleDistance | 1762.2 | Distance traveled by bicycle (m) | |||
busTime | 390 | Time traveled by bus (s) | |||
busDistance | 765.0 | Distance traveled by bus (m) | |||
railTime | 880 | Time traveled by rail (s) | |||
railDistance | 3012.0 | Distance traveled by rail (m) | |||
tramTime | 880 | Time traveled by tram (s) | |||
tramDistance | 3012.0 | Distance traveled by tram (m) | |||
subwayTime | 880 | Time traveled by subway (s) | |||
subwayDistance | 3012.0 | Distance traveled by subway (m) | |||
fare | 200.0 | Fare | |||
fuelCost | 201.1 | Fuel cost (car only) | |||
park_api | 100.0 | Parking charge | |||
park_dst | 200.0 | Destination parking fee for car-only travel | |||
travelRoute | Travel path including means of travel |
The rates for escooterCost and escooterDiscount start at £ and are converted to rates by setting: CURRENCY_RATE
in env.json.
If the escooter is not borrowed or the parking lot is full, the output is:
Key | Value example | Description | |||
---|---|---|---|---|---|
name | "output" | ||||
time | 480 | Elapsed digital rehearsal time (seconds) | |||
data | oid | "person-118" | ID of the person appearing in the digital rehearsal | ||
value | move | opportunityLoss | 2.0 | If you cannot reserve the escooter, print the charge if it is available. | |
carParkingFull | 100.0 | If you cannot reserve the escooter, print the charge if it is available. | |||
bicycleParkingFull | 100.0 | If you cannot reserve the escooter, print the charge if it is available. |
If the reservation fails, the same output as above is additionally performed as move2 to move5 in order to narrow down the means of travel and try to move again.
If it is not possible to move using the alternative means, the following is output:
{"name":"output","time":150,"data":{"oid":"person-18","value":{"move":{"message":"Could not create plan."}}}}
If person miss the departure of public transportation, the following is output.
{"name":"output","time":1020,"data":{"oid":"person-36","value":{"move":{"message":"The departure time has passed."}}}}
current-usage.txt
{"simulator":"soars","name":"current-usage","time":60,"data":{"oid":"bay91","value":{"available":2,"reserved":0,"low":0,"minBattery":100.0}}}
{"name":"current-usage","time":1320,"data":{"oid":"parking5","value":{"reserved":1,"available":1,"type":"car-parking","details":{"reserved":["person-87"],"parked":[{"oid":"person-6","start":400},{"oid":"person-41","start":840},{"oid":"person-76","start":1280}]}}}}
...
Output in JSON Lines format. At 1-minute intervals, the status of the escooter for all stations is printed.
Key | Value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "current-usage" | |||
time | 60 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "bay91" | ID of the station | |
value | available | 2 | Number of scooters available at the station | |
reserved | 0 | Number of scooters reserved at the station | ||
low | 0 | Number of scooters with a low battery at the station | ||
minBattery | 100.0 | Minimum battery level (%) for the scooter located at the station |
An escooter that is considered low is one that is less than or equal to the amount left in env.json specified by USECASE_BATTERY_LOW_PERCENT
.
The status of the parking lot is also output.
Key | Value example | Description | ||
---|---|---|---|---|
name | "current-usage" | |||
time | 1320 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "parking5" | Parking ID | |
value | available | 1 | Number of parking spaces available | |
reserved | 1 | Number of reserved parking spaces | ||
type | "car-parking" | car-parking or bicycle-parking | ||
details | Reservation and parking details |
total-usage.txt
{"simulator":"soars","name":"total-usage","time":3600,"data":{"oid":"bay34","value":{"rentScooters":4,"returnScooters":5}}}
{"name":"total-usage","time":0,"data":{"oid":"parking5","value":{"type":"car-parking","rentCount":8,"returnCount":4}}}
...
Output in JSON Lines format. At the end of the digital rehearsal, the lending result of the escooter for all stations is output.
Key | Value example | Description | ||
---|---|---|---|---|
simulator | "soars" | |||
name | "total-usage" | |||
time | 3600 | Elapsed digital rehearsal time (seconds) | ||
data | oid | "bay34" | ID of the station | |
value | rentScooters | 4 | Number of scooters rented at the station | |
returnScooters | 5 | Number of scooters returned to the station |
Parking results are also output.
Key | Value example | Description | ||
---|---|---|---|---|
name | "total-usage" | |||
time | 0 | 0 Fixed | ||
data | oid | "parking5" | Parking ID | |
value | rentCount | 8 | Total number of vehicles in the parking lot | |
returnCount | 4 | Total number of vehicles leaving the parking lot | ||
type | "car-parking" | car-parking or bicycle-parking |
2.6 Map Data Registration Procedure
SUMO Site
For instructions, see HERE.
Procedure for creating sample data
The procedure for creating a net file for Kawasaki City, which is provided as a sample, is shown for reference.
Retrieve the OSM file from the Open Street Map Site.
Click Export to export the specified range. The following ranges are specified:
- Latitude: 35.5667000 -35.5955000
- Longitude: 139.6178000 -139.6760000
The export results in an error, so we are using the Overpass API to download.
Convert the OSM file with the SUMO netconvert
command.
netconvert --osm-files osmfile -o map.net.xml --speed-in-kmh --junctions.join --sidewalks.guess.from-permissions --crossings.guess --lefthand
These options are different from the options on the SUMO site, but they cause an error when loading into SUMO.
Load the map.net.xml
that you created in SUMO and verify that there are no errors.
Finally, gzip
makes map.net.xml.gz
.
For information about how to install and use SUMO, see SUMO Site.