From c49d991c8b2decd2e8aaff16ee0ab2f0bede05bc Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Mon, 25 Mar 2024 12:20:02 +0100 Subject: [PATCH 01/24] simplify activities in kelheim test and remove SnzActivities class --- .../integration/RailsimIntegrationTest.java | 27 +++++- .../railsim/integration/SnzActivities.java | 91 ------------------- 2 files changed, 25 insertions(+), 93 deletions(-) delete mode 100644 contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/SnzActivities.java diff --git a/contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/RailsimIntegrationTest.java b/contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/RailsimIntegrationTest.java index b139bfd423b..7adbb41fc31 100644 --- a/contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/RailsimIntegrationTest.java +++ b/contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/RailsimIntegrationTest.java @@ -30,9 +30,14 @@ import org.matsim.api.core.v01.TransportMode; import org.matsim.api.core.v01.events.Event; import org.matsim.api.core.v01.network.Link; +import org.matsim.api.core.v01.population.Activity; +import org.matsim.api.core.v01.population.Person; +import org.matsim.api.core.v01.population.Plan; +import org.matsim.api.core.v01.population.PlanElement; import org.matsim.core.api.experimental.events.VehicleArrivesAtFacilityEvent; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; +import org.matsim.core.config.groups.ScoringConfigGroup; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.scenario.ScenarioUtils; @@ -51,6 +56,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.Collection; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.function.Consumer; @@ -367,8 +373,25 @@ void testScenarioKelheim() { type.setMaximumVelocity(30); type.setLength(100); } - - SnzActivities.addScoringParams(config); + + // simplify the activity types, e.g. home_3600 -> home + Set<String> activityTypes = new HashSet<>(); + for (Person person : scenario.getPopulation().getPersons().values()) { + for (Plan plan : person.getPlans()) { + for (PlanElement pE : plan.getPlanElements()) { + if(pE instanceof Activity) { + Activity act = (Activity) pE; + String baseType = act.getType().split("_")[0]; + act.setType(baseType); + activityTypes.add(baseType); + } + } + } + } + + for (String type : activityTypes) { + config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams(type).setTypicalDuration(1234.)); + } Controler controler = new Controler(scenario); controler.addOverridingModule(new RailsimModule()); diff --git a/contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/SnzActivities.java b/contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/SnzActivities.java deleted file mode 100644 index ac3a039f5a5..00000000000 --- a/contribs/railsim/src/test/java/ch/sbb/matsim/contrib/railsim/integration/SnzActivities.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Avoid dependency on vsp contrib, copy from: - * https://github.com/matsim-org/matsim-libs/blob/b2305e5e0f744b357486c8bbab253bb7c38aaad4/contribs/vsp/src/main/java/org/matsim/contrib/vsp/scenario/SnzActivities.java - */ -package ch.sbb.matsim.contrib.railsim.integration; - -import org.matsim.core.config.Config; -import org.matsim.core.config.groups.ScoringConfigGroup; - -/** - * Defines available activities and open- and closing times in Snz scenarios at vsp. - */ -public enum SnzActivities { - - home, - other, - visit, - accomp_children, - accomp_other, - - educ_kiga(7, 17), - educ_primary(7, 16), - educ_secondary(7, 17), - educ_tertiary(7, 22), - educ_higher(7, 19), - educ_other(7, 22), - - work(6, 20), - business(8, 20), - errands(8, 20), - - leisure(9, 27), - restaurant(8, 27), - shop_daily(8, 20), - shop_other(8, 20); - - /** - * Start time of an activity in hours, can be -1 if not defined. - */ - private final double start; - - /** - * End time of an activity in hours, can be -1 if not defined. - */ - private final double end; - - SnzActivities(double start, double end) { - this.start = start; - this.end = end; - } - - SnzActivities() { - this.start = -1; - this.end = -1; - } - - - /** - * Apply start and end time to params. - */ - public ScoringConfigGroup.ActivityParams apply(ScoringConfigGroup.ActivityParams params) { - if (start >= 0) - params = params.setOpeningTime(start * 3600.); - if (end >= 0) - params = params.setClosingTime(end * 3600.); - - return params; - } - - /** - * Add activity params for the scenario config. - */ - public static void addScoringParams(Config config) { - - for (SnzActivities value : SnzActivities.values()) { - for (long ii = 600; ii <= 97200; ii += 600) { - config.scoring().addActivityParams(value.apply(new ScoringConfigGroup.ActivityParams(value.name() + "_" + ii).setTypicalDuration(ii))); - } - } - - config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("car interaction").setTypicalDuration(60)); - config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("ride interaction").setTypicalDuration(60)); - config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("bike interaction").setTypicalDuration(60)); - - config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("other").setTypicalDuration(600 * 3)); - - config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("freight_start").setTypicalDuration(60 * 15)); - config.scoring().addActivityParams(new ScoringConfigGroup.ActivityParams("freight_end").setTypicalDuration(60 * 15)); - - } -} From 3630417490a32482230ca7314eb21a552c208356 Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Mon, 25 Mar 2024 17:35:10 +0100 Subject: [PATCH 02/24] adding a railway osm reader, similar to the existing highway approach --- .../osm/networkReader/OsmRailwayParser.java | 143 ++++++++++++++++++ .../osm/networkReader/OsmRailwayReader.java | 66 ++++++++ .../contrib/osm/networkReader/OsmTags.java | 10 ++ contribs/railsim/pom.xml | 7 + .../contrib/railsim/RunRailsimExample.java | 12 +- .../prepare/RunRailOsmNetworkReader.java | 43 ++++++ 6 files changed, 276 insertions(+), 5 deletions(-) create mode 100644 contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java create mode 100644 contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java create mode 100644 contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java new file mode 100644 index 00000000000..3e9c9053b55 --- /dev/null +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java @@ -0,0 +1,143 @@ +package org.matsim.contrib.osm.networkReader; + +import de.topobyte.osm4j.core.model.iface.OsmNode; +import de.topobyte.osm4j.core.model.iface.OsmWay; +import de.topobyte.osm4j.core.model.util.OsmModelUtil; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.matsim.api.core.v01.Coord; +import org.matsim.core.utils.geometry.CoordinateTransformation; + +import java.nio.file.Path; +import java.text.NumberFormat; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.function.BiPredicate; +import java.util.stream.Collectors; + +class OsmRailwayParser extends OsmNetworkParser { + + private static final Logger log = LogManager.getLogger(OsmRailwayParser.class); + private static final NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.UK); + + private final CoordinateTransformation transformation; + private final Map<String, LinkProperties> linkProperties; + private final BiPredicate<Coord, Integer> linkFilter; + final ExecutorService executor; + Map<Long, ProcessedOsmWay> ways; + Map<Long, ProcessedOsmNode> nodes; + Map<Long, List<ProcessedOsmWay>> nodeReferences; + + OsmRailwayParser(CoordinateTransformation transformation, Map<String, LinkProperties> linkProperties, BiPredicate<Coord, Integer> linkFilter, ExecutorService executor) { + super(transformation, linkProperties, linkFilter, executor); + + this.transformation = transformation; + this.linkProperties = linkProperties; + this.linkFilter = linkFilter; + this.executor = executor; + } + + public Map<Long, ProcessedOsmWay> getWays() { + return ways; + } + + public Map<Long, ProcessedOsmNode> getNodes() { + return nodes; + } + + void parse(Path inputFile) { + + // make sure we have empty collections + ways = new ConcurrentHashMap<>(); + nodes = new ConcurrentHashMap<>(); + nodeReferences = new ConcurrentHashMap<>(); + + new PbfParser.Builder() + .setWaysHandler(this::handleWay) + .setExecutor(executor) + .build() + .parse(inputFile); + + log.info("Finished reading ways"); + log.info("Starting to read nodes"); + + new PbfParser.Builder() + .setNodeHandler(this::handleNode) + .setExecutor(executor) + .build() + .parse(inputFile); + + log.info("finished reading nodes"); + } + + void handleNode(OsmNode osmNode) { + + if (nodeReferences.containsKey(osmNode.getId())) { + + List<ProcessedOsmWay> waysThatReferenceNode = nodeReferences.get(osmNode.getId()); + Coord transformedCoord = transformation.transform(new Coord(osmNode.getLongitude(), osmNode.getLatitude())); + + // 'testWhetherReferencingLinksAreInFilter' may be expensive because it might include a test whether the + // supplied coordinate is within a shape. Therefore we want to test as few cases as possible. Two cases are tested anyway: + // 1. if more than one way references this node, this node is an intersection and a possible end node for a + // matsim link. + // 2. if this node is either the start- or end node of a referencing way which makes it a candidate for a node + // in a matsim link as well + // + // if a way has both ends outside the filter and no intersections within the filter it will not be included + // in the final network. I think this is unlikely in real world scenarios, so I think we can live with this + // to achieve faster execution + List<ProcessedOsmWay> filteredReferencingLinks; + if (waysThatReferenceNode.size() > 1 || isEndNodeOfReferencingLink(osmNode, waysThatReferenceNode.get(0))) + filteredReferencingLinks = testWhetherReferencingLinksAreInFilter(transformedCoord, waysThatReferenceNode); + else + filteredReferencingLinks = Collections.emptyList(); + + ProcessedOsmNode result = new ProcessedOsmNode(osmNode.getId(), filteredReferencingLinks, transformedCoord); + this.nodes.put(result.getId(), result); + + if (nodes.size() % 100000 == 0) { + log.info("Added " + numberFormat.format(nodes.size()) + " nodes"); + } + } + } + + void handleWay(OsmWay osmWay) { + + Map<String, String> tags = OsmModelUtil.getTagsAsMap(osmWay); + + if (isStreetOfInterest(tags)) { + LinkProperties linkProperty = linkProperties.get(tags.get(OsmTags.RAILWAY)); + ProcessedOsmWay processedWay = ProcessedOsmWay.create(osmWay, tags, linkProperty); + ways.put(osmWay.getId(), processedWay); + + // keep track of which node is referenced by which way + for (int i = 0; i < osmWay.getNumberOfNodes(); i++) { + + long nodeId = osmWay.getNodeId(i); + nodeReferences.computeIfAbsent(nodeId, id -> Collections.synchronizedList(new ArrayList<>())) + .add(processedWay); + } + + if (ways.size() % 10000 == 0) { + log.info("Added " + numberFormat.format(ways.size()) + " ways"); + } + } + } + + private boolean isStreetOfInterest(Map<String, String> tags) { + return tags.containsKey(OsmTags.RAILWAY) && linkProperties.containsKey(tags.get(OsmTags.RAILWAY)); + } + + private boolean isEndNodeOfReferencingLink(OsmNode node, ProcessedOsmWay processedOsmWay) { + return processedOsmWay.getEndNodeId() == node.getId() || processedOsmWay.getStartNode() == node.getId(); + } + + private List<ProcessedOsmWay> testWhetherReferencingLinksAreInFilter(Coord coord, List<ProcessedOsmWay> waysThatReferenceNode) { + + return waysThatReferenceNode.stream() + .filter(way -> linkFilter.test(coord, way.getLinkProperties().hierarchyLevel)) + .collect(Collectors.toList()); + } +} diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java new file mode 100644 index 00000000000..faed409019c --- /dev/null +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java @@ -0,0 +1,66 @@ +package org.matsim.contrib.osm.networkReader; + +import java.util.Collection; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.Executors; +import java.util.function.BiPredicate; +import java.util.function.Predicate; + +import org.matsim.api.core.v01.Coord; +import org.matsim.api.core.v01.network.Link; +import org.matsim.core.network.NetworkUtils; + +public final class OsmRailwayReader extends SupersonicOsmNetworkReader { + + public OsmRailwayReader(OsmNetworkParser parser, + Predicate<Long> preserveNodeWithId, + BiPredicate<Coord, Integer> includeLinkAtCoordWithHierarchy, + AfterLinkCreated afterLinkCreated, double freeSpeedFactor, double adjustCapacityLength, boolean storeOriginalGeometry) { + + super(parser, preserveNodeWithId, includeLinkAtCoordWithHierarchy, (link, tags, direction) -> handleLink(link, tags, direction, afterLinkCreated), freeSpeedFactor, adjustCapacityLength, storeOriginalGeometry); + } + + private static void handleLink(Link link, Map<String, String> tags, SupersonicOsmNetworkReader.Direction direction, AfterLinkCreated outfacingCallback) { + + String railwayType = tags.get(OsmTags.RAILWAY); + link.getAttributes().putAttribute("osm_way_type", "railway"); + link.getAttributes().putAttribute(NetworkUtils.TYPE, railwayType); + + for (String tag : tags.keySet()) { + link.getAttributes().putAttribute(tag, tags.get(tag)); + } + + setAllowedModes(link, tags); + + outfacingCallback.accept(link, tags, direction); + } + + private static void setAllowedModes(Link link, Map<String, String> tags) { + if (tags.containsKey(OsmTags.SERVICE) && tags.get(OsmTags.SERVICE).equals("yard")) { + Set<String> allowedModes = new HashSet<>(); + link.setAllowedModes(allowedModes); + } else { + // everything else should be allowed for rail + Set<String> allowedModes = new HashSet<>(); + allowedModes.add("rail"); + link.setAllowedModes(allowedModes); + } + } + + @Override + Collection<Link> createLinks(WaySegment segment) { + Collection<Link> links = super.createLinks(segment); + return links; + } + + public static class Builder extends AbstractBuilder<OsmRailwayReader> { + + @Override + OsmRailwayReader createInstance() { + OsmRailwayParser parser = new OsmRailwayParser(coordinateTransformation, linkProperties, includeLinkAtCoordWithHierarchy, Executors.newWorkStealingPool()); + return new OsmRailwayReader(parser, preserveNodeWithId, includeLinkAtCoordWithHierarchy, afterLinkCreated, freeSpeedFactor, adjustCapacityLength, storeOriginalGeometry); + } + } +} diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java index 4d18e1c6d22..22cba7f7c83 100644 --- a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java @@ -42,4 +42,14 @@ public class OsmTags { public static final String CROSSING = "crossing"; public static final String TYPE = "type"; public static final String RESTRICTION = "restriction"; + + public static final String RAILWAY = "railway"; + public static final String RAIL = "rail"; + public static final String NARROW_GAUGE = "narrow_gauge"; + public static final String TRAM = "tram"; + public static final String FUNICULAR = "funicular"; + public static final String SUBWAY = "subway"; + public static final String LIGHT_RAIL = "light_rail"; + public static final String MONORAIL = "monorail"; + public static final String USAGE = "usage"; } diff --git a/contribs/railsim/pom.xml b/contribs/railsim/pom.xml index b6172ab206c..5398dba3ae7 100644 --- a/contribs/railsim/pom.xml +++ b/contribs/railsim/pom.xml @@ -28,6 +28,13 @@ <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> + + <dependency> + <groupId>org.matsim.contrib</groupId> + <artifactId>osm</artifactId> + <version>16.0-SNAPSHOT</version> + <scope>compile</scope> + </dependency> </dependencies> </project> diff --git a/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/RunRailsimExample.java b/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/RunRailsimExample.java index e4f69dbb5b7..5b5343ed8f6 100644 --- a/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/RunRailsimExample.java +++ b/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/RunRailsimExample.java @@ -19,7 +19,6 @@ package ch.sbb.matsim.contrib.railsim; -import ch.sbb.matsim.contrib.railsim.qsimengine.RailsimQSimModule; import org.matsim.api.core.v01.Scenario; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; @@ -27,6 +26,8 @@ import org.matsim.core.controler.OutputDirectoryHierarchy; import org.matsim.core.scenario.ScenarioUtils; +import ch.sbb.matsim.contrib.railsim.qsimengine.RailsimQSimModule; + /** * Example script that shows how to use railsim included in this contrib. */ @@ -37,12 +38,13 @@ private RunRailsimExample() { public static void main(String[] args) { - if (args.length == 0) { - System.err.println("Path to config is required as first argument."); - System.exit(2); + String configFilename; + if (args.length != 0) { + configFilename = args[0]; + } else { + configFilename = "test/input/ch/sbb/matsim/contrib/railsim/integration/microOlten/config.xml"; } - String configFilename = args[0]; Config config = ConfigUtils.loadConfig(configFilename); config.controller().setOverwriteFileSetting(OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); diff --git a/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java b/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java new file mode 100644 index 00000000000..841e535f50a --- /dev/null +++ b/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java @@ -0,0 +1,43 @@ +package ch.sbb.matsim.contrib.railsim.prepare; + +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +import org.matsim.api.core.v01.network.Network; +import org.matsim.api.core.v01.network.NetworkWriter; +import org.matsim.contrib.osm.networkReader.LinkProperties; +import org.matsim.contrib.osm.networkReader.OsmRailwayReader; +import org.matsim.contrib.osm.networkReader.OsmTags; +import org.matsim.core.network.algorithms.NetworkCleaner; +import org.matsim.core.utils.geometry.CoordinateTransformation; +import org.matsim.core.utils.geometry.transformations.TransformationFactory; + +public class RunRailOsmNetworkReader { + + private static final String inputFile = "path/to/file.osm.pbf"; + private static final String outputFile = "path/to/network.xml.gz"; + + private static final CoordinateTransformation coordinateTransformation = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, "EPSG:2056"); + + public static void main(String[] args) { + + ConcurrentMap<String, LinkProperties> linkProperties = new ConcurrentHashMap<>(); + linkProperties.put(OsmTags.RAIL, new LinkProperties(1, 1, 30., 1000., false)); + linkProperties.put(OsmTags.NARROW_GAUGE, new LinkProperties(2, 1, 30., 1000., false)); + linkProperties.put(OsmTags.LIGHT_RAIL, new LinkProperties(3, 1, 30., 1000., false)); + linkProperties.put(OsmTags.SUBWAY, new LinkProperties(4, 1, 30., 1000., false)); + linkProperties.put(OsmTags.MONORAIL, new LinkProperties(5, 1, 30., 1000., false)); + + Network network = new OsmRailwayReader.Builder() + .setCoordinateTransformation(coordinateTransformation) + .setLinkProperties(linkProperties) + .setPreserveNodeWithId(id -> true) // this filter keeps the detailed geometries + .build() + .read(inputFile); + + network.getAttributes().putAttribute("data_origin", "OSM"); + + new NetworkCleaner().run(network); + new NetworkWriter(network).write(outputFile); + } +} From 6a6b49f36f3fc63feec064afeacf4aa3b3fe332f Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Tue, 26 Mar 2024 11:13:23 +0100 Subject: [PATCH 03/24] improved setting of attributes --- .../osm/networkReader/OsmRailwayReader.java | 65 +++++++++++++++---- .../contrib/osm/networkReader/OsmTags.java | 6 ++ .../prepare/RunRailOsmNetworkReader.java | 26 +++----- 3 files changed, 67 insertions(+), 30 deletions(-) diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java index faed409019c..a2d6ffbf0e9 100644 --- a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java @@ -4,6 +4,8 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import java.util.concurrent.Executors; import java.util.function.BiPredicate; import java.util.function.Predicate; @@ -28,25 +30,49 @@ private static void handleLink(Link link, Map<String, String> tags, SupersonicOs link.getAttributes().putAttribute("osm_way_type", "railway"); link.getAttributes().putAttribute(NetworkUtils.TYPE, railwayType); - for (String tag : tags.keySet()) { - link.getAttributes().putAttribute(tag, tags.get(tag)); - } - + setAttributes(link, tags); setAllowedModes(link, tags); + setSpeed(link, tags); outfacingCallback.accept(link, tags, direction); } - private static void setAllowedModes(Link link, Map<String, String> tags) { - if (tags.containsKey(OsmTags.SERVICE) && tags.get(OsmTags.SERVICE).equals("yard")) { - Set<String> allowedModes = new HashSet<>(); - link.setAllowedModes(allowedModes); - } else { - // everything else should be allowed for rail - Set<String> allowedModes = new HashSet<>(); - allowedModes.add("rail"); - link.setAllowedModes(allowedModes); + private static void setSpeed(Link link, Map<String, String> tags) { + + } + + private static void setAttributes(Link link, Map<String, String> tags) { + + if (tags.containsKey(OsmTags.USAGE)) { + link.getAttributes().putAttribute(OsmTags.USAGE, tags.get(OsmTags.USAGE)); + } + + if (tags.containsKey(OsmTags.GAUGE)) { + link.getAttributes().putAttribute(OsmTags.GAUGE, tags.get(OsmTags.GAUGE)); } + + if (tags.containsKey(OsmTags.ELECTRIFIED)) { + link.getAttributes().putAttribute(OsmTags.ELECTRIFIED, tags.get(OsmTags.ELECTRIFIED)); + } + + if (tags.containsKey(OsmTags.MAXSPEED)) { + link.getAttributes().putAttribute(OsmTags.MAXSPEED, tags.get(OsmTags.MAXSPEED)); + } + + if (tags.containsKey(OsmTags.ETCS)) { + link.getAttributes().putAttribute(OsmTags.ETCS, tags.get(OsmTags.ETCS)); + } + + if (tags.containsKey(OsmTags.OPERATOR)) { + link.getAttributes().putAttribute(OsmTags.OPERATOR, tags.get(OsmTags.OPERATOR)); + } + + } + + private static void setAllowedModes(Link link, Map<String, String> tags) { + Set<String> allowedModes = new HashSet<>(); + allowedModes.add(tags.get(OsmTags.RAILWAY)); + link.setAllowedModes(allowedModes); } @Override @@ -57,6 +83,19 @@ Collection<Link> createLinks(WaySegment segment) { public static class Builder extends AbstractBuilder<OsmRailwayReader> { + public Builder() { + ConcurrentMap<String, LinkProperties> linkProperties = new ConcurrentHashMap<>(); + linkProperties.put(OsmTags.RAIL, new LinkProperties(1, 1, 30., 1000., false)); + linkProperties.put(OsmTags.NARROW_GAUGE, new LinkProperties(2, 1, 30., 1000., false)); + linkProperties.put(OsmTags.LIGHT_RAIL, new LinkProperties(3, 1, 30., 1000., false)); + linkProperties.put(OsmTags.MONORAIL, new LinkProperties(4, 1, 30., 1000., false)); + linkProperties.put(OsmTags.FUNICULAR, new LinkProperties(5, 1, 30., 1000., false)); + linkProperties.put(OsmTags.SUBWAY, new LinkProperties(6, 1, 30., 1000., false)); + linkProperties.put(OsmTags.TRAM, new LinkProperties(7, 1, 30., 1000., false)); + + setLinkProperties(linkProperties); + } + @Override OsmRailwayReader createInstance() { OsmRailwayParser parser = new OsmRailwayParser(coordinateTransformation, linkProperties, includeLinkAtCoordWithHierarchy, Executors.newWorkStealingPool()); diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java index 22cba7f7c83..0c5dc5d6cb2 100644 --- a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmTags.java @@ -52,4 +52,10 @@ public class OsmTags { public static final String LIGHT_RAIL = "light_rail"; public static final String MONORAIL = "monorail"; public static final String USAGE = "usage"; + public static final String GAUGE = "gauge"; + public static final String ELECTRIFIED = "electrified"; + public static final String ETCS = "etcs"; + public static final String OPERATOR = "operator"; + + } diff --git a/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java b/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java index 841e535f50a..f483d5c5185 100644 --- a/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java +++ b/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java @@ -1,43 +1,35 @@ package ch.sbb.matsim.contrib.railsim.prepare; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - import org.matsim.api.core.v01.network.Network; import org.matsim.api.core.v01.network.NetworkWriter; -import org.matsim.contrib.osm.networkReader.LinkProperties; import org.matsim.contrib.osm.networkReader.OsmRailwayReader; -import org.matsim.contrib.osm.networkReader.OsmTags; import org.matsim.core.network.algorithms.NetworkCleaner; import org.matsim.core.utils.geometry.CoordinateTransformation; import org.matsim.core.utils.geometry.transformations.TransformationFactory; public class RunRailOsmNetworkReader { - private static final String inputFile = "path/to/file.osm.pbf"; - private static final String outputFile = "path/to/network.xml.gz"; + private static final String baseDirectory = "path/to/directory/"; + + private static final String inputFile = baseDirectory + "switzerland-latest.osm.pbf"; + private static final String outputFile1 = baseDirectory + "switzerland_network.xml.gz"; + private static final String outputFile2 = baseDirectory + "switzerland_network_cleaned.xml.gz"; private static final CoordinateTransformation coordinateTransformation = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, "EPSG:2056"); public static void main(String[] args) { - - ConcurrentMap<String, LinkProperties> linkProperties = new ConcurrentHashMap<>(); - linkProperties.put(OsmTags.RAIL, new LinkProperties(1, 1, 30., 1000., false)); - linkProperties.put(OsmTags.NARROW_GAUGE, new LinkProperties(2, 1, 30., 1000., false)); - linkProperties.put(OsmTags.LIGHT_RAIL, new LinkProperties(3, 1, 30., 1000., false)); - linkProperties.put(OsmTags.SUBWAY, new LinkProperties(4, 1, 30., 1000., false)); - linkProperties.put(OsmTags.MONORAIL, new LinkProperties(5, 1, 30., 1000., false)); Network network = new OsmRailwayReader.Builder() .setCoordinateTransformation(coordinateTransformation) - .setLinkProperties(linkProperties) - .setPreserveNodeWithId(id -> true) // this filter keeps the detailed geometries + .setPreserveNodeWithId(id -> true) // this filter keeps the detailed geometries, only required for cosmetic reasons .build() .read(inputFile); network.getAttributes().putAttribute("data_origin", "OSM"); + new NetworkWriter(network).write(outputFile1); + new NetworkCleaner().run(network); - new NetworkWriter(network).write(outputFile); + new NetworkWriter(network).write(outputFile2); } } From 1d2dc59747e768af5e7d667f9045b487e8b1d4b3 Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Tue, 26 Mar 2024 11:43:28 +0100 Subject: [PATCH 04/24] add an alternative constructor which allows for other way types, e.g. railway --- .../osm/networkReader/OsmNetworkParser.java | 33 +++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmNetworkParser.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmNetworkParser.java index 168f57ace1a..4f4e9f72fe2 100644 --- a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmNetworkParser.java +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmNetworkParser.java @@ -28,12 +28,39 @@ class OsmNetworkParser { Map<Long, ProcessedOsmWay> ways; Map<Long, ProcessedOsmNode> nodes; Map<Long, List<ProcessedOsmWay>> nodeReferences; - + private final String wayType; + + /** + * The default constructor for roads (OSM highway tag) + * + * @param transformation + * @param linkProperties + * @param linkFilter + * @param executor + */ OsmNetworkParser(CoordinateTransformation transformation, Map<String, LinkProperties> linkProperties, BiPredicate<Coord, Integer> linkFilter, ExecutorService executor) { this.transformation = transformation; this.linkProperties = linkProperties; this.linkFilter = linkFilter; this.executor = executor; + this.wayType = OsmTags.HIGHWAY; + } + + /** + * A more flexible constructor which allows to pass a different way type, e.g. railway + * + * @param transformation + * @param linkProperties + * @param linkFilter + * @param executor + * @param wayType + */ + OsmNetworkParser(CoordinateTransformation transformation, Map<String, LinkProperties> linkProperties, BiPredicate<Coord, Integer> linkFilter, ExecutorService executor, String wayType) { + this.transformation = transformation; + this.linkProperties = linkProperties; + this.linkFilter = linkFilter; + this.executor = executor; + this.wayType = wayType; } public Map<Long, ProcessedOsmWay> getWays() { @@ -106,7 +133,7 @@ void handleWay(OsmWay osmWay) { Map<String, String> tags = OsmModelUtil.getTagsAsMap(osmWay); if (isStreetOfInterest(tags)) { - LinkProperties linkProperty = linkProperties.get(tags.get(OsmTags.HIGHWAY)); + LinkProperties linkProperty = linkProperties.get(tags.get(wayType)); ProcessedOsmWay processedWay = ProcessedOsmWay.create(osmWay, tags, linkProperty); ways.put(osmWay.getId(), processedWay); @@ -125,7 +152,7 @@ void handleWay(OsmWay osmWay) { } private boolean isStreetOfInterest(Map<String, String> tags) { - return tags.containsKey(OsmTags.HIGHWAY) && linkProperties.containsKey(tags.get(OsmTags.HIGHWAY)); + return tags.containsKey(wayType) && linkProperties.containsKey(tags.get(wayType)); } private boolean isEndNodeOfReferencingLink(OsmNode node, ProcessedOsmWay processedOsmWay) { From b74fdd29650ae5b349909ee477196b52b4b3a6a0 Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Tue, 26 Mar 2024 11:45:08 +0100 Subject: [PATCH 05/24] use more generic osm network parser --- .../org/matsim/contrib/osm/networkReader/OsmRailwayReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java index a2d6ffbf0e9..be35630e2a5 100644 --- a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java @@ -98,7 +98,7 @@ public Builder() { @Override OsmRailwayReader createInstance() { - OsmRailwayParser parser = new OsmRailwayParser(coordinateTransformation, linkProperties, includeLinkAtCoordWithHierarchy, Executors.newWorkStealingPool()); + OsmNetworkParser parser = new OsmNetworkParser(coordinateTransformation, linkProperties, includeLinkAtCoordWithHierarchy, Executors.newWorkStealingPool(), OsmTags.RAILWAY); return new OsmRailwayReader(parser, preserveNodeWithId, includeLinkAtCoordWithHierarchy, afterLinkCreated, freeSpeedFactor, adjustCapacityLength, storeOriginalGeometry); } } From cfff352ec7534eb53228c7423e47a4eec016b7d4 Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Tue, 26 Mar 2024 11:45:27 +0100 Subject: [PATCH 06/24] remove first copy paste approach --- .../osm/networkReader/OsmRailwayParser.java | 143 ------------------ 1 file changed, 143 deletions(-) delete mode 100644 contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java deleted file mode 100644 index 3e9c9053b55..00000000000 --- a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayParser.java +++ /dev/null @@ -1,143 +0,0 @@ -package org.matsim.contrib.osm.networkReader; - -import de.topobyte.osm4j.core.model.iface.OsmNode; -import de.topobyte.osm4j.core.model.iface.OsmWay; -import de.topobyte.osm4j.core.model.util.OsmModelUtil; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.matsim.api.core.v01.Coord; -import org.matsim.core.utils.geometry.CoordinateTransformation; - -import java.nio.file.Path; -import java.text.NumberFormat; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ExecutorService; -import java.util.function.BiPredicate; -import java.util.stream.Collectors; - -class OsmRailwayParser extends OsmNetworkParser { - - private static final Logger log = LogManager.getLogger(OsmRailwayParser.class); - private static final NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.UK); - - private final CoordinateTransformation transformation; - private final Map<String, LinkProperties> linkProperties; - private final BiPredicate<Coord, Integer> linkFilter; - final ExecutorService executor; - Map<Long, ProcessedOsmWay> ways; - Map<Long, ProcessedOsmNode> nodes; - Map<Long, List<ProcessedOsmWay>> nodeReferences; - - OsmRailwayParser(CoordinateTransformation transformation, Map<String, LinkProperties> linkProperties, BiPredicate<Coord, Integer> linkFilter, ExecutorService executor) { - super(transformation, linkProperties, linkFilter, executor); - - this.transformation = transformation; - this.linkProperties = linkProperties; - this.linkFilter = linkFilter; - this.executor = executor; - } - - public Map<Long, ProcessedOsmWay> getWays() { - return ways; - } - - public Map<Long, ProcessedOsmNode> getNodes() { - return nodes; - } - - void parse(Path inputFile) { - - // make sure we have empty collections - ways = new ConcurrentHashMap<>(); - nodes = new ConcurrentHashMap<>(); - nodeReferences = new ConcurrentHashMap<>(); - - new PbfParser.Builder() - .setWaysHandler(this::handleWay) - .setExecutor(executor) - .build() - .parse(inputFile); - - log.info("Finished reading ways"); - log.info("Starting to read nodes"); - - new PbfParser.Builder() - .setNodeHandler(this::handleNode) - .setExecutor(executor) - .build() - .parse(inputFile); - - log.info("finished reading nodes"); - } - - void handleNode(OsmNode osmNode) { - - if (nodeReferences.containsKey(osmNode.getId())) { - - List<ProcessedOsmWay> waysThatReferenceNode = nodeReferences.get(osmNode.getId()); - Coord transformedCoord = transformation.transform(new Coord(osmNode.getLongitude(), osmNode.getLatitude())); - - // 'testWhetherReferencingLinksAreInFilter' may be expensive because it might include a test whether the - // supplied coordinate is within a shape. Therefore we want to test as few cases as possible. Two cases are tested anyway: - // 1. if more than one way references this node, this node is an intersection and a possible end node for a - // matsim link. - // 2. if this node is either the start- or end node of a referencing way which makes it a candidate for a node - // in a matsim link as well - // - // if a way has both ends outside the filter and no intersections within the filter it will not be included - // in the final network. I think this is unlikely in real world scenarios, so I think we can live with this - // to achieve faster execution - List<ProcessedOsmWay> filteredReferencingLinks; - if (waysThatReferenceNode.size() > 1 || isEndNodeOfReferencingLink(osmNode, waysThatReferenceNode.get(0))) - filteredReferencingLinks = testWhetherReferencingLinksAreInFilter(transformedCoord, waysThatReferenceNode); - else - filteredReferencingLinks = Collections.emptyList(); - - ProcessedOsmNode result = new ProcessedOsmNode(osmNode.getId(), filteredReferencingLinks, transformedCoord); - this.nodes.put(result.getId(), result); - - if (nodes.size() % 100000 == 0) { - log.info("Added " + numberFormat.format(nodes.size()) + " nodes"); - } - } - } - - void handleWay(OsmWay osmWay) { - - Map<String, String> tags = OsmModelUtil.getTagsAsMap(osmWay); - - if (isStreetOfInterest(tags)) { - LinkProperties linkProperty = linkProperties.get(tags.get(OsmTags.RAILWAY)); - ProcessedOsmWay processedWay = ProcessedOsmWay.create(osmWay, tags, linkProperty); - ways.put(osmWay.getId(), processedWay); - - // keep track of which node is referenced by which way - for (int i = 0; i < osmWay.getNumberOfNodes(); i++) { - - long nodeId = osmWay.getNodeId(i); - nodeReferences.computeIfAbsent(nodeId, id -> Collections.synchronizedList(new ArrayList<>())) - .add(processedWay); - } - - if (ways.size() % 10000 == 0) { - log.info("Added " + numberFormat.format(ways.size()) + " ways"); - } - } - } - - private boolean isStreetOfInterest(Map<String, String> tags) { - return tags.containsKey(OsmTags.RAILWAY) && linkProperties.containsKey(tags.get(OsmTags.RAILWAY)); - } - - private boolean isEndNodeOfReferencingLink(OsmNode node, ProcessedOsmWay processedOsmWay) { - return processedOsmWay.getEndNodeId() == node.getId() || processedOsmWay.getStartNode() == node.getId(); - } - - private List<ProcessedOsmWay> testWhetherReferencingLinksAreInFilter(Coord coord, List<ProcessedOsmWay> waysThatReferenceNode) { - - return waysThatReferenceNode.stream() - .filter(way -> linkFilter.test(coord, way.getLinkProperties().hierarchyLevel)) - .collect(Collectors.toList()); - } -} From 49e34dac71e340b55e5f6e2cdb4466242f438cf7 Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Tue, 26 Mar 2024 12:56:42 +0100 Subject: [PATCH 07/24] adjust the railway defaults --- .../osm/networkReader/OsmRailwayReader.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java index be35630e2a5..d20d7693ef7 100644 --- a/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java +++ b/contribs/osm/src/main/java/org/matsim/contrib/osm/networkReader/OsmRailwayReader.java @@ -15,6 +15,8 @@ import org.matsim.core.network.NetworkUtils; public final class OsmRailwayReader extends SupersonicOsmNetworkReader { + + private static final double FALLBACK_MAX_SPEED = 100.; public OsmRailwayReader(OsmNetworkParser parser, Predicate<Long> preserveNodeWithId, @@ -57,6 +59,8 @@ private static void setAttributes(Link link, Map<String, String> tags) { if (tags.containsKey(OsmTags.MAXSPEED)) { link.getAttributes().putAttribute(OsmTags.MAXSPEED, tags.get(OsmTags.MAXSPEED)); + } else { + link.getAttributes().putAttribute(OsmTags.MAXSPEED, FALLBACK_MAX_SPEED); } if (tags.containsKey(OsmTags.ETCS)) { @@ -86,12 +90,12 @@ public static class Builder extends AbstractBuilder<OsmRailwayReader> { public Builder() { ConcurrentMap<String, LinkProperties> linkProperties = new ConcurrentHashMap<>(); linkProperties.put(OsmTags.RAIL, new LinkProperties(1, 1, 30., 1000., false)); - linkProperties.put(OsmTags.NARROW_GAUGE, new LinkProperties(2, 1, 30., 1000., false)); - linkProperties.put(OsmTags.LIGHT_RAIL, new LinkProperties(3, 1, 30., 1000., false)); - linkProperties.put(OsmTags.MONORAIL, new LinkProperties(4, 1, 30., 1000., false)); - linkProperties.put(OsmTags.FUNICULAR, new LinkProperties(5, 1, 30., 1000., false)); - linkProperties.put(OsmTags.SUBWAY, new LinkProperties(6, 1, 30., 1000., false)); - linkProperties.put(OsmTags.TRAM, new LinkProperties(7, 1, 30., 1000., false)); + linkProperties.put(OsmTags.NARROW_GAUGE, new LinkProperties(1, 1, 30., 1000., false)); + linkProperties.put(OsmTags.LIGHT_RAIL, new LinkProperties(1, 1, 30., 1000., false)); + linkProperties.put(OsmTags.MONORAIL, new LinkProperties(1, 1, 30., 1000., false)); + linkProperties.put(OsmTags.FUNICULAR, new LinkProperties(1, 1, 30., 1000., false)); + linkProperties.put(OsmTags.SUBWAY, new LinkProperties(1, 1, 30., 1000., false)); + linkProperties.put(OsmTags.TRAM, new LinkProperties(1, 1, 30., 1000., false)); setLinkProperties(linkProperties); } From c1df036411acab2e83f5eb8dab005c3ea0ec5633 Mon Sep 17 00:00:00 2001 From: ikaddoura <ihab.kaddoura@sbb.ch> Date: Tue, 9 Apr 2024 11:20:51 +0200 Subject: [PATCH 08/24] remove dependency to osm contrib --- contribs/railsim/pom.xml | 7 ---- .../prepare/RunRailOsmNetworkReader.java | 35 ------------------- 2 files changed, 42 deletions(-) delete mode 100644 contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java diff --git a/contribs/railsim/pom.xml b/contribs/railsim/pom.xml index 5398dba3ae7..b6172ab206c 100644 --- a/contribs/railsim/pom.xml +++ b/contribs/railsim/pom.xml @@ -28,13 +28,6 @@ <artifactId>mockito-core</artifactId> <scope>test</scope> </dependency> - - <dependency> - <groupId>org.matsim.contrib</groupId> - <artifactId>osm</artifactId> - <version>16.0-SNAPSHOT</version> - <scope>compile</scope> - </dependency> </dependencies> </project> diff --git a/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java b/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java deleted file mode 100644 index f483d5c5185..00000000000 --- a/contribs/railsim/src/main/java/ch/sbb/matsim/contrib/railsim/prepare/RunRailOsmNetworkReader.java +++ /dev/null @@ -1,35 +0,0 @@ -package ch.sbb.matsim.contrib.railsim.prepare; - -import org.matsim.api.core.v01.network.Network; -import org.matsim.api.core.v01.network.NetworkWriter; -import org.matsim.contrib.osm.networkReader.OsmRailwayReader; -import org.matsim.core.network.algorithms.NetworkCleaner; -import org.matsim.core.utils.geometry.CoordinateTransformation; -import org.matsim.core.utils.geometry.transformations.TransformationFactory; - -public class RunRailOsmNetworkReader { - - private static final String baseDirectory = "path/to/directory/"; - - private static final String inputFile = baseDirectory + "switzerland-latest.osm.pbf"; - private static final String outputFile1 = baseDirectory + "switzerland_network.xml.gz"; - private static final String outputFile2 = baseDirectory + "switzerland_network_cleaned.xml.gz"; - - private static final CoordinateTransformation coordinateTransformation = TransformationFactory.getCoordinateTransformation(TransformationFactory.WGS84, "EPSG:2056"); - - public static void main(String[] args) { - - Network network = new OsmRailwayReader.Builder() - .setCoordinateTransformation(coordinateTransformation) - .setPreserveNodeWithId(id -> true) // this filter keeps the detailed geometries, only required for cosmetic reasons - .build() - .read(inputFile); - - network.getAttributes().putAttribute("data_origin", "OSM"); - - new NetworkWriter(network).write(outputFile1); - - new NetworkCleaner().run(network); - new NetworkWriter(network).write(outputFile2); - } -} From 9d45f37cef8a8eff2ab8e48e744ff386677bfb8c Mon Sep 17 00:00:00 2001 From: Kai Nagel <nagel@vsp.tu-berlin.de> Date: Mon, 22 Apr 2024 08:25:34 +0200 Subject: [PATCH 09/24] mostly comments; some refactoring --- .../RunOneTaxiWithPrebookingExampleIT.java | 16 +-- .../mobsim/qsim/PreplanningEngineTest.java | 77 ++++++++++++ .../drtAndPt/PtAlongALine2Test.java | 9 +- .../mobsim/qsim/ActivityEngineWithWakeup.java | 5 +- .../core/mobsim/qsim/PreplanningEngine.java | 116 +++++++++++------- .../core/mobsim/qsim/PreplanningUtils.java | 15 +++ .../components/QSimComponentsConfigGroup.java | 9 ++ 7 files changed, 191 insertions(+), 56 deletions(-) create mode 100644 contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java create mode 100644 matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningUtils.java diff --git a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/examples/onetaxi/RunOneTaxiWithPrebookingExampleIT.java b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/examples/onetaxi/RunOneTaxiWithPrebookingExampleIT.java index b6661027c45..a5d8baff1cf 100644 --- a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/examples/onetaxi/RunOneTaxiWithPrebookingExampleIT.java +++ b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/examples/onetaxi/RunOneTaxiWithPrebookingExampleIT.java @@ -47,16 +47,14 @@ import org.matsim.contrib.dvrp.run.DvrpModule; import org.matsim.contrib.dvrp.run.DvrpQSimComponents; import org.matsim.api.core.v01.events.HasPersonId; +import org.matsim.contrib.otfvis.OTFVisLiveModule; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigGroup; import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.events.handler.BasicEventHandler; -import org.matsim.core.mobsim.qsim.AbstractQSimModule; -import org.matsim.core.mobsim.qsim.ActivityEngineModule; -import org.matsim.core.mobsim.qsim.ActivityEngineWithWakeup; -import org.matsim.core.mobsim.qsim.PreplanningEngine; +import org.matsim.core.mobsim.qsim.*; import org.matsim.core.mobsim.qsim.components.QSimComponentsConfigGroup; import org.matsim.core.scenario.ScenarioUtils; import org.matsim.core.utils.io.IOUtils; @@ -96,9 +94,7 @@ void testRun() { Scenario scenario = ScenarioUtils.loadScenario(config); for (Person person : scenario.getPopulation().getPersons().values()) { - person.getSelectedPlan() - .getAttributes() - .putAttribute(PreplanningEngine.PREBOOKING_OFFSET_ATTRIBUTE_NAME, 900.); + PreplanningUtils.setPrebookingOffset_s( person.getSelectedPlan(), 900. ); } //PopulationUtils.writePopulation(scenario.getPopulation(), utils.getOutputDirectory() + "/../pop.xml"); @@ -158,6 +154,12 @@ public void install() { } }); + if ("true".equals(System.getProperty("runOTFVis"))) { + // This will start otfvis + controler.addOverridingModule(new OTFVisLiveModule() ); + // !! does not work together with parameterized tests :-( !! + } + // run simulation controler.run(); diff --git a/contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java b/contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java new file mode 100644 index 00000000000..74536deae58 --- /dev/null +++ b/contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java @@ -0,0 +1,77 @@ +package org.matsim.core.mobsim.qsim; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; +import org.matsim.api.core.v01.Scenario; +import org.matsim.api.core.v01.population.Person; +import org.matsim.contrib.otfvis.OTFVisLiveModule; +import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; +import org.matsim.core.controler.Controler; +import org.matsim.core.mobsim.qsim.components.QSimComponentsConfigGroup; +import org.matsim.core.scenario.ScenarioUtils; +import org.matsim.core.utils.io.IOUtils; +import org.matsim.examples.ExamplesUtils; +import org.matsim.testcases.MatsimTestUtils; + +import javax.inject.Singleton; + +class PreplanningEngineTest{ + // Cannot use otfvis if in core matsim. --> In vsp contrib for time being. kai, apr'24 + private static final Logger log = LogManager.getLogger(PreplanningEngineTest.class ); + + @RegisterExtension private MatsimTestUtils utils = new MatsimTestUtils(); + + @Test public void test() { + // I am interested here in testing this NOT with DRT but with other modes. kai, apr'24 + // In the somewhat longer run, should work together with fleetpy (of TUM). kai, apr'24 + + Config config = ConfigUtils.loadConfig( IOUtils.extendUrl( ExamplesUtils.getTestScenarioURL( "equil" ), "config.xml" ) ); + + config.controller().setOutputDirectory( utils.getOutputDirectory() ); + config.controller().setLastIteration( 0 ); + + QSimComponentsConfigGroup componentsConfig = ConfigUtils.addOrGetModule( config, QSimComponentsConfigGroup.class ); + + componentsConfig.removeActiveComponent( ActivityEngineModule.COMPONENT_NAME ); + componentsConfig.addActiveComponent( ActivityEngineWithWakeup.COMPONENT_NAME ); + + componentsConfig.addActiveComponent( PreplanningEngineQSimModule.COMPONENT_NAME ); + + Scenario scenario = ScenarioUtils.loadScenario( config ); + for( Person person : scenario.getPopulation().getPersons().values() ){ + PreplanningUtils.setPrebookingOffset_s( person.getSelectedPlan(), 900. ); + } + + Controler controler = new Controler( scenario ); + + controler.addOverridingQSimModule( new AbstractQSimModule(){ + @Override protected void configureQSim(){ + bind(PreplanningEngine.class).asEagerSingleton(); + addQSimComponentBinding(PreplanningEngineQSimModule.COMPONENT_NAME).to(PreplanningEngine.class).in( Singleton.class ); + // Does the following: + // * on prepare sim: register all departure handlers that implement the TripInfo.Provider interface + // * + + // the above just installs the functionality; it also needs to be requested (from config). + + // needs to go along with ActivityEngineWithWakeup. complains if not bound. + // yy is, however, ok if bound but not activated. --?? --> should end up in same module! + + addQSimComponentBinding( ActivityEngineWithWakeup.COMPONENT_NAME ).to( ActivityEngineWithWakeup.class ).in( Singleton.class ); + + } + } ); + + if ("true".equals(System.getProperty("runOTFVis"))) { + // This will start otfvis if property is set + controler.addOverridingModule(new OTFVisLiveModule() ); + // !! does not work together with parameterized tests :-( !! + } + + controler.run(); + } + +} diff --git a/contribs/vsp/src/test/java/org/matsim/integration/drtAndPt/PtAlongALine2Test.java b/contribs/vsp/src/test/java/org/matsim/integration/drtAndPt/PtAlongALine2Test.java index 7d884443580..3a1e217d4f4 100644 --- a/contribs/vsp/src/test/java/org/matsim/integration/drtAndPt/PtAlongALine2Test.java +++ b/contribs/vsp/src/test/java/org/matsim/integration/drtAndPt/PtAlongALine2Test.java @@ -45,10 +45,7 @@ import org.matsim.core.controler.Controler; import org.matsim.core.controler.events.IterationEndsEvent; import org.matsim.core.controler.listener.IterationEndsListener; -import org.matsim.core.mobsim.qsim.AbstractQSimModule; -import org.matsim.core.mobsim.qsim.ActivityEngineModule; -import org.matsim.core.mobsim.qsim.ActivityEngineWithWakeup; -import org.matsim.core.mobsim.qsim.PreplanningEngine; +import org.matsim.core.mobsim.qsim.*; import org.matsim.core.mobsim.qsim.components.QSimComponentsConfigGroup; import org.matsim.core.router.AnalysisMainModeIdentifier; import org.matsim.core.router.TripStructureUtils; @@ -321,9 +318,7 @@ void testPtAlongALineWithRaptorAndDrtServiceArea() { } if (drtMode == DrtMode.withPrebooking) { for (Person person : scenario.getPopulation().getPersons().values()) { - person.getSelectedPlan() - .getAttributes() - .putAttribute(PreplanningEngine.PREBOOKING_OFFSET_ATTRIBUTE_NAME, 7200.); + PreplanningUtils.setPrebookingOffset_s( person.getSelectedPlan(), 7200. ); } } diff --git a/matsim/src/main/java/org/matsim/core/mobsim/qsim/ActivityEngineWithWakeup.java b/matsim/src/main/java/org/matsim/core/mobsim/qsim/ActivityEngineWithWakeup.java index b23b695b9d4..64d9e9a3319 100644 --- a/matsim/src/main/java/org/matsim/core/mobsim/qsim/ActivityEngineWithWakeup.java +++ b/matsim/src/main/java/org/matsim/core/mobsim/qsim/ActivityEngineWithWakeup.java @@ -26,6 +26,8 @@ import jakarta.inject.Inject; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.events.Event; import org.matsim.api.core.v01.population.Activity; @@ -37,7 +39,7 @@ public final class ActivityEngineWithWakeup implements ActivityEngine { public static final String COMPONENT_NAME = "ActivityEngineWithWakeup"; - + private static final Logger log = LogManager.getLogger(ActivityEngineWithWakeup.class ); private final EventsManager eventsManager; private final PreplanningEngine preplanningEngine; private final ActivityEngine delegate; @@ -55,6 +57,7 @@ public final class ActivityEngineWithWakeup implements ActivityEngine { @Override public void onPrepareSim() { + log.warn( "running onPrepareSim"); delegate.onPrepareSim(); } diff --git a/matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningEngine.java b/matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningEngine.java index 0f34e2d4a5b..5232b826ccf 100644 --- a/matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningEngine.java +++ b/matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningEngine.java @@ -72,11 +72,12 @@ import com.google.inject.Inject; public final class PreplanningEngine implements MobsimEngine { - // Could implement this as a generalized version of the bdi-abm implementation: can send notifications to agent, and agent can react. Similar to the drive-to action. - // Notifications and corresponding handlers could then be registered. On the other hand, it is easy to add an engine such as this one; how much does it help to have another - // layer of infrastructure? Am currently leaning towards the second argument. kai, mar'19 + // Could implement this as a generalized version of the bdi-abm implementation: can send notifications to agent, and agent can react. Similar + // to the drive-to action. Notifications and corresponding handlers could then be registered. - public static final String PREBOOKING_OFFSET_ATTRIBUTE_NAME = "prebookingOffset_s"; + // On the other hand, it is easy to add an engine such as this one; how much does it help to have another layer of infrastructure? + + // Am currently leaning towards the second argument. kai, mar'19 private static final Logger log = LogManager.getLogger(PreplanningEngine.class); @@ -93,9 +94,11 @@ public final class PreplanningEngine implements MobsimEngine { private final Map<MobsimAgent, Optional<TripInfo>> tripInfoUpdatesMap = new TreeMap<>(comparing(Identifiable::getId )); // yyyy not sure about possible race conditions here! kai, feb'19 // yyyyyy can't have non-sorted maps here because we will get non-deterministic results. kai, mar'19 + // (haven't these two points be fixed by using the "comparing"? kai, apr'24) private final Map<MobsimAgent, TripInfo.Request> tripInfoRequestMap = new TreeMap<>(comparing(Identifiable::getId )); // yyyyyy can't have non-sorted maps here because we will get non-deterministic results. kai, mar'19 + // (hasn't this point be fixed by using the "comparing"? kai, apr'24) private EditPlans editPlans; @@ -113,6 +116,7 @@ public final class PreplanningEngine implements MobsimEngine { } @Override public void onPrepareSim() { + log.warn( "running onPrepareSim"); for (DepartureHandler departureHandler : internalInterface.getDepartureHandlers()) { if (departureHandler instanceof TripInfo.Provider) { String mode = ((TripInfo.Provider)departureHandler).getMode(); @@ -136,7 +140,8 @@ public final class PreplanningEngine implements MobsimEngine { // (I have inlined the below methods since I find this for the time being easier to read. Can be extracted again at some later point in time . // kai, jan'20) - // process all (initial) requests: + // the following goes through all requests (generated by the agent wakups), send them to the trip info providers, and decide based on + // the returned information: for (Map.Entry<MobsimAgent, TripInfo.Request> entry : tripInfoRequestMap.entrySet()) { final MobsimAgent mobsimAgent = entry.getKey(); final TripInfo.Request request = entry.getValue(); @@ -149,11 +154,14 @@ public final class PreplanningEngine implements MobsimEngine { // TODO add info for mode that is in agent plan, if not returned by trip info provider // not sure if that is needed. kai, jan'20 + // the following method decides, and + // * puts it then into the tripInfoUpdatesMap (processed below); or + // * if the agent needs to wait for confirmation, the confirming method (currently only in PassengerEngineWithPrebooking) puts it into tripInfoUpdatesMap. decide( mobsimAgent, allTripInfos ); } tripInfoRequestMap.clear(); - // process all updates: + // process the tripInfoUpdatesMap (see above): for (Map.Entry<MobsimAgent, Optional<TripInfo>> entry : tripInfoUpdatesMap.entrySet()) { MobsimAgent agent = entry.getKey(); @@ -163,6 +171,14 @@ public final class PreplanningEngine implements MobsimEngine { TripInfo actualTripInfo = tripInfo.get(); updateAgentPlan(agent, actualTripInfo); } else { + // this can e.g. happen if the booking failed. At first glance, I am not too happy about this. I think that if a + // provider is not able to process the trip, it should not return a TripInfo offer. At second glance, it may happen + // that no provider returns a TripInfo offer. Now evidently, this could be avoided by always allowing for a fallback + // mode, e.g. walk and/or pt. On the other hand, since the functionality is already here, we can as well try to keep + // it. However, need to make sure that it eventually gets resolved. Also see the questions below. + + // in principle, one could always give the pt TripOption. However, this would be fairly expensive to compute. + TripInfo.Request request = null; //TODO get it from where ??? from TripInfo??? //TODO agent should adapt trip info request given that the previous one got rejected?? @@ -175,8 +191,10 @@ public final class PreplanningEngine implements MobsimEngine { // (I have inlined the above methods since I find this for the time being easier to read. Can be extracted again at some later point in time . kai, jan'20) } - public synchronized final void notifyChangedTripInformation(MobsimAgent agent, Optional<TripInfo> tripInfoUpdate) { + public synchronized void notifyChangedTripInformation( MobsimAgent agent, Optional<TripInfo> tripInfoUpdate ) { // yyyy My IDE complains about "Optional" in method signatures. kai, jan'20 + // It looks like it needs to be possible to return an "empty" tripInfoUpdate in order to notify that the "decided" (= selected) trip + // option did not work out. Or, alternatively, none of the providers returned an answer at all. tripInfoUpdatesMap.put(agent, tripInfoUpdate); } @@ -195,7 +213,7 @@ private void decide(MobsimAgent agent, List<TripInfo> allTripInfos) { } // to get started, we assume that we are only getting one drt option back. - // TODO: make complete + // yyyy TODO: evidently, this needs to be changed to mode choice between available modes. kai, apr'24 TripInfo tripInfo = allTripInfos.iterator().next(); if (tripInfo instanceof TripInfoWithRequiredBooking) { @@ -220,9 +238,15 @@ private void decide(MobsimAgent agent, List<TripInfo> allTripInfos) { editPlans.rescheduleActivityEnd(agent); + // (if the trip requires booking, the booking confirmation comes later, so we need to delay the call to + // notifyChangedTripInformation until we have confirmation. The "notifyChangedTripInfo" is actually called from within dvrp (PassengerEngineWithPrebooking). ) } else { - notifyChangedTripInformation(agent, Optional.of(tripInfo));//no booking here + // if we do not have to wait for the booking confirmation, we can immediately compute and insert the trip. This is (once + // more) done by first collecting it into a container, and process the container later. To achieve thread safety, inserting + // it into the container is a "synchronized" method: + notifyChangedTripInformation(agent, Optional.of(tripInfo)); } + log.warn("---"); } @@ -232,12 +256,10 @@ List<ActivityEngineWithWakeup.AgentEntry> generateWakeups( MobsimAgent agent, do return Collections.emptyList(); } - - Double prebookingOffset_s = (Double)((PlanAgent)agent).getCurrentPlan().getAttributes().getAttribute(PREBOOKING_OFFSET_ATTRIBUTE_NAME); - // yyyy prebooking info needs to be in plan since it will not survive in the leg. :-( kai, jan'20 + final Double prebookingOffset_s = PreplanningUtils.getPrebookingOffset_s( ((PlanAgent) agent).getCurrentPlan() ); if (prebookingOffset_s == null) { - log.warn("The " + PREBOOKING_OFFSET_ATTRIBUTE_NAME + " is not set in the agent. No wakeup for prebooking will be generated."); + log.warn("The " + "prebookingOffset_s" + " is not set in the agent. No wakeup for prebooking will be generated." ); return Collections.emptyList(); } @@ -246,12 +268,16 @@ List<ActivityEngineWithWakeup.AgentEntry> generateWakeups( MobsimAgent agent, do for (String mode : new String[] { TransportMode.drt, TransportMode.taxi } ) { // (only do the following for drt and taxi yyyy which means it may fail for, say, "drt2". kai, apr'23) + // (not doing this for, say, pt, is fine, though. we could still have pt as fallback mode for drt/taxi.) + for (Leg drtLeg : EditPlans.findLegsWithModeInFuture(agent, mode )) { // (find the corresponding legs) final double prebookingTime = drtLeg.getDepartureTime().seconds() - prebookingOffset_s; if (prebookingTime < agent.getActivityEndTime()) { - // yyyy and here one sees that having this in the activity engine is not very practical + // (yyyy and here one sees that having this in the activity engine is not very practical) + + // ### the following inserts the preplanLeg (--> preplanTrip??), to be executed at wakeup: ### log.info("generating wakeup entry"); wakeups.add(new ActivityEngineWithWakeup.AgentEntry(agent, prebookingTime, (agent1, then) -> preplanLeg(agent1, then, drtLeg )) ); } @@ -299,6 +325,12 @@ private void preplanLeg( MobsimAgent agent, double now, Leg leg ) { //first simulate ActivityEngineWithWakeup and then PreplanningEngine --> decision process //in the same time step this.notifyTripInfoNeeded(agent, request); + + // (this enters the request into tripInfoRequestMap ... would be easier to read this if it was inlined ... but the method needs to be + // threadsafe and this is easier to achieve with a separate method. kai, apr'24) + + // (the tripInfoRequestMap will be processed in every time step. Not sure if we can enforce that this happens after processing the + // wakeups, so it may happen in the following time step (--???). This would contradict the comment above the method call. kai, apr'24 ) } private void updateAgentPlan(MobsimAgent agent, TripInfo tripInfo) { @@ -327,33 +359,47 @@ private void updateAgentPlan(MobsimAgent agent, TripInfo tripInfo) { } Gbl.assertNotNull(inputTrip); - List<PlanElement> result = new ArrayList<>(); - inputTrip.getOriginActivity().setEndTime(tripInfo.getExpectedBoardingTime() - 900); // yyyy means for time being we always depart 15min before pickup. kai, mar'19 WithinDayAgentUtils.resetCaches(agent); log.warn("agentId=" + agent.getId() + " | newActEndTime=" + inputTrip.getOriginActivity() - .getEndTime() - .seconds()); + .getEndTime() + .seconds()); + + final List<PlanElement> result = createDrtTripInclAccessEgress( tripInfo, inputTrip ); + + TripRouter.insertTrip(plan, inputTrip.getOriginActivity(), result, inputTrip.getDestinationActivity()); + + editPlans.rescheduleActivityEnd(agent); + // I don't think that this can ever do damage. + + log.warn("new plan for agentId=" + agent.getId()); + for (PlanElement planElement : plan.getPlanElements()) { + log.warn(planElement.toString()); + } + log.warn("---"); + + } + private List<PlanElement> createDrtTripInclAccessEgress( TripInfo tripInfo, TripStructureUtils.Trip inputTrip ){ + // code below currently has taxi hardcoded but this is not necessary IMO. kai, apr'24 - // result.add( inputTrip.getOriginActivity() ) ; - // --- + List<PlanElement> result = new ArrayList<>(); PopulationFactory pf = population.getFactory(); { - Facility fromFacility = FacilitiesUtils.toFacility(inputTrip.getOriginActivity(), facilities); + Facility fromFacility = FacilitiesUtils.toFacility( inputTrip.getOriginActivity(), facilities ); Facility toFacility = tripInfo.getPickupLocation(); double departureTime = tripInfo.getExpectedBoardingTime() - 900.; // always depart 15min before pickup List<? extends PlanElement> planElements = tripRouter.calcRoute(TransportMode.walk, fromFacility, - toFacility, departureTime, null, inputTrip.getTripAttributes()); + toFacility, departureTime, null, inputTrip.getTripAttributes() ); // not sure if this works for walk, but it should ... result.addAll(planElements); } { Activity act = pf.createActivityFromLinkId(createStageActivityType(TransportMode.taxi), - tripInfo.getPickupLocation().getLinkId()); + tripInfo.getPickupLocation().getLinkId() ); act.setMaximumDuration(0.); result.add(act); } @@ -362,45 +408,33 @@ private void updateAgentPlan(MobsimAgent agent, TripInfo tripInfo) { result.add(leg); Route route = pf.getRouteFactories() .createRoute(GenericRouteImpl.class, tripInfo.getPickupLocation().getLinkId(), - tripInfo.getDropoffLocation().getLinkId()); + tripInfo.getDropoffLocation().getLinkId() ); leg.setRoute(route); } { Activity act = pf.createActivityFromLinkId(createStageActivityType(TransportMode.taxi), - tripInfo.getDropoffLocation().getLinkId()); + tripInfo.getDropoffLocation().getLinkId() ); act.setMaximumDuration(0.); result.add(act); } { Facility fromFacility = tripInfo.getDropoffLocation(); - Facility toFacility = FacilitiesUtils.toFacility(inputTrip.getDestinationActivity(), facilities); + Facility toFacility = FacilitiesUtils.toFacility( inputTrip.getDestinationActivity(), facilities ); double expectedTravelTime; try { expectedTravelTime = tripInfo.getExpectedTravelTime(); } catch (Exception ee) { - expectedTravelTime = 15. - * 60; // using 15min as quick fix since dvrp refuses to provide this. kai, mar'19 + expectedTravelTime = 15. * 60; // using 15min as quick fix since dvrp refuses to provide this. kai, mar'19 } double departureTime = tripInfo.getExpectedBoardingTime() + expectedTravelTime; List<? extends PlanElement> planElements = tripRouter.calcRoute(TransportMode.walk, fromFacility, - toFacility, departureTime, null, inputTrip.getOriginActivity().getAttributes()); + toFacility, departureTime, null, inputTrip.getOriginActivity().getAttributes() ); result.addAll(planElements); } // result.add( inputTrip.getDestinationActivity() ) ; - - TripRouter.insertTrip(plan, inputTrip.getOriginActivity(), result, inputTrip.getDestinationActivity()); - - editPlans.rescheduleActivityEnd(agent); - // I don't think that this can ever do damage. - - log.warn("new plan for agentId=" + agent.getId()); - for (PlanElement planElement : plan.getPlanElements()) { - log.warn(planElement.toString()); - } - log.warn("---"); - + return result; } static String toString(TripInfo info) { diff --git a/matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningUtils.java b/matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningUtils.java new file mode 100644 index 00000000000..bfc117ca153 --- /dev/null +++ b/matsim/src/main/java/org/matsim/core/mobsim/qsim/PreplanningUtils.java @@ -0,0 +1,15 @@ +package org.matsim.core.mobsim.qsim; + +import org.matsim.api.core.v01.population.Plan; + +public class PreplanningUtils{ + private PreplanningUtils() {} // do not instantiate + public static Double getPrebookingOffset_s( Plan plan ){ + // yyyy prebooking info needs to be in plan since it will not survive in the leg. :-( kai, jan'20 + return (Double) plan.getAttributes().getAttribute( "prebookingOffset_s" ); + } + public static void setPrebookingOffset_s( Plan plan, double offset ){ + plan.getAttributes().putAttribute( "prebookingOffset_s", offset ); + // yyyy prebooking info needs to be in plan since it will not survive in the leg. :-( kai, jan'20 + } +} diff --git a/matsim/src/main/java/org/matsim/core/mobsim/qsim/components/QSimComponentsConfigGroup.java b/matsim/src/main/java/org/matsim/core/mobsim/qsim/components/QSimComponentsConfigGroup.java index 8878ebe4118..c21058da8b3 100644 --- a/matsim/src/main/java/org/matsim/core/mobsim/qsim/components/QSimComponentsConfigGroup.java +++ b/matsim/src/main/java/org/matsim/core/mobsim/qsim/components/QSimComponentsConfigGroup.java @@ -80,6 +80,15 @@ public void addActiveComponent( String component ) { // (doing this the indirect way because of the Set vs List discussion above. kai, apr'23 } + public void removeActiveComponent( String component ) { + // I need this so often that I am finally adding it here. kai, apr'24 + + List<String> components = getActiveComponents(); + components.remove( component ); + setActiveComponents( components ); + // (doing this the indirect way because of the Set vs List discussion above. kai, apr'24 + } + @StringGetter(ACTIVE_COMPONENTS) public String getActiveComponentsAsString() { return String.join(", ", activeComponents); From 8a219568299e6c456c209a3339feb42ec134fbd7 Mon Sep 17 00:00:00 2001 From: Kai Nagel <nagel@vsp.tu-berlin.de> Date: Mon, 22 Apr 2024 14:01:01 +0200 Subject: [PATCH 10/24] I added a testcase but did not finish it. It currently fails. Thus disabling it. --- .../java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java b/contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java index 74536deae58..b7ac20ef8bb 100644 --- a/contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java +++ b/contribs/vsp/src/test/java/org/matsim/core/mobsim/qsim/PreplanningEngineTest.java @@ -2,6 +2,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; import org.matsim.api.core.v01.Scenario; @@ -24,6 +25,7 @@ class PreplanningEngineTest{ @RegisterExtension private MatsimTestUtils utils = new MatsimTestUtils(); + @Disabled @Test public void test() { // I am interested here in testing this NOT with DRT but with other modes. kai, apr'24 // In the somewhat longer run, should work together with fleetpy (of TUM). kai, apr'24 From c8c4bd9ca05dd4c5ca8d4d6a878c7def2ff204d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20H=C3=B6rl?= <sebastian.horl@irt-systemx.fr> Date: Mon, 22 Apr 2024 16:20:39 +0200 Subject: [PATCH 11/24] fix: default vehicle type id (#3156) * fix: default vehicle type id * fix unit test in freight * change getDefaultVehicleType to createDefaultVehicleType * fix test --- .../carsharing/qsim/ParkCSVehicles.java | 8 ++-- .../contrib/dvrp/fleet/FleetModule.java | 2 +- .../examples/random/RandomDynAgentSource.java | 2 +- .../passenger/DefaultPassengerEngineTest.java | 2 +- .../dvrp/passenger/PassengerGroupTest.java | 2 +- .../contrib/dvrp/router/DiversionTest.java | 2 +- .../controler/FreightAgentSource.java | 4 +- .../freight/carriers/CarriersUtilsTest.java | 9 ++-- .../sim/ParkingPopulationAgentSource.java | 2 +- .../analysis/skims/NetworkSkimMatrices.java | 2 +- .../run/SharingVehicleSource.java | 2 +- .../PopulationAgentSourceWithVehicles.java | 2 +- ...ilityTollTimeDistanceTravelDisutility.java | 2 +- ...ssionTollTimeDistanceTravelDisutility.java | 2 +- .../core/controler/PrepareForSimImpl.java | 2 +- .../core/mobsim/hermes/ScenarioImporter.java | 2 +- .../leastcostpathtree/LeastCostPathTree.java | 2 +- .../org/matsim/vehicles/VehicleUtils.java | 15 +++---- .../qsim/NetsimRoutingConsistencyTest.java | 8 ++-- ...workRoutingInclAccessEgressModuleTest.java | 6 ++- .../vehicles/DefaultVehicleTypeTest.java | 42 +++++++++++++++++++ 21 files changed, 85 insertions(+), 35 deletions(-) create mode 100644 matsim/src/test/java/org/matsim/vehicles/DefaultVehicleTypeTest.java diff --git a/contribs/carsharing/src/main/java/org/matsim/contrib/carsharing/qsim/ParkCSVehicles.java b/contribs/carsharing/src/main/java/org/matsim/contrib/carsharing/qsim/ParkCSVehicles.java index 666920c2aa9..b40618c00eb 100644 --- a/contribs/carsharing/src/main/java/org/matsim/contrib/carsharing/qsim/ParkCSVehicles.java +++ b/contribs/carsharing/src/main/java/org/matsim/contrib/carsharing/qsim/ParkCSVehicles.java @@ -34,13 +34,13 @@ public ParkCSVehicles(QSim qSim, this.mainModes = qsim.getScenario().getConfig().qsim().getMainModes(); for (String mode : mainModes) { - modeVehicleTypes.put(mode, VehicleUtils.getDefaultVehicleType()); + modeVehicleTypes.put(mode, VehicleUtils.createDefaultVehicleType()); } this.carsharingSupply = carsharingSupply; - modeVehicleTypes.put("twoway", VehicleUtils.getDefaultVehicleType()); - modeVehicleTypes.put("freefloating", VehicleUtils.getDefaultVehicleType()); + modeVehicleTypes.put("twoway", VehicleUtils.createDefaultVehicleType()); + modeVehicleTypes.put("freefloating", VehicleUtils.createDefaultVehicleType()); - modeVehicleTypes.put("oneway", VehicleUtils.getDefaultVehicleType()); + modeVehicleTypes.put("oneway", VehicleUtils.createDefaultVehicleType()); } diff --git a/contribs/dvrp/src/main/java/org/matsim/contrib/dvrp/fleet/FleetModule.java b/contribs/dvrp/src/main/java/org/matsim/contrib/dvrp/fleet/FleetModule.java index 2a49ab78f37..a6afe189882 100644 --- a/contribs/dvrp/src/main/java/org/matsim/contrib/dvrp/fleet/FleetModule.java +++ b/contribs/dvrp/src/main/java/org/matsim/contrib/dvrp/fleet/FleetModule.java @@ -52,7 +52,7 @@ public FleetModule(String mode, URL fleetSpecificationUrl, boolean updateVehicle this.fleetSpecificationUrl = fleetSpecificationUrl; this.updateVehicleStartLinkToLastLink = updateVehicleStartLinkToLastLink; - vehicleType = VehicleUtils.getDefaultVehicleType(); + vehicleType = VehicleUtils.createDefaultVehicleType(); } public FleetModule(String mode, URL fleetSpecificationUrl, VehicleType vehicleType) { diff --git a/contribs/dvrp/src/main/java/org/matsim/contrib/dynagent/examples/random/RandomDynAgentSource.java b/contribs/dvrp/src/main/java/org/matsim/contrib/dynagent/examples/random/RandomDynAgentSource.java index 373a824f13e..273fb016756 100644 --- a/contribs/dvrp/src/main/java/org/matsim/contrib/dynagent/examples/random/RandomDynAgentSource.java +++ b/contribs/dvrp/src/main/java/org/matsim/contrib/dynagent/examples/random/RandomDynAgentSource.java @@ -61,7 +61,7 @@ public void insertAgentsIntoMobsim() { // qSim.createAndParkVehicleOnLink(qSimVehicleFactory.createVehicle(Id.create(id, Vehicle.class), // VehicleUtils.getDefaultVehicleType()), startLinkId); - final Vehicle vehicle = qSimVehicleFactory.createVehicle( Id.create( id, Vehicle.class ), VehicleUtils.getDefaultVehicleType() ) ; + final Vehicle vehicle = qSimVehicleFactory.createVehicle( Id.create( id, Vehicle.class ), VehicleUtils.createDefaultVehicleType() ) ; QVehicle qVehicle = new QVehicleImpl( vehicle ) ; // yyyyyy should use factory. kai, nov'18 qSim.addParkedVehicle( qVehicle, startLinkId ); diff --git a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/DefaultPassengerEngineTest.java b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/DefaultPassengerEngineTest.java index 97579d14517..d9664a3aaf8 100644 --- a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/DefaultPassengerEngineTest.java +++ b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/DefaultPassengerEngineTest.java @@ -188,7 +188,7 @@ protected void configureQSim() { //supply addQSimComponentBinding(DynActivityEngine.COMPONENT_NAME).to(DynActivityEngine.class); bindModal(Fleet.class).toInstance(fleet); - bindModal(VehicleType.class).toInstance(VehicleUtils.getDefaultVehicleType()); + bindModal(VehicleType.class).toInstance(VehicleUtils.createDefaultVehicleType()); bindModal(VrpOptimizer.class).to(optimizerClass).asEagerSingleton(); bindModal(VrpAgentLogic.DynActionCreator.class).to(OneTaxiActionCreator.class) .asEagerSingleton(); diff --git a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/PassengerGroupTest.java b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/PassengerGroupTest.java index 61a9804b4bf..c10c51eb838 100644 --- a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/PassengerGroupTest.java +++ b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/passenger/PassengerGroupTest.java @@ -120,7 +120,7 @@ protected void configureQSim() { //supply addQSimComponentBinding(DynActivityEngine.COMPONENT_NAME).to(DynActivityEngine.class); bindModal(Fleet.class).toInstance(fleet); - bindModal(VehicleType.class).toInstance(VehicleUtils.getDefaultVehicleType()); + bindModal(VehicleType.class).toInstance(VehicleUtils.createDefaultVehicleType()); bindModal(VrpOptimizer.class).to(optimizerClass).asEagerSingleton(); bindModal(VrpAgentLogic.DynActionCreator.class).to(OneTaxiActionCreator.class) .asEagerSingleton(); diff --git a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/router/DiversionTest.java b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/router/DiversionTest.java index 2aa72304e53..ed2c0c27587 100644 --- a/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/router/DiversionTest.java +++ b/contribs/dvrp/src/test/java/org/matsim/contrib/dvrp/router/DiversionTest.java @@ -287,7 +287,7 @@ protected void configureQSim() { return Fleets.createDefaultFleet(fleetSpecification, getter.getModal(Network.class).getLinks()::get); })).in(Singleton.class); - bindModal(VehicleType.class).toInstance(VehicleUtils.getDefaultVehicleType()); + bindModal(VehicleType.class).toInstance(VehicleUtils.createDefaultVehicleType()); install(new VrpAgentSourceQSimModule(getMode())); diff --git a/contribs/freight/src/main/java/org/matsim/freight/carriers/controler/FreightAgentSource.java b/contribs/freight/src/main/java/org/matsim/freight/carriers/controler/FreightAgentSource.java index 71a577d8200..0feadd08226 100644 --- a/contribs/freight/src/main/java/org/matsim/freight/carriers/controler/FreightAgentSource.java +++ b/contribs/freight/src/main/java/org/matsim/freight/carriers/controler/FreightAgentSource.java @@ -74,10 +74,10 @@ public final class FreightAgentSource implements AgentSource { Vehicle vehicle; if( CarriersUtils.getVehicle( freightDriverPlan ) == null ){ - vehicle = VehicleUtils.getFactory().createVehicle( Id.create( agent.getId(), Vehicle.class ), VehicleUtils.getDefaultVehicleType() ); + vehicle = VehicleUtils.getFactory().createVehicle( Id.create( agent.getId(), Vehicle.class ), VehicleUtils.createDefaultVehicleType() ); log.warn( "vehicle for agent " + freightDriverPlan.getPerson().getId() + " is missing. set default vehicle where maxVelocity is solely defined by link.speed." ); } else if( CarriersUtils.getVehicle( freightDriverPlan ).getType() == null ){ - vehicle = VehicleUtils.getFactory().createVehicle( Id.create( agent.getId(), Vehicle.class ), VehicleUtils.getDefaultVehicleType() ); + vehicle = VehicleUtils.getFactory().createVehicle( Id.create( agent.getId(), Vehicle.class ), VehicleUtils.createDefaultVehicleType() ); log.warn( "vehicleType for agent " + freightDriverPlan.getPerson().getId() + " is missing. set default vehicleType where maxVelocity is solely defined by link.speed." ); } else { vehicle = CarriersUtils.getVehicle( freightDriverPlan ); diff --git a/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java b/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java index b57f9d7b884..dbdcacf6eac 100644 --- a/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java +++ b/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java @@ -28,6 +28,7 @@ import org.matsim.freight.carriers.*; import org.matsim.testcases.MatsimTestUtils; import org.matsim.vehicles.Vehicle; +import org.matsim.vehicles.VehicleType; import org.matsim.vehicles.VehicleUtils; import static org.matsim.testcases.MatsimTestUtils.EPSILON; @@ -41,22 +42,24 @@ public class CarriersUtilsTest { @Test void testAddAndGetVehicleToCarrier() { + VehicleType vehicleType = VehicleUtils.createDefaultVehicleType(); + Carrier carrier = new CarrierImpl(Id.create("carrier", Carrier.class)); Id<Vehicle> testVehicleId = Id.createVehicleId("testVehicle"); - CarrierVehicle carrierVehicle = CarrierVehicle.newInstance(testVehicleId, Id.createLinkId("link0"),VehicleUtils.getDefaultVehicleType()); + CarrierVehicle carrierVehicle = CarrierVehicle.newInstance(testVehicleId, Id.createLinkId("link0"),vehicleType); // carrierVehicle.setType(VehicleUtils.getDefaultVehicleType()); //add Vehicle CarriersUtils.addCarrierVehicle(carrier, carrierVehicle); Assertions.assertEquals(1, carrier.getCarrierCapabilities().getCarrierVehicles().size()); CarrierVehicle cv = (CarrierVehicle) carrier.getCarrierCapabilities().getCarrierVehicles().values().toArray()[0]; - Assertions.assertEquals(VehicleUtils.getDefaultVehicleType(), cv.getType()); + Assertions.assertEquals(vehicleType, cv.getType()); Assertions.assertEquals(Id.createLinkId("link0"), cv.getLinkId() ); //get Vehicle CarrierVehicle carrierVehicle1 = CarriersUtils.getCarrierVehicle(carrier, testVehicleId ); Assertions.assertEquals(testVehicleId, carrierVehicle1.getId()); - Assertions.assertEquals(VehicleUtils.getDefaultVehicleType(), carrierVehicle1.getType()); + Assertions.assertEquals(vehicleType, carrierVehicle1.getType()); Assertions.assertEquals(Id.createLinkId("link0"), carrierVehicle1.getLinkId() ); } diff --git a/contribs/parking/src/main/java/org/matsim/contrib/parking/parkingsearch/sim/ParkingPopulationAgentSource.java b/contribs/parking/src/main/java/org/matsim/contrib/parking/parkingsearch/sim/ParkingPopulationAgentSource.java index 9f99e27a697..4090819c849 100644 --- a/contribs/parking/src/main/java/org/matsim/contrib/parking/parkingsearch/sim/ParkingPopulationAgentSource.java +++ b/contribs/parking/src/main/java/org/matsim/contrib/parking/parkingsearch/sim/ParkingPopulationAgentSource.java @@ -79,7 +79,7 @@ public ParkingPopulationAgentSource(Population population, AgentFactory agentFac case defaultVehicle: for (String mode : mainModes) { // initialize each mode with default vehicle type: - modeVehicleTypes.put(mode, VehicleUtils.getDefaultVehicleType()); + modeVehicleTypes.put(mode, VehicleUtils.createDefaultVehicleType()); } break; case fromVehiclesData: diff --git a/contribs/sbb-extensions/src/main/java/ch/sbb/matsim/analysis/skims/NetworkSkimMatrices.java b/contribs/sbb-extensions/src/main/java/ch/sbb/matsim/analysis/skims/NetworkSkimMatrices.java index afc16f51ec0..421b9f9f1ef 100644 --- a/contribs/sbb-extensions/src/main/java/ch/sbb/matsim/analysis/skims/NetworkSkimMatrices.java +++ b/contribs/sbb-extensions/src/main/java/ch/sbb/matsim/analysis/skims/NetworkSkimMatrices.java @@ -106,7 +106,7 @@ public static <T> NetworkIndicators<T> calculateSkimMatrices(Network xy2lNetwork private static class RowWorker<T> implements Runnable { - private final static Vehicle VEHICLE = VehicleUtils.getFactory().createVehicle(Id.create("theVehicle", Vehicle.class), VehicleUtils.getDefaultVehicleType()); + private final static Vehicle VEHICLE = VehicleUtils.getFactory().createVehicle(Id.create("theVehicle", Vehicle.class), VehicleUtils.createDefaultVehicleType()); private final static Person PERSON = PopulationUtils.getFactory().createPerson(Id.create("thePerson", Person.class)); private final ConcurrentLinkedQueue<T> originZones; private final Set<T> destinationZones; diff --git a/contribs/shared_mobility/src/main/java/org/matsim/contrib/shared_mobility/run/SharingVehicleSource.java b/contribs/shared_mobility/src/main/java/org/matsim/contrib/shared_mobility/run/SharingVehicleSource.java index ed1043cc6b0..2e6fe9188d6 100644 --- a/contribs/shared_mobility/src/main/java/org/matsim/contrib/shared_mobility/run/SharingVehicleSource.java +++ b/contribs/shared_mobility/src/main/java/org/matsim/contrib/shared_mobility/run/SharingVehicleSource.java @@ -31,7 +31,7 @@ public void insertAgentsIntoMobsim() { for (SharingVehicleSpecification veh : specification.getVehicles()) { Id<Link> startLink = veh.getStartLinkId().get(); Id<Vehicle> vehId = Id.createVehicleId(veh.getId().toString()); - Vehicle basicVehicle = factory.createVehicle(vehId, VehicleUtils.getDefaultVehicleType()); + Vehicle basicVehicle = factory.createVehicle(vehId, VehicleUtils.createDefaultVehicleType()); QVehicleImpl qvehicle = new QVehicleImpl(basicVehicle); qvehicle.setCurrentLink(this.qsim.getScenario().getNetwork().getLinks().get(startLink)); qsim.addParkedVehicle(qvehicle, startLink); diff --git a/contribs/socnetsim/src/main/java/org/matsim/contrib/socnetsim/sharedvehicles/qsim/PopulationAgentSourceWithVehicles.java b/contribs/socnetsim/src/main/java/org/matsim/contrib/socnetsim/sharedvehicles/qsim/PopulationAgentSourceWithVehicles.java index b718bd8ca27..64d5eea19d8 100644 --- a/contribs/socnetsim/src/main/java/org/matsim/contrib/socnetsim/sharedvehicles/qsim/PopulationAgentSourceWithVehicles.java +++ b/contribs/socnetsim/src/main/java/org/matsim/contrib/socnetsim/sharedvehicles/qsim/PopulationAgentSourceWithVehicles.java @@ -73,7 +73,7 @@ public PopulationAgentSourceWithVehicles( this.modeVehicleTypes = new HashMap<>(); this.mainModes = qsim.getScenario().getConfig().qsim().getMainModes(); for (String mode : mainModes) { - modeVehicleTypes.put(mode, VehicleUtils.getDefaultVehicleType()); + modeVehicleTypes.put(mode, VehicleUtils.createDefaultVehicleType()); } } diff --git a/contribs/vsp/src/main/java/playground/vsp/airPollution/exposure/EmissionResponsibilityTollTimeDistanceTravelDisutility.java b/contribs/vsp/src/main/java/playground/vsp/airPollution/exposure/EmissionResponsibilityTollTimeDistanceTravelDisutility.java index f1473df3400..42458673fbd 100644 --- a/contribs/vsp/src/main/java/playground/vsp/airPollution/exposure/EmissionResponsibilityTollTimeDistanceTravelDisutility.java +++ b/contribs/vsp/src/main/java/playground/vsp/airPollution/exposure/EmissionResponsibilityTollTimeDistanceTravelDisutility.java @@ -84,7 +84,7 @@ public double getLinkTravelDisutility(final Link link, final double time, final if (person == null){ // additionally, no person is given -> a default vehicle type is used log.warn("No person and no vehicle is given to calculate the link travel disutility. The default vehicle type is used to estimate emission disutility."); - emissionVehicle = VehicleUtils.getFactory().createVehicle(Id.createVehicleId("defaultVehicle"), VehicleUtils.getDefaultVehicleType()); + emissionVehicle = VehicleUtils.getFactory().createVehicle(Id.createVehicleId("defaultVehicle"), VehicleUtils.createDefaultVehicleType()); } else { // a person is given -> use the vehicle for that person given in emissionModule emissionVehicle = this.emissionVehicles.getVehicles().get(Id.createVehicleId(person.getId())); diff --git a/contribs/vsp/src/main/java/playground/vsp/airPollution/flatEmissions/EmissionTollTimeDistanceTravelDisutility.java b/contribs/vsp/src/main/java/playground/vsp/airPollution/flatEmissions/EmissionTollTimeDistanceTravelDisutility.java index ece0910df0b..9dc8d9afdb4 100644 --- a/contribs/vsp/src/main/java/playground/vsp/airPollution/flatEmissions/EmissionTollTimeDistanceTravelDisutility.java +++ b/contribs/vsp/src/main/java/playground/vsp/airPollution/flatEmissions/EmissionTollTimeDistanceTravelDisutility.java @@ -82,7 +82,7 @@ public double getLinkTravelDisutility(final Link link, final double time, final if (person == null){ // additionally, no person is given -> a default vehicle type is used log.warn("No person and no vehicle is given to calculate the link travel disutility. The default vehicle type is used to estimate emission disutility."); - emissionVehicle = VehicleUtils.getFactory().createVehicle(Id.createVehicleId("defaultVehicle"), VehicleUtils.getDefaultVehicleType()); + emissionVehicle = VehicleUtils.getFactory().createVehicle(Id.createVehicleId("defaultVehicle"), VehicleUtils.createDefaultVehicleType()); } else { // a person is given -> use the vehicle for that person given in emissionModule emissionVehicle = this.emissionVehicles.getVehicles().get(Id.createVehicleId(person.getId())); diff --git a/matsim/src/main/java/org/matsim/core/controler/PrepareForSimImpl.java b/matsim/src/main/java/org/matsim/core/controler/PrepareForSimImpl.java index 3278f06e295..359a812887a 100644 --- a/matsim/src/main/java/org/matsim/core/controler/PrepareForSimImpl.java +++ b/matsim/src/main/java/org/matsim/core/controler/PrepareForSimImpl.java @@ -291,7 +291,7 @@ private Map<String, VehicleType> getVehicleTypesForAllNetworkAndMainModes() { VehicleType type; switch (qSimConfigGroup.getVehiclesSource()) { case defaultVehicle: - type = VehicleUtils.getDefaultVehicleType(); + type = VehicleUtils.createDefaultVehicleType(); if (!scenario.getVehicles().getVehicleTypes().containsKey(type.getId())){ scenario.getVehicles().addVehicleType( type ); } diff --git a/matsim/src/main/java/org/matsim/core/mobsim/hermes/ScenarioImporter.java b/matsim/src/main/java/org/matsim/core/mobsim/hermes/ScenarioImporter.java index f8480f9647f..7501fcfdeca 100644 --- a/matsim/src/main/java/org/matsim/core/mobsim/hermes/ScenarioImporter.java +++ b/matsim/src/main/java/org/matsim/core/mobsim/hermes/ScenarioImporter.java @@ -369,7 +369,7 @@ private void processPlanNetworkRoute( Id<org.matsim.api.core.v01.network.Link> endLId = netroute.getEndLinkId(); Map<Id<Vehicle>, Vehicle> vehicles = scenario.getVehicles().getVehicles(); Vehicle v = vehicles.get(VehicleUtils.getVehicleId(person, leg.getMode())); - Id<VehicleType> vtypeid = v == null ? VehicleUtils.getDefaultVehicleType().getId() : v.getType().getId(); + Id<VehicleType> vtypeid = v == null ? VehicleUtils.createDefaultVehicleType().getId() : v.getType().getId(); int pcuCategory = this.vehicleTypeMapping.get(vtypeid); Id<Vehicle> vid = v == null ? Id.createVehicleId("v" + person.getId()) : v.getId(); double velocity = v == null ? diff --git a/matsim/src/main/java/org/matsim/utils/leastcostpathtree/LeastCostPathTree.java b/matsim/src/main/java/org/matsim/utils/leastcostpathtree/LeastCostPathTree.java index 535d9d5ff5c..25416ae7e87 100644 --- a/matsim/src/main/java/org/matsim/utils/leastcostpathtree/LeastCostPathTree.java +++ b/matsim/src/main/java/org/matsim/utils/leastcostpathtree/LeastCostPathTree.java @@ -63,7 +63,7 @@ public class LeastCostPathTree { private final TravelDisutility tcFunction; private IdMap<Node, NodeData> nodeData = null; - private final Vehicle VEHICLE = VehicleUtils.getFactory().createVehicle(Id.create("theVehicle", Vehicle.class), VehicleUtils.getDefaultVehicleType()); + private final Vehicle VEHICLE = VehicleUtils.getFactory().createVehicle(Id.create("theVehicle", Vehicle.class), VehicleUtils.createDefaultVehicleType()); private final Person PERSON = PopulationUtils.getFactory().createPerson(Id.create("thePerson", Person.class)); // //////////////////////////////////////////////////////////////////// diff --git a/matsim/src/main/java/org/matsim/vehicles/VehicleUtils.java b/matsim/src/main/java/org/matsim/vehicles/VehicleUtils.java index 6c0a9b289ba..70027f8a0b5 100644 --- a/matsim/src/main/java/org/matsim/vehicles/VehicleUtils.java +++ b/matsim/src/main/java/org/matsim/vehicles/VehicleUtils.java @@ -39,7 +39,7 @@ public final class VehicleUtils { private static final Logger log = LogManager.getLogger( VehicleUtils.class ) ; - private static final VehicleType DEFAULT_VEHICLE_TYPE = VehicleUtils.getFactory().createVehicleType(Id.create("defaultVehicleType", VehicleType.class)); + private static final String DEFAULT_VEHICLE_TYPE_ID = "defaultVehicleType"; private static final String VEHICLE_ATTRIBUTE_KEY = "vehicles"; private static final String VEHICLE_TYPES_ATTRIBUTE_KEY = "vehicleTypes"; @@ -62,10 +62,6 @@ public static VehicleType createVehicleType( Id<VehicleType> typeId ){ return new VehicleType( typeId ); } - static { - DEFAULT_VEHICLE_TYPE.getCapacity().setSeats( 4 ); - } - public static VehiclesFactory getFactory() { return new VehiclesFactoryImpl(); } @@ -74,8 +70,13 @@ public static Vehicles createVehiclesContainer() { return new VehiclesImpl(); } - public static VehicleType getDefaultVehicleType() { - return DEFAULT_VEHICLE_TYPE; + public static VehicleType createDefaultVehicleType() { + VehicleType defaultVehicleType = VehicleUtils.getFactory() + .createVehicleType(Id.create(DEFAULT_VEHICLE_TYPE_ID, VehicleType.class)); + + defaultVehicleType.getCapacity().setSeats(4); + + return defaultVehicleType; } /** diff --git a/matsim/src/test/java/org/matsim/core/mobsim/qsim/NetsimRoutingConsistencyTest.java b/matsim/src/test/java/org/matsim/core/mobsim/qsim/NetsimRoutingConsistencyTest.java index cbdde36ca58..6899e6c95f1 100644 --- a/matsim/src/test/java/org/matsim/core/mobsim/qsim/NetsimRoutingConsistencyTest.java +++ b/matsim/src/test/java/org/matsim/core/mobsim/qsim/NetsimRoutingConsistencyTest.java @@ -165,9 +165,9 @@ void testRoutingVsSimulation() { person.addPlan(plan); Vehicle vehicle = scenario.getVehicles().getFactory().createVehicle(VehicleUtils.createVehicleId(person, TransportMode.car), - VehicleUtils.getDefaultVehicleType()); + VehicleUtils.createDefaultVehicleType()); VehicleUtils.insertVehicleIdsIntoAttributes(person, Map.of(TransportMode.car, vehicle.getId())); - scenario.getVehicles().addVehicleType(VehicleUtils.getDefaultVehicleType()); + scenario.getVehicles().addVehicleType(VehicleUtils.createDefaultVehicleType()); scenario.getVehicles().addVehicle(vehicle); TravelTime travelTime = new FreeSpeedTravelTime(); @@ -251,8 +251,8 @@ void testRoutingVsSimulationFullStack() { Arrays.asList(link12, link23, link34, link45).forEach(l -> l.setFreespeed(10.0)); Vehicle vehicle = scenario.getVehicles().getFactory().createVehicle(Id.createVehicleId("P"), - VehicleUtils.getDefaultVehicleType()); - scenario.getVehicles().addVehicleType(VehicleUtils.getDefaultVehicleType()); + VehicleUtils.createDefaultVehicleType()); + scenario.getVehicles().addVehicleType(VehicleUtils.createDefaultVehicleType()); scenario.getVehicles().addVehicle(vehicle); Population population = scenario.getPopulation(); diff --git a/matsim/src/test/java/org/matsim/core/router/NetworkRoutingInclAccessEgressModuleTest.java b/matsim/src/test/java/org/matsim/core/router/NetworkRoutingInclAccessEgressModuleTest.java index be39a4c44ba..392a301d1c4 100644 --- a/matsim/src/test/java/org/matsim/core/router/NetworkRoutingInclAccessEgressModuleTest.java +++ b/matsim/src/test/java/org/matsim/core/router/NetworkRoutingInclAccessEgressModuleTest.java @@ -248,10 +248,14 @@ void calcRoute_defaultVehicle_defaultVehicleIsAssigned() { Map<String, Id<Vehicle>> modeId = VehicleUtils.getVehicleIds(person); + VehicleType defaultVehicleType = scenario.getVehicles().getVehicleTypes() + .get(VehicleUtils.createDefaultVehicleType().getId()); + assertNotNull(defaultVehicleType); + // should be only one, but however for (Id<Vehicle> vehicleId : modeId.values()) { assertTrue(scenario.getVehicles().getVehicles().containsKey(vehicleId)); - assertEquals(VehicleUtils.getDefaultVehicleType(), scenario.getVehicles().getVehicles().get(vehicleId).getType()); + assertEquals(defaultVehicleType, scenario.getVehicles().getVehicles().get(vehicleId).getType()); } } diff --git a/matsim/src/test/java/org/matsim/vehicles/DefaultVehicleTypeTest.java b/matsim/src/test/java/org/matsim/vehicles/DefaultVehicleTypeTest.java new file mode 100644 index 00000000000..863c235549d --- /dev/null +++ b/matsim/src/test/java/org/matsim/vehicles/DefaultVehicleTypeTest.java @@ -0,0 +1,42 @@ +package org.matsim.vehicles; + +import org.junit.jupiter.api.Test; +import org.matsim.api.core.v01.Id; +import org.matsim.api.core.v01.Scenario; +import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; +import org.matsim.core.scenario.ScenarioUtils; +import org.matsim.vehicles.VehicleType; +import org.matsim.vehicles.VehicleUtils; +import org.matsim.vehicles.Vehicles; + +class DefaultVehicleTypeTest { + @Test + void testFirst() { + Config config = ConfigUtils.createConfig(); + Scenario scenario = ScenarioUtils.createScenario(config); + + Vehicles vehicles = scenario.getVehicles(); + + VehicleType vehicleType = VehicleUtils.createDefaultVehicleType(); + vehicles.addVehicleType(vehicleType); + + VehicleType vehicleType2 = vehicles.getFactory().createVehicleType(Id.create("custom", VehicleType.class)); + vehicles.addVehicleType(vehicleType2); + } + + @Test + void testSecond() { + Config config = ConfigUtils.createConfig(); + Scenario scenario = ScenarioUtils.createScenario(config); + + Vehicles vehicles = scenario.getVehicles(); + + VehicleType vehicleType = VehicleUtils.createDefaultVehicleType(); + vehicles.addVehicleType(vehicleType); + + // this caused a clash in IDs before getDefaultVehicleType was fixed + VehicleType vehicleType2 = vehicles.getFactory().createVehicleType(Id.create("custom", VehicleType.class)); + vehicles.addVehicleType(vehicleType2); + } +} \ No newline at end of file From 0d7df13ed631f58f6df9623e18ee1d76ffa7e5b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 14:42:52 +0000 Subject: [PATCH 12/24] build(deps): bump org.apache.maven.plugins:maven-jar-plugin Bumps [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.4.0 to 3.4.1. - [Release notes](https://github.com/apache/maven-jar-plugin/releases) - [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.4.0...maven-jar-plugin-3.4.1) --- updated-dependencies: - dependency-name: org.apache.maven.plugins:maven-jar-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7a8d856540e..c04827fbee1 100644 --- a/pom.xml +++ b/pom.xml @@ -421,7 +421,7 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> - <version>3.4.0</version> + <version>3.4.1</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> From 5af546b28d8b7a975852c7d5faefc293c0dcc0f1 Mon Sep 17 00:00:00 2001 From: rakow <rakow@users.noreply.github.com> Date: Tue, 23 Apr 2024 09:13:14 +0200 Subject: [PATCH 13/24] Support .gpkg files in shp options (#3228) * support .gpkg files in shp options * better naming * update test --- .../application/options/ShpOptions.java | 104 +++++++++++++----- .../matsim/application/prepare/Predictor.java | 32 ++++++ .../application/options/ShpOptionsTest.java | 37 +++++-- .../matsim/application/options/example.gpkg | Bin 0 -> 466944 bytes .../matsim/core/utils/gis/GeoFileReader.java | 13 +++ 5 files changed, 150 insertions(+), 36 deletions(-) create mode 100644 contribs/application/src/main/java/org/matsim/application/prepare/Predictor.java create mode 100644 contribs/application/test/input/org/matsim/application/options/example.gpkg diff --git a/contribs/application/src/main/java/org/matsim/application/options/ShpOptions.java b/contribs/application/src/main/java/org/matsim/application/options/ShpOptions.java index 7962c3d8d80..359eedb0db4 100644 --- a/contribs/application/src/main/java/org/matsim/application/options/ShpOptions.java +++ b/contribs/application/src/main/java/org/matsim/application/options/ShpOptions.java @@ -1,11 +1,12 @@ package org.matsim.application.options; +import org.apache.commons.lang3.ArrayUtils; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.geotools.data.FeatureReader; -import org.geotools.data.FileDataStoreFactorySpi; +import org.geotools.data.*; import org.geotools.data.shapefile.ShapefileDataStore; import org.geotools.data.shapefile.ShapefileDataStoreFactory; +import org.geotools.geopkg.GeoPkgDataStoreFactory; import org.geotools.referencing.CRS; import org.locationtech.jts.geom.*; import org.locationtech.jts.index.strtree.AbstractNode; @@ -34,10 +35,7 @@ import java.net.URL; import java.nio.charset.Charset; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.function.Predicate; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; @@ -62,6 +60,9 @@ public final class ShpOptions { @CommandLine.Option(names = "--shp-crs", description = "Overwrite coordinate system of the shape file") private String shpCrs; + @CommandLine.Option(names = "--shp-layer", description = "Layer to use (for .gpgk files). Defaults to first layer.", required = false) + private String shpLayer; + @CommandLine.Option(names = "--shp-charset", description = "Charset used to read the shape file", defaultValue = "ISO-8859-1") private Charset shpCharset; @@ -86,19 +87,41 @@ public ShpOptions(String shp, @Nullable String shpCrs, @Nullable Charset shpChar this.shpCharset = shpCharset; } + private ShpOptions(String shp, String shpCrs, String shpLayer, Charset shpCharset) { + this.shp = shp; + this.shpCrs = shpCrs; + this.shpLayer = shpLayer; + this.shpCharset = shpCharset; + } + + /** + * Create shp options with a specific layer. (Usually for gpkg files). + */ + public static ShpOptions ofLayer(String shp, @Nullable String shpLayer) { + return new ShpOptions(shp, null, shpLayer, null); + } + /** * Opens datastore to a shape-file. */ - public static ShapefileDataStore openDataStore(String shp) throws IOException { + public static DataStore openDataStore(String shp) throws IOException { FileDataStoreFactorySpi factory = new ShapefileDataStoreFactory(); URL url = IOUtils.resolveFileOrResource(shp); - ShapefileDataStore ds; + DataStore ds; if (shp.endsWith(".shp")) - ds = (ShapefileDataStore) factory.createDataStore(url); - else if (shp.endsWith(".zip")) { + ds = factory.createDataStore(url); + else if (shp.endsWith(".gpkg")) { + ds = DataStoreFinder.getDataStore(Map.of( + GeoPkgDataStoreFactory.DBTYPE.key, "geopkg", + GeoPkgDataStoreFactory.DATABASE.key, shp, + GeoPkgDataStoreFactory.READ_ONLY.key, true + )); + } else if (shp.endsWith(".dbf") || shp.endsWith(".shx")) { + throw new IllegalArgumentException("Shape file must be .shp, but was: " + shp); + } else if (shp.endsWith(".zip")) { // Zip files will only work with local files URI uri; @@ -119,12 +142,12 @@ else if (shp.endsWith(".zip")) { throw new IllegalArgumentException("Could not create URI for zip file: " + url, e); } - ds = (ShapefileDataStore) factory.createDataStore(uri.toURL()); + ds = factory.createDataStore(uri.toURL()); } else { throw new IllegalArgumentException("Shape file must either be .zip or .shp, but was: " + shp); } - return ds; + return Objects.requireNonNull(ds, "Could not create data store."); } /** @@ -158,11 +181,15 @@ public List<SimpleFeature> readFeatures() { throw new IllegalStateException("Shape file path not specified"); try { - ShapefileDataStore ds = openDataStore(shp); - if (shpCharset != null) - ds.setCharset(shpCharset); + DataStore ds = openDataStore(shp); + if (shpCharset != null && ds instanceof ShapefileDataStore shpDs) + shpDs.setCharset(shpCharset); - return GeoFileReader.getSimpleFeatures(ds); + if (ds instanceof FileDataStore fds) { + return GeoFileReader.getSimpleFeatures(fds); + } + + return GeoFileReader.getSimpleFeatures(ds, getLayer(ds)); } catch (IOException e) { throw new UncheckedIOException(e); } @@ -179,7 +206,7 @@ public Geometry getGeometry() { } if (features.size() == 1) { - return (Geometry) features.iterator().next().getDefaultGeometry(); + return (Geometry) features.iterator().next().getDefaultGeometry(); } GeometryFactory factory = ((Geometry) features.iterator().next().getDefaultGeometry()).getFactory(); @@ -212,7 +239,7 @@ public Index createIndex(String queryCRS, String attr, Predicate<SimpleFeature> throw new IllegalArgumentException("Query crs must not be null!"); try { - ShapefileDataStore ds = openDataStoreAndSetCRS(); + DataStore ds = openDataStoreAndSetCRS(); CoordinateTransformation ct; if (queryCRS.equals(SAME_CRS)) ct = new IdentityTransformation(); @@ -254,8 +281,8 @@ private String detectCRS() { if (shpCrs == null) { try { - ShapefileDataStore ds = openDataStore(shp); - CoordinateReferenceSystem crs = ds.getSchema().getCoordinateReferenceSystem(); + DataStore ds = openDataStore(shp); + CoordinateReferenceSystem crs = ds.getSchema(getLayer(ds)).getCoordinateReferenceSystem(); ds.dispose(); shpCrs = "EPSG:" + CRS.lookupEpsgCode(crs, true); log.info("Using detected crs for {}: {}", shp, shpCrs); @@ -271,12 +298,12 @@ private String detectCRS() { /** * Open the shape file for processing and set the crs if not already specified. */ - private ShapefileDataStore openDataStoreAndSetCRS() throws IOException { - ShapefileDataStore ds = openDataStore(shp); + private DataStore openDataStoreAndSetCRS() throws IOException { + DataStore ds = openDataStore(shp); if (shpCrs == null) { try { - CoordinateReferenceSystem crs = ds.getSchema().getCoordinateReferenceSystem(); + CoordinateReferenceSystem crs = ds.getSchema(getLayer(ds)).getCoordinateReferenceSystem(); shpCrs = "EPSG:" + CRS.lookupEpsgCode(crs, true); log.info("Using detected crs for {}: {}", shp, shpCrs); } catch (FactoryException | NullPointerException e) { @@ -287,6 +314,21 @@ private ShapefileDataStore openDataStoreAndSetCRS() throws IOException { return ds; } + /** + * Get the selected layer or throw exception if not found. + */ + private String getLayer(DataStore ds) throws IOException { + String[] typeNames = ds.getTypeNames(); + if (shpLayer != null) { + if (!ArrayUtils.contains(typeNames, shpLayer)) + throw new IllegalArgumentException("Layer " + shpLayer + " not found in shape file."); + + return shpLayer; + } + + return typeNames[0]; + } + /** * Create an inverse coordinate transformation from the shape file crs. Tries to autodetect the crs of the shape file. */ @@ -309,11 +351,18 @@ public final class Index { * @param ct coordinate transform from query to target crs * @param attr attribute for the result of {@link #query(Coord)} */ - Index(CoordinateTransformation ct, ShapefileDataStore ds, String attr, @Nullable Predicate<SimpleFeature> filter) throws IOException { - if (shpCharset != null) - ds.setCharset(shpCharset); + Index(CoordinateTransformation ct, DataStore ds, String attr, @Nullable Predicate<SimpleFeature> filter) throws IOException { + if (shpCharset != null && ds instanceof ShapefileDataStore shpDs) + shpDs.setCharset(shpCharset); + + FeatureReader<SimpleFeatureType, SimpleFeature> it; + DefaultTransaction transaction = new DefaultTransaction(); + if (ds instanceof FileDataStore fds) { + it = fds.getFeatureReader(); + } else { + it = ds.getFeatureReader(new Query(getLayer(ds)), transaction); + } - FeatureReader<SimpleFeatureType, SimpleFeature> it = ds.getFeatureReader(); while (it.hasNext()) { SimpleFeature ft = it.next(); @@ -332,6 +381,7 @@ public final class Index { index.build(); + transaction.close(); it.close(); ds.dispose(); diff --git a/contribs/application/src/main/java/org/matsim/application/prepare/Predictor.java b/contribs/application/src/main/java/org/matsim/application/prepare/Predictor.java new file mode 100644 index 00000000000..460d1a41abe --- /dev/null +++ b/contribs/application/src/main/java/org/matsim/application/prepare/Predictor.java @@ -0,0 +1,32 @@ +package org.matsim.application.prepare; + +import it.unimi.dsi.fastutil.objects.Object2DoubleMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; + +/** + * Predictor interface for arbitrary numeric values. + */ +public interface Predictor { + + + /** + * Predict value from given features. + */ + double predict(Object2DoubleMap<String> features, Object2ObjectMap<String, String> categories); + + /** + * Predict values with adjusted model params. + */ + default double predict(Object2DoubleMap<String> features, Object2ObjectMap<String, String> categories, double[] params) { + throw new UnsupportedOperationException("Not implemented"); + } + + + /** + * Return data that is used for internal prediction function (normalization already applied). + */ + default double[] getData(Object2DoubleMap<String> features, Object2ObjectMap<String, String> categories) { + throw new UnsupportedOperationException("Not implemented"); + } + +} diff --git a/contribs/application/src/test/java/org/matsim/application/options/ShpOptionsTest.java b/contribs/application/src/test/java/org/matsim/application/options/ShpOptionsTest.java index 9b4b662733f..bc13baad71f 100644 --- a/contribs/application/src/test/java/org/matsim/application/options/ShpOptionsTest.java +++ b/contribs/application/src/test/java/org/matsim/application/options/ShpOptionsTest.java @@ -29,7 +29,7 @@ void readZip() { Path input = Path.of(utils.getClassInputDirectory() .replace("ShpOptionsTest", "CreateLandUseShpTest") .replace("options", "prepare")) - .resolve("andorra-latest-free.shp.zip"); + .resolve("andorra-latest-free.shp.zip"); Assumptions.assumeTrue(Files.exists(input)); @@ -38,7 +38,7 @@ void readZip() { List<SimpleFeature> ft = shp.readFeatures(); assertThat(ft) - .isNotEmpty(); + .isNotEmpty(); } @@ -73,7 +73,7 @@ void all() { Path input = Path.of(utils.getClassInputDirectory() .replace("ShpOptionsTest", "CreateLandUseShpTest") .replace("options", "prepare")) - .resolve("andorra-latest-free.shp.zip"); + .resolve("andorra-latest-free.shp.zip"); Assumptions.assumeTrue(Files.exists(input)); @@ -84,8 +84,8 @@ void all() { List<SimpleFeature> ft = index.getAllFeatures(); assertThat(ft) - .hasSize(4906) - .hasSize(Set.copyOf(ft).size()); + .hasSize(4906) + .hasSize(Set.copyOf(ft).size()); assertThat(shp.readFeatures()) .hasSameElementsAs(ft); @@ -96,17 +96,36 @@ void all() { void testGetGeometry() { Path input = Path.of(utils.getClassInputDirectory() - .replace("ShpOptionsTest", "CreateLandUseShpTest") - .replace("options", "prepare")) - .resolve("andorra-latest-free.shp.zip"); + .replace("ShpOptionsTest", "CreateLandUseShpTest") + .replace("options", "prepare")) + .resolve("andorra-latest-free.shp.zip"); Assumptions.assumeTrue(Files.exists(input)); ShpOptions shp = new ShpOptions(input, null, null); - Geometry geometry = shp.getGeometry() ; + Geometry geometry = shp.getGeometry(); assertThat(geometry.getArea()) .isCloseTo(1.9847543618489646E-4, Offset.offset(1e-8)); } + + @Test + void gpkg() { + + Path path = Path.of(utils.getPackageInputDirectory(), "example.gpkg"); + + ShpOptions shp = ShpOptions.ofLayer(path.toString(), null); + + List<SimpleFeature> features = shp.readFeatures(); + + assertThat(features) + .hasSize(3); + + ShpOptions.Index index = shp.createIndex("_"); + + assertThat(index.size()) + .isEqualTo(3); + + } } diff --git a/contribs/application/test/input/org/matsim/application/options/example.gpkg b/contribs/application/test/input/org/matsim/application/options/example.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..0c65655eabb22aa82cef9ba74fb14afa41e4703f GIT binary patch literal 466944 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	$sICjUI2;C0GxvM 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 literal 0 HcmV?d00001 diff --git a/matsim/src/main/java/org/matsim/core/utils/gis/GeoFileReader.java b/matsim/src/main/java/org/matsim/core/utils/gis/GeoFileReader.java index 9938a3e1548..80fe6650150 100644 --- a/matsim/src/main/java/org/matsim/core/utils/gis/GeoFileReader.java +++ b/matsim/src/main/java/org/matsim/core/utils/gis/GeoFileReader.java @@ -133,6 +133,19 @@ public static List<SimpleFeature> getSimpleFeatures(DataStore dataStore, Name la return featureSet; } + /** + * Read all simple features from a data store. This method makes sure the store is closed afterwards. + * @return list of contained features. + * @see #getSimpleFeatures(DataStore, Name) + */ + public static List<SimpleFeature> getSimpleFeatures(DataStore dataStore, String layerName) throws IOException { + SimpleFeatureSource featureSource = dataStore.getFeatureSource(layerName); + Gbl.assertNotNull(featureSource); + List<SimpleFeature> featureSet = getSimpleFeatures(featureSource); + dataStore.dispose(); + return featureSet; + } + private static List<SimpleFeature> getSimpleFeatures(SimpleFeatureSource featureSource) throws IOException { SimpleFeatureIterator it = featureSource.getFeatures().features(); List<SimpleFeature> featureSet = new ArrayList<>(); From 712783e9d8bcf0849f6b1e03c0471181428ab199 Mon Sep 17 00:00:00 2001 From: Paul Heinrich <pheinrich11235@gmail.com> Date: Tue, 23 Apr 2024 13:48:45 +0200 Subject: [PATCH 14/24] add executor service --- .../freight/carriers/CarriersUtils.java | 106 +++++++++++------- 1 file changed, 64 insertions(+), 42 deletions(-) diff --git a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java index 755be732e4d..7cb9c00204c 100644 --- a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java +++ b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java @@ -46,6 +46,8 @@ import javax.management.InvalidAttributeValueException; import java.util.*; import java.util.concurrent.ExecutionException; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; import java.util.concurrent.ForkJoinPool; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -192,7 +194,7 @@ public static void runJsprit(Scenario scenario) throws ExecutionException, Inter // Fill carrierActivityCounterMap -> basis for sorting the carriers by number of activities before solving in parallel for (Carrier carrier : carriers.getCarriers().values()) { carrierActivityCounterMap.put(carrier.getId(), carrierActivityCounterMap.getOrDefault(carrier.getId(), 0) + carrier.getServices().size()); - carrierActivityCounterMap.put(carrier.getId(), carrierActivityCounterMap.getOrDefault(carrier.getId(), 0) + carrier.getShipments().size()); + carrierActivityCounterMap.put(carrier.getId(), carrierActivityCounterMap.getOrDefault(carrier.getId(), 0) + 2*carrier.getShipments().size()); } HashMap<Id<Carrier>, Integer> sortedMap = carrierActivityCounterMap.entrySet().stream() @@ -203,53 +205,73 @@ public static void runJsprit(Scenario scenario) throws ExecutionException, Inter AtomicInteger solvedVRPCounter = new AtomicInteger(0); ArrayList<Id<Carrier>> tempList = new ArrayList<>(sortedMap.keySet()); - ForkJoinPool forkJoinPool = new ForkJoinPool(Runtime.getRuntime().availableProcessors()); - forkJoinPool.submit(() -> tempList.parallelStream().forEach(carrierId -> { - Carrier carrier = carriers.getCarriers().get(carrierId); - - double start = System.currentTimeMillis(); - if (!carrier.getServices().isEmpty()) - log.info("Start tour planning for {} which has {} services", carrier.getId(), carrier.getServices().size()); - else if (!carrier.getShipments().isEmpty()) - log.info("Start tour planning for {} which has {} shipments", carrier.getId(), carrier.getShipments().size()); - - startedVRPCounter.incrementAndGet(); - log.info("started VRP solving for carrier number {} out of {} carriers.", startedVRPCounter.get(), carriers.getCarriers().size()); - - VehicleRoutingProblem problem = MatsimJspritFactory.createRoutingProblemBuilder(carrier, scenario.getNetwork()).setRoutingCost(netBasedCosts).build(); - VehicleRoutingAlgorithm algorithm = MatsimJspritFactory.loadOrCreateVehicleRoutingAlgorithm(scenario, freightCarriersConfigGroup, netBasedCosts, problem); - - algorithm.getAlgorithmListeners().addListener(new StopWatch(), VehicleRoutingAlgorithmListeners.Priority.HIGH); - int jspritIterations = getJspritIterations(carrier); - try { - if (jspritIterations > 0) { - algorithm.setMaxIterations(jspritIterations); - } else { - throw new InvalidAttributeValueException( - "Carrier has invalid number of jsprit iterations. They must be positive! Carrier id: " - + carrier.getId().toString());} - } catch (Exception e) { - throw new RuntimeException(e); -// e.printStackTrace(); - } - VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); + int nThreads = Runtime.getRuntime().availableProcessors(); + ExecutorService executorService = Executors.newFixedThreadPool(nThreads); + List<List<Id<Carrier>>> splitList = splitListAlternating(nThreads, tempList); + for (List<Id<Carrier>> subList : splitList) { + executorService.submit(() -> subList.forEach(carrierId -> { + Carrier carrier = carriers.getCarriers().get(carrierId); + + double start = System.currentTimeMillis(); + if (!carrier.getServices().isEmpty()) + log.info("Start tour planning for {} which has {} services", carrier.getId(), carrier.getServices().size()); + else if (!carrier.getShipments().isEmpty()) + log.info("Start tour planning for {} which has {} shipments", carrier.getId(), carrier.getShipments().size()); + + startedVRPCounter.incrementAndGet(); + log.info("started VRP solving for carrier number {} out of {} carriers.", startedVRPCounter.get(), carriers.getCarriers().size()); + + VehicleRoutingProblem problem = MatsimJspritFactory.createRoutingProblemBuilder(carrier, scenario.getNetwork()).setRoutingCost(netBasedCosts).build(); + VehicleRoutingAlgorithm algorithm = MatsimJspritFactory.loadOrCreateVehicleRoutingAlgorithm(scenario, freightCarriersConfigGroup, netBasedCosts, problem); + + algorithm.getAlgorithmListeners().addListener(new StopWatch(), VehicleRoutingAlgorithmListeners.Priority.HIGH); + int jspritIterations = getJspritIterations(carrier); + try { + if (jspritIterations > 0) { + algorithm.setMaxIterations(jspritIterations); + } else { + throw new InvalidAttributeValueException( + "Carrier has invalid number of jsprit iterations. They must be positive! Carrier id: " + + carrier.getId().toString());} + } catch (Exception e) { + throw new RuntimeException(e); + // e.printStackTrace(); + } + + VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); + + log.info("tour planning for carrier {} took {} seconds.", carrier.getId(), (System.currentTimeMillis() - start) / 1000); - log.info("tour planning for carrier {} took {} seconds.", carrier.getId(), (System.currentTimeMillis() - start) / 1000); + CarrierPlan newPlan = MatsimJspritFactory.createPlan(carrier, solution); + // yy In principle, the carrier should know the vehicle types that it can deploy. - CarrierPlan newPlan = MatsimJspritFactory.createPlan(carrier, solution); - // yy In principle, the carrier should know the vehicle types that it can deploy. + log.info("routing plan for carrier {}", carrier.getId()); + NetworkRouter.routePlan(newPlan, netBasedCosts); + solvedVRPCounter.incrementAndGet(); + log.info("routing for carrier {} finished. Tour planning plus routing took {} seconds.", carrier.getId(), + (System.currentTimeMillis() - start) / 1000); + log.info("solved {} out of {} carriers.", solvedVRPCounter.get(), carriers.getCarriers().size()); - log.info("routing plan for carrier {}", carrier.getId()); - NetworkRouter.routePlan(newPlan, netBasedCosts); - solvedVRPCounter.incrementAndGet(); - log.info("routing for carrier {} finished. Tour planning plus routing took {} seconds.", carrier.getId(), - (System.currentTimeMillis() - start) / 1000); - log.info("solved {} out of {} carriers.", solvedVRPCounter.get(), carriers.getCarriers().size()); + carrier.setSelectedPlan(newPlan); + })).get(); + } + } - carrier.setSelectedPlan(newPlan); - })).get(); + // split tempList in nThreads parts such that it is split to 1,2,...,n,1,2,.. + private static List<List<Id<Carrier>>> splitListAlternating(int nThreads, ArrayList<Id<Carrier>> tempList) { + List<List<Id<Carrier>>> splitList = new ArrayList<>(); + for (int i = 0; i < nThreads; i++) { + List<Id<Carrier>> subList = new ArrayList<>(); + for (int j = i; j < tempList.size(); j += nThreads) { + subList.add(tempList.get(j)); + } + splitList.add(subList); + } + assert splitList.size() == nThreads; + assert splitList.stream().mapToInt(List::size).sum() == tempList.size(); + return splitList; } /** From 3e9630da3e5c19db897d7027bdb58d6e5bbd1bfa Mon Sep 17 00:00:00 2001 From: Ricardo Ewert <ewert@vsp.tu-berlin.de> Date: Tue, 23 Apr 2024 15:51:04 +0200 Subject: [PATCH 15/24] add carrier attribute jsprit computation time --- .../matsim/freight/carriers/CarriersUtils.java | 17 ++++++++++++++++- .../freight/carriers/CarriersUtilsTest.java | 10 ++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java index 755be732e4d..b8d31bf47a3 100644 --- a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java +++ b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java @@ -64,6 +64,7 @@ public class CarriersUtils { private static final String ATTR_SKILLS = "skills"; private static final String ATTR_JSPRIT_SCORE = "jspritScore"; + private static final String ATTR_JSPRIT_Time = "jspritComputationTime"; public static Carrier createCarrier( Id<Carrier> id ){ return new CarrierImpl(id); @@ -243,11 +244,13 @@ else if (!carrier.getShipments().isEmpty()) log.info("routing plan for carrier {}", carrier.getId()); NetworkRouter.routePlan(newPlan, netBasedCosts); solvedVRPCounter.incrementAndGet(); + double timeForPlanningAndRouting = (System.currentTimeMillis() - start) / 1000; log.info("routing for carrier {} finished. Tour planning plus routing took {} seconds.", carrier.getId(), - (System.currentTimeMillis() - start) / 1000); + timeForPlanningAndRouting); log.info("solved {} out of {} carriers.", solvedVRPCounter.get(), carriers.getCarriers().size()); carrier.setSelectedPlan(newPlan); + setJspritComputationTime(carrier, timeForPlanningAndRouting); })).get(); } @@ -617,6 +620,18 @@ public static Double getJspritScore (CarrierPlan plan) { return (Double) plan.getAttributes().getAttribute(ATTR_JSPRIT_SCORE); } + public static double getJspritComputationTime(Carrier carrier){ + try { + return (double) carrier.getAttributes().getAttribute(ATTR_JSPRIT_Time); + } catch (Exception e) { + log.error("Requested attribute jspritComputationTime does not exists. Will return " + Integer.MIN_VALUE); + return Integer.MIN_VALUE; + } + } + public static void setJspritComputationTime(Carrier carrier, double time){ + carrier.getAttributes().putAttribute(ATTR_JSPRIT_Time, time); + } + public static void writeCarriers(Carriers carriers, String filename ) { new CarrierPlanWriter( carriers ).write( filename ); } diff --git a/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java b/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java index dbdcacf6eac..04772ee65a2 100644 --- a/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java +++ b/contribs/freight/src/test/java/org/matsim/freight/carriers/CarriersUtilsTest.java @@ -116,4 +116,14 @@ void testGetSetJspritIteration(){ Assertions.assertEquals(125, CarriersUtils.getJspritIterations(carrier) ); } + @Test + void testGetSetJspritComputationTime(){ + Carrier carrier = new CarrierImpl(Id.create("carrier", Carrier.class)); + //Computation time is not set. should return Integer.Min_Value (null is not possible because returning (int) + Assertions.assertEquals(Integer.MIN_VALUE, CarriersUtils.getJspritComputationTime(carrier) ); + + CarriersUtils.setJspritComputationTime(carrier, 125); + Assertions.assertEquals(125, CarriersUtils.getJspritComputationTime(carrier) ); + } + } From 2b51b67b65ea6d9da9c79082c00d59399bd1ccfe Mon Sep 17 00:00:00 2001 From: Ricardo Ewert <ewert@vsp.tu-berlin.de> Date: Tue, 23 Apr 2024 15:52:12 +0200 Subject: [PATCH 16/24] add jsprit computation time to carrier analyse file --- .../matsim/freight/carriers/analysis/CarrierPlanAnalysis.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java b/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java index e8f0439af85..69a8abd3f23 100644 --- a/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java +++ b/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java @@ -26,6 +26,7 @@ import org.matsim.api.core.v01.Id; import org.matsim.freight.carriers.Carrier; import org.matsim.freight.carriers.Carriers; +import org.matsim.freight.carriers.CarriersUtils; import java.io.BufferedWriter; import java.io.FileWriter; @@ -61,7 +62,7 @@ public void runAnalysisAndWriteStats(String analysisOutputDirectory) throws IOEx BufferedWriter bw1 = new BufferedWriter(new FileWriter(fileName)); //Write headline: - bw1.write("carrierId \t MATSimScoreSelectedPlan \t jSpritScoreSelectedPlan \t nuOfTours \t nuOfShipments(input) \t nuOfServices(input) "); + bw1.write("carrierId \t MATSimScoreSelectedPlan \t jSpritScoreSelectedPlan \t nuOfTours \t nuOfShipments(input) \t nuOfServices(input) \t jspritComputationTime"); bw1.newLine(); final TreeMap<Id<Carrier>, Carrier> sortedCarrierMap = new TreeMap<>(carriers.getCarriers()); @@ -73,6 +74,7 @@ public void runAnalysisAndWriteStats(String analysisOutputDirectory) throws IOEx bw1.write("\t" + carrier.getSelectedPlan().getScheduledTours().size()); bw1.write("\t" + carrier.getShipments().size()); bw1.write("\t" + carrier.getServices().size()); + bw1.write("\t" + CarriersUtils.getJspritComputationTime(carrier)); bw1.newLine(); } From a235ed6ee09883c29a00883976f8a54a23bbee50 Mon Sep 17 00:00:00 2001 From: Ricardo Ewert <ewert@vsp.tu-berlin.de> Date: Tue, 23 Apr 2024 16:25:55 +0200 Subject: [PATCH 17/24] fix test --- .../runFreightAnalysisEventBasedTest/Carrier_stats.tsv | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv b/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv index 21421192918..2f2fd5cc252 100644 --- a/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv +++ b/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv @@ -1,2 +1,2 @@ -carrierId MATSimScoreSelectedPlan jSpritScoreSelectedPlan nuOfTours nuOfShipments(input) nuOfServices(input) -carrier1 -263.4 null 2 0 7 +carrierId MATSimScoreSelectedPlan jSpritScoreSelectedPlan nuOfTours nuOfShipments(input) nuOfServices(input) jspritComputationTime[HH:mm:ss] +carrier1 -263.4 null 2 0 7 -2.147483648E9 From c7f916229fa8bd19778147669504b0a8cb1b0747 Mon Sep 17 00:00:00 2001 From: Ricardo Ewert <ewert@vsp.tu-berlin.de> Date: Tue, 23 Apr 2024 16:26:23 +0200 Subject: [PATCH 18/24] add time output --- .../freight/carriers/analysis/CarrierPlanAnalysis.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java b/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java index 69a8abd3f23..ed157b48063 100644 --- a/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java +++ b/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java @@ -24,6 +24,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.matsim.api.core.v01.Id; +import org.matsim.core.utils.misc.Time; import org.matsim.freight.carriers.Carrier; import org.matsim.freight.carriers.Carriers; import org.matsim.freight.carriers.CarriersUtils; @@ -62,7 +63,7 @@ public void runAnalysisAndWriteStats(String analysisOutputDirectory) throws IOEx BufferedWriter bw1 = new BufferedWriter(new FileWriter(fileName)); //Write headline: - bw1.write("carrierId \t MATSimScoreSelectedPlan \t jSpritScoreSelectedPlan \t nuOfTours \t nuOfShipments(input) \t nuOfServices(input) \t jspritComputationTime"); + bw1.write("carrierId \t MATSimScoreSelectedPlan \t jSpritScoreSelectedPlan \t nuOfTours \t nuOfShipments(input) \t nuOfServices(input) \t jspritComputationTime[HH:mm:ss]"); bw1.newLine(); final TreeMap<Id<Carrier>, Carrier> sortedCarrierMap = new TreeMap<>(carriers.getCarriers()); @@ -74,7 +75,11 @@ public void runAnalysisAndWriteStats(String analysisOutputDirectory) throws IOEx bw1.write("\t" + carrier.getSelectedPlan().getScheduledTours().size()); bw1.write("\t" + carrier.getShipments().size()); bw1.write("\t" + carrier.getServices().size()); - bw1.write("\t" + CarriersUtils.getJspritComputationTime(carrier)); + if (CarriersUtils.getJspritComputationTime(carrier) != Integer.MIN_VALUE) + bw1.write("\t" + Time.writeTime(CarriersUtils.getJspritComputationTime(carrier), Time.TIMEFORMAT_HHMMSS)); + else + bw1.write("\t" + CarriersUtils.getJspritComputationTime(carrier)); + bw1.newLine(); } From 8e0666095a054ff8680a6ddb3eda0ad3bcfc0fa5 Mon Sep 17 00:00:00 2001 From: Ricardo Ewert <ewert@vsp.tu-berlin.de> Date: Tue, 23 Apr 2024 16:43:36 +0200 Subject: [PATCH 19/24] change defaultValue to null --- .../matsim/freight/carriers/analysis/CarrierPlanAnalysis.java | 2 +- .../runFreightAnalysisEventBasedTest/Carrier_stats.tsv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java b/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java index ed157b48063..4b57935373a 100644 --- a/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java +++ b/contribs/vsp/src/main/java/org/matsim/freight/carriers/analysis/CarrierPlanAnalysis.java @@ -78,7 +78,7 @@ public void runAnalysisAndWriteStats(String analysisOutputDirectory) throws IOEx if (CarriersUtils.getJspritComputationTime(carrier) != Integer.MIN_VALUE) bw1.write("\t" + Time.writeTime(CarriersUtils.getJspritComputationTime(carrier), Time.TIMEFORMAT_HHMMSS)); else - bw1.write("\t" + CarriersUtils.getJspritComputationTime(carrier)); + bw1.write("\t" + "null"); bw1.newLine(); } diff --git a/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv b/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv index 2f2fd5cc252..d9ee80ea968 100644 --- a/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv +++ b/contribs/vsp/test/input/org/matsim/freight/carriers/analysis/FreightAnalysisEventBasedTest/runFreightAnalysisEventBasedTest/Carrier_stats.tsv @@ -1,2 +1,2 @@ carrierId MATSimScoreSelectedPlan jSpritScoreSelectedPlan nuOfTours nuOfShipments(input) nuOfServices(input) jspritComputationTime[HH:mm:ss] -carrier1 -263.4 null 2 0 7 -2.147483648E9 +carrier1 -263.4 null 2 0 7 null From 43512065608d18b71e7cb57066570f57048e354a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Apr 2024 14:32:26 +0000 Subject: [PATCH 20/24] build(deps-dev): bump net.bytebuddy:byte-buddy from 1.14.13 to 1.14.14 Bumps [net.bytebuddy:byte-buddy](https://github.com/raphw/byte-buddy) from 1.14.13 to 1.14.14. - [Release notes](https://github.com/raphw/byte-buddy/releases) - [Changelog](https://github.com/raphw/byte-buddy/blob/master/release-notes.md) - [Commits](https://github.com/raphw/byte-buddy/compare/byte-buddy-1.14.13...byte-buddy-1.14.14) --- updated-dependencies: - dependency-name: net.bytebuddy:byte-buddy dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c04827fbee1..9672c87de90 100644 --- a/pom.xml +++ b/pom.xml @@ -353,7 +353,7 @@ <dependency> <groupId>net.bytebuddy</groupId> <artifactId>byte-buddy</artifactId> - <version>1.14.13</version> + <version>1.14.14</version> <scope>test</scope> </dependency> From 3ba0938ba252ffa72ab23ac23252eeb25fdc44f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 25 Apr 2024 04:47:36 +0000 Subject: [PATCH 21/24] build(deps): bump com.github.luben:zstd-jni from 1.5.6-2 to 1.5.6-3 Bumps [com.github.luben:zstd-jni](https://github.com/luben/zstd-jni) from 1.5.6-2 to 1.5.6-3. - [Commits](https://github.com/luben/zstd-jni/compare/v1.5.6-2...v1.5.6-3) --- updated-dependencies: - dependency-name: com.github.luben:zstd-jni dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> --- matsim/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matsim/pom.xml b/matsim/pom.xml index 7c6e35b479a..6d26c4064b4 100644 --- a/matsim/pom.xml +++ b/matsim/pom.xml @@ -222,7 +222,7 @@ <dependency> <groupId>com.github.luben</groupId> <artifactId>zstd-jni</artifactId> - <version>1.5.6-2</version> + <version>1.5.6-3</version> </dependency> <dependency> <groupId>jakarta.validation</groupId> From 253fb4704e6d055858385079cae6690be6f3a2e3 Mon Sep 17 00:00:00 2001 From: Paul Heinrich <pheinrich11235@gmail.com> Date: Thu, 25 Apr 2024 11:08:24 +0200 Subject: [PATCH 22/24] add more logging to parallel jsprit execution --- .../main/java/org/matsim/freight/carriers/CarriersUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java index afe9493df7b..1610613eb85 100644 --- a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java +++ b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java @@ -209,6 +209,8 @@ public static void runJsprit(Scenario scenario) throws ExecutionException, Inter int nThreads = Runtime.getRuntime().availableProcessors(); ExecutorService executorService = Executors.newFixedThreadPool(nThreads); + log.info("Starting VRP solving for {} carriers in parallel with {} threads.", carriers.getCarriers().size(), nThreads); + List<List<Id<Carrier>>> splitList = splitListAlternating(nThreads, tempList); for (List<Id<Carrier>> subList : splitList) { executorService.submit(() -> subList.forEach(carrierId -> { @@ -221,7 +223,7 @@ else if (!carrier.getShipments().isEmpty()) log.info("Start tour planning for {} which has {} shipments", carrier.getId(), carrier.getShipments().size()); startedVRPCounter.incrementAndGet(); - log.info("started VRP solving for carrier number {} out of {} carriers.", startedVRPCounter.get(), carriers.getCarriers().size()); + log.info("started VRP solving for carrier number {} out of {} carriers. Current thread id: {}", startedVRPCounter.get(), carriers.getCarriers().size(), Thread.currentThread().getId()); VehicleRoutingProblem problem = MatsimJspritFactory.createRoutingProblemBuilder(carrier, scenario.getNetwork()).setRoutingCost(netBasedCosts).build(); VehicleRoutingAlgorithm algorithm = MatsimJspritFactory.loadOrCreateVehicleRoutingAlgorithm(scenario, freightCarriersConfigGroup, netBasedCosts, problem); From e91f5a7c1f1032764e7222384b50a6baf881d6b3 Mon Sep 17 00:00:00 2001 From: Paul Heinrich <pheinrich11235@gmail.com> Date: Thu, 25 Apr 2024 11:13:14 +0200 Subject: [PATCH 23/24] add more logging to parallel jsprit execution --- .../src/main/java/org/matsim/freight/carriers/CarriersUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java index 1610613eb85..0b5cac1a700 100644 --- a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java +++ b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java @@ -212,6 +212,7 @@ public static void runJsprit(Scenario scenario) throws ExecutionException, Inter log.info("Starting VRP solving for {} carriers in parallel with {} threads.", carriers.getCarriers().size(), nThreads); List<List<Id<Carrier>>> splitList = splitListAlternating(nThreads, tempList); + log.info("Distribution of carriers on threads: {}", splitList.stream().map(List::size).toList()); for (List<Id<Carrier>> subList : splitList) { executorService.submit(() -> subList.forEach(carrierId -> { Carrier carrier = carriers.getCarriers().get(carrierId); From 19d9c0e4b4132eb15c8796c107e79934aa2985e3 Mon Sep 17 00:00:00 2001 From: Paul Heinrich <pheinrich11235@gmail.com> Date: Thu, 25 Apr 2024 11:26:30 +0200 Subject: [PATCH 24/24] fix parallel execution --- .../freight/carriers/CarriersUtils.java | 28 +++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java index 0b5cac1a700..d6d182c9a7c 100644 --- a/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java +++ b/contribs/freight/src/main/java/org/matsim/freight/carriers/CarriersUtils.java @@ -45,10 +45,7 @@ import javax.management.InvalidAttributeValueException; import java.util.*; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ForkJoinPool; +import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @@ -213,8 +210,9 @@ public static void runJsprit(Scenario scenario) throws ExecutionException, Inter List<List<Id<Carrier>>> splitList = splitListAlternating(nThreads, tempList); log.info("Distribution of carriers on threads: {}", splitList.stream().map(List::size).toList()); + List<Future<?>> futureList = new ArrayList<>(); for (List<Id<Carrier>> subList : splitList) { - executorService.submit(() -> subList.forEach(carrierId -> { + futureList.add(executorService.submit(() -> subList.forEach(carrierId -> { Carrier carrier = carriers.getCarriers().get(carrierId); double start = System.currentTimeMillis(); @@ -224,9 +222,12 @@ else if (!carrier.getShipments().isEmpty()) log.info("Start tour planning for {} which has {} shipments", carrier.getId(), carrier.getShipments().size()); startedVRPCounter.incrementAndGet(); - log.info("started VRP solving for carrier number {} out of {} carriers. Current thread id: {}", startedVRPCounter.get(), carriers.getCarriers().size(), Thread.currentThread().getId()); + log.info("started VRP solving for carrier number {} out of {} carriers. Current thread id: {}", startedVRPCounter.get(), carriers.getCarriers() + .size(), Thread.currentThread() + .getId()); - VehicleRoutingProblem problem = MatsimJspritFactory.createRoutingProblemBuilder(carrier, scenario.getNetwork()).setRoutingCost(netBasedCosts).build(); + VehicleRoutingProblem problem = MatsimJspritFactory.createRoutingProblemBuilder(carrier, scenario.getNetwork()) + .setRoutingCost(netBasedCosts).build(); VehicleRoutingAlgorithm algorithm = MatsimJspritFactory.loadOrCreateVehicleRoutingAlgorithm(scenario, freightCarriersConfigGroup, netBasedCosts, problem); algorithm.getAlgorithmListeners().addListener(new StopWatch(), VehicleRoutingAlgorithmListeners.Priority.HIGH); @@ -236,11 +237,12 @@ else if (!carrier.getShipments().isEmpty()) algorithm.setMaxIterations(jspritIterations); } else { throw new InvalidAttributeValueException( - "Carrier has invalid number of jsprit iterations. They must be positive! Carrier id: " - + carrier.getId().toString());} + "Carrier has invalid number of jsprit iterations. They must be positive! Carrier id: " + + carrier.getId().toString()); + } } catch (Exception e) { throw new RuntimeException(e); - // e.printStackTrace(); + // e.printStackTrace(); } VehicleRoutingProblemSolution solution = Solutions.bestOf(algorithm.searchSolutions()); @@ -260,7 +262,11 @@ else if (!carrier.getShipments().isEmpty()) carrier.setSelectedPlan(newPlan); setJspritComputationTime(carrier, timeForPlanningAndRouting); - })).get(); + }))); + } + + for (Future<?> future : futureList) { + future.get(); } }