Skip to content

Commit

Permalink
add mode column to link log
Browse files Browse the repository at this point in the history
  • Loading branch information
KasiaKoz committed Jan 10, 2024
1 parent b6a66e9 commit b9a609d
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 7 deletions.
21 changes: 14 additions & 7 deletions src/main/java/com/arup/cml/kpi/matsim/handlers/LinkLogHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public class LinkLogHandler implements VehicleEntersTrafficEventHandler, Vehicle
// arrays to collect Link Log data, each will form a column of the Link Log
private final ArrayList<String> vehicleIDColumn = new ArrayList<>();
private final ArrayList<String> linkIDColumn = new ArrayList<>();
private final ArrayList<String> modeColumn = new ArrayList<>();
private final ArrayList<Double> startTimeColumn = new ArrayList<>();
private final ArrayList<Double> endTimeColumn = new ArrayList<>();
private final ArrayList<Integer> numberOfPeopleColumn = new ArrayList<>();
Expand All @@ -36,9 +37,10 @@ public class LinkLogHandler implements VehicleEntersTrafficEventHandler, Vehicle
// Link Log entry index
private long index = 0;

private void newLinkLogEntry(Id<Vehicle> vehicleID, Id<Link> linkID, double startTime) {
private void newLinkLogEntry(Id<Vehicle> vehicleID, Id<Link> linkID, String mode, double startTime) {
vehicleIDColumn.add(vehicleID.toString());
linkIDColumn.add(linkID.toString());
modeColumn.add(mode);
startTimeColumn.add(startTime);
// end time is not known yet, a placeholder in the ordered list is saved
endTimeColumn.add(-1.0);
Expand Down Expand Up @@ -73,6 +75,7 @@ public Table getLinkLog() {
LongColumn.create("index", LongStream.range(0, index).toArray()),
StringColumn.create("linkID", linkIDColumn),
StringColumn.create("vehicleID", vehicleIDColumn),
StringColumn.create("mode", modeColumn),
DoubleColumn.create("startTime", startTimeColumn),
DoubleColumn.create("endTime", endTimeColumn),
DoubleColumn.create("numberOfPeople", numberOfPeopleColumn)
Expand All @@ -96,7 +99,7 @@ public void write(String outputDir) {

@Override
public void handleEvent(VehicleEntersTrafficEvent event) {
newLinkLogEntry(event.getVehicleId(), event.getLinkId(), event.getTime());
newLinkLogEntry(event.getVehicleId(), event.getLinkId(), event.getNetworkMode(), event.getTime());
}

@Override
Expand All @@ -107,26 +110,30 @@ public void handleEvent(VehicleLeavesTrafficEvent event) {
@Override
public void handleEvent(PersonEntersVehicleEvent event) {
Id<Vehicle> vehicle = event.getVehicleId();
if (this.vehicleLatestOccupants.containsKey(vehicle)) {
ArrayList<Id<Person>> latestOccupants = this.vehicleLatestOccupants.get(vehicle);
if (vehicleLatestOccupants.containsKey(vehicle)) {
ArrayList<Id<Person>> latestOccupants = vehicleLatestOccupants.get(vehicle);
latestOccupants.add(event.getPersonId());
} else {
ArrayList<Id<Person>> latestOccupants = new ArrayList<>();
latestOccupants.add(event.getPersonId());
this.vehicleLatestOccupants.put(vehicle, latestOccupants);
vehicleLatestOccupants.put(vehicle, latestOccupants);
}
}

@Override
public void handleEvent(PersonLeavesVehicleEvent event) {
Id<Vehicle> vehicle = event.getVehicleId();
ArrayList<Id<Person>> latestOccupants = this.vehicleLatestOccupants.get(vehicle);
ArrayList<Id<Person>> latestOccupants = vehicleLatestOccupants.get(vehicle);
latestOccupants.remove(event.getPersonId());
}

@Override
public void handleEvent(LinkEnterEvent event) {
newLinkLogEntry(event.getVehicleId(), event.getLinkId(), event.getTime());
Id<Vehicle> vehicleID = event.getVehicleId();
// this event does not hold mode information, we take it from previous record of this vehicle
long latestStateIndex = vehicleLatestLogIndex.get(vehicleID);
String mode = modeColumn.get((int) latestStateIndex);
newLinkLogEntry(vehicleID, event.getLinkId(), mode, event.getTime());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ public void linkLogTableHasExpectedData() {
StringColumn.create("linkID",
"start_link", "gerry_link_board", "fitz_link_board", "gerry_link_alight", "fitz_link_alight", "end_link"),
StringColumn.create("vehicleID", Collections.nCopies(6, "party_bus")),
StringColumn.create("mode", Collections.nCopies(6, "bus")),
DoubleColumn.create("startTime", new Double[]{0.0, 5.0, 10.0, 15.0, 20.0, 25.0}),
DoubleColumn.create("endTime", new Double[]{5.0, 10.0, 15.0, 20.0, 25.0, 30.0}),
DoubleColumn.create("numberOfPeople", new Double[]{1.0, 2.0, 3.0, 2.0, 1.0, 1.0})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import tech.tablesaw.api.StringColumn;
import tech.tablesaw.api.Table;

import java.util.Collections;
import java.util.stream.LongStream;


Expand Down Expand Up @@ -57,6 +58,7 @@ public void linkLogTableHasExpectedData() {
LongColumn.create("index", LongStream.range(0, 2).toArray()),
StringColumn.create("linkID", "link_A_B", "link_B_A"),
StringColumn.create("vehicleID", "gerry_wheels", "gerry_wheels"),
StringColumn.create("mode", Collections.nCopies(2, "car")),
DoubleColumn.create("startTime", new Double[]{0.0, 6.0}),
DoubleColumn.create("endTime", new Double[]{5.0, 10.0}),
DoubleColumn.create("numberOfPeople", new Double[]{1.0, 1.0})
Expand Down

0 comments on commit b9a609d

Please sign in to comment.