diff --git a/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfInitialPlan.java b/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfInitialPlan.java index 31adcfb4..edc0460f 100644 --- a/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfInitialPlan.java +++ b/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfInitialPlan.java @@ -170,9 +170,9 @@ public static void main(String [] args) { for(LSPShipment shipment : shipments) { System.out.println("Shipment: " + shipment.getId()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement element : shipment.getShipmentPlan().getPlanElements().values()) { System.out.println("Solution Id: " + element.getSolutionElement().getEmbeddingContainer().getId() diff --git a/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChain.java b/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChain.java index 31605ab0..b00e7f5f 100644 --- a/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChain.java +++ b/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChain.java @@ -333,7 +333,7 @@ public static void main (String [] args) { //print the schedules for the assigned LSPShipments for(LSPShipment shipment : lsp.getShipments()) { ArrayList elementList = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - elementList.sort(new ShipmentPlanElementComparator()); + elementList.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println("Shipment: " + shipment.getId()); for(ShipmentPlanElement element : elementList) { System.out.println(element.getSolutionElement().getId() + "\t\t" + element.getResourceId() + "\t\t" + element.getElementType() + "\t\t" + element.getStartTime() + "\t\t" + element.getEndTime()); diff --git a/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChainHubsVsDirect.java b/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChainHubsVsDirect.java index 924983f5..c0ef4e81 100644 --- a/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChainHubsVsDirect.java +++ b/src/main/java/example/lsp/initialPlans/ExampleSchedulingOfTransportChainHubsVsDirect.java @@ -24,30 +24,27 @@ import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; -import lsp.LSPResource; -import lsp.LSPResourceScheduler; import lsp.scoring.LSPScorer; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; import lsp.usecase.UsecaseUtils; import org.apache.log4j.Logger; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; import org.matsim.core.config.CommandLine; import org.matsim.core.config.Config; import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy; -import org.matsim.core.network.io.MatsimNetworkReader; import org.matsim.core.scenario.ScenarioUtils; import org.matsim.core.utils.io.IOUtils; import org.matsim.vehicles.VehicleType; @@ -67,7 +64,7 @@ * 1.) Simple: Nimm die mitgegebene Reihenfolge. * 2.) */ -/*package-private*/ class ExampleSchedulingOfTransportChainHubsVsDirect { +/*package-private*/ final class ExampleSchedulingOfTransportChainHubsVsDirect { private static final Logger log = Logger.getLogger(ExampleSchedulingOfTransportChainHubsVsDirect.class ); @@ -103,19 +100,22 @@ public static void main (String [] args) throws CommandLine.ConfigurationExcepti } config.controler().setOverwriteFileSetting(OutputDirectoryHierarchy.OverwriteFileSetting.deleteDirectoryIfExists); + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + log.warn( "solutionType=" + ExampleSchedulingOfTransportChainHubsVsDirect.solutionType ); + config.network().setInputFile( "scenarios/2regions/2regions-network.xml" ); + log.info("Starting ..."); log.info("Set up required MATSim classes"); - Scenario scenario = ScenarioUtils.createScenario(config); - new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); - Network network = scenario.getNetwork(); + Scenario scenario = ScenarioUtils.loadScenario(config); //######## log.info("create LSP"); - LSP lsp = createInitialLSP(network); + LSP lsp = createInitialLSP( scenario.getNetwork() ); lsp.setScorer( new LSPScorer(){ private LSP lsp; @Override public double scoreCurrentPlan( LSP lsp ){ @@ -133,10 +133,8 @@ public static void main (String [] args) throws CommandLine.ConfigurationExcepti } ); log.info("create initial LSPShipments"); - Collection shipments = createInitialLSPShipments(network); - log.info("assign the shipments to the LSP"); - for(LSPShipment shipment : shipments) { + for(LSPShipment shipment : createInitialLSPShipments( scenario.getNetwork() ) ) { lsp.assignShipmentToLSP(shipment); } @@ -144,10 +142,7 @@ public static void main (String [] args) throws CommandLine.ConfigurationExcepti lsp.scheduleSolutions(); log.info("Set up simulation controler and LSPModule"); - LinkedHashSet lspList = new LinkedHashSet<>(); - lspList.add(lsp); - var lsps = new LSPs(lspList); - LSPUtils.addLSPs( scenario, lsps ); + LSPUtils.addLSPs( scenario, new LSPs( Collections.singletonList( lsp ) ) ); // @KMT: LSPModule ist vom Design her nur im Zusammenhang mit dem Controler sinnvoll. Damit kann man dann auch vollständig auf // Injection setzen. @@ -157,7 +152,7 @@ public static void main (String [] args) throws CommandLine.ConfigurationExcepti @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } } ); @@ -513,7 +508,7 @@ private static void printResults(String outputDir, LSP lsp) { try ( BufferedWriter writer = IOUtils.getBufferedWriter( outputDir + "/schedules.txt" ) ){ for( LSPShipment shipment : lsp.getShipments() ){ ArrayList elementList = new ArrayList<>( shipment.getShipmentPlan().getPlanElements().values() ); - elementList.sort( new ShipmentPlanElementComparator() ); + elementList.sort( ShipmentUtils.createShipmentPlanElementComparator() ); final String str1 = "Shipment: " + shipment.getId(); System.out.println( str1 ); writer.write( str1 + "\n"); diff --git a/src/main/java/example/lsp/lspReplanning/ExampleLSPReplanning.java b/src/main/java/example/lsp/lspReplanning/ExampleLSPReplanning.java index 76171852..afec6537 100644 --- a/src/main/java/example/lsp/lspReplanning/ExampleLSPReplanning.java +++ b/src/main/java/example/lsp/lspReplanning/ExampleLSPReplanning.java @@ -20,21 +20,17 @@ package example.lsp.lspReplanning; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanner; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; import lsp.shipment.ShipmentUtils; -import lsp.usecase.*; +import lsp.usecase.UsecaseUtils; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; @@ -51,11 +47,10 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; - -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; -import lsp.shipment.LSPShipment; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Random; /*package-private*/ class ExampleLSPReplanning { @@ -205,7 +200,7 @@ public static void main(String[]args) { controler.addOverridingModule( new AbstractModule(){ @Override public void install(){ this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } } ); config.controler().setFirstIteration(0); diff --git a/src/main/java/example/lsp/lspScoring/ExampleLSPScoring.java b/src/main/java/example/lsp/lspScoring/ExampleLSPScoring.java index fb271b19..6e4e74ce 100644 --- a/src/main/java/example/lsp/lspScoring/ExampleLSPScoring.java +++ b/src/main/java/example/lsp/lspScoring/ExampleLSPScoring.java @@ -24,11 +24,9 @@ import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.LSPResource; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; +import lsp.scoring.LSPScoringModuleDefaultImpl; import lsp.shipment.LSPShipment; import lsp.shipment.ShipmentUtils; import lsp.usecase.*; @@ -36,22 +34,18 @@ import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; -import org.matsim.core.network.io.MatsimNetworkReader; import org.matsim.core.scenario.ScenarioUtils; -import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Random; +import java.util.*; /* Example for customized scoring. Each customer that is visited will give a random tip between zero and five * @@ -59,87 +53,58 @@ */ -/*package-private*/ class ExampleLSPScoring { +/*package-private*/ final class ExampleLSPScoring { - private static LSP createLSPWithScorer(Network network) { + private ExampleLSPScoring(){ + } + private static LSP createLSPWithScorer( Network network ) { //The Carrier for the resource of the sole LogisticsSolutionElement of the LSP is created - Id carrierId = Id.create("CollectionCarrier", Carrier.class); - Id vehicleTypeId = Id.create("CollectionCarrierVehicleType", VehicleType.class); - CarrierVehicleType.Builder vehicleTypeBuilder = CarrierVehicleType.Builder.newInstance(vehicleTypeId); - vehicleTypeBuilder.setCapacity(10); - vehicleTypeBuilder.setCostPerDistanceUnit(0.0004); - vehicleTypeBuilder.setCostPerTimeUnit(0.38); - vehicleTypeBuilder.setFixCost(49); - vehicleTypeBuilder.setMaxVelocity(50/3.6); - org.matsim.vehicles.VehicleType collectionType = vehicleTypeBuilder.build(); + var carrierVehicleType = CarrierVehicleType.Builder.newInstance( Id.create("CollectionCarrierVehicleType", VehicleType.class ) ) + .setCapacity(10).setCostPerDistanceUnit(0.0004).setCostPerTimeUnit(0.38).setFixCost(49).setMaxVelocity(50/3.6).build(); Id collectionLinkId = Id.createLinkId("(4 2) (4 3)"); - Id vollectionVehicleId = Id.createVehicleId("CollectionVehicle"); - CarrierVehicle carrierVehicle = CarrierVehicle.newInstance(vollectionVehicleId, collectionLinkId, collectionType); - CarrierCapabilities.Builder capabilitiesBuilder = CarrierCapabilities.Builder.newInstance(); - capabilitiesBuilder.addType(collectionType); - capabilitiesBuilder.addVehicle(carrierVehicle); - capabilitiesBuilder.setFleetSize(FleetSize.INFINITE); - CarrierCapabilities capabilities = capabilitiesBuilder.build(); + CarrierVehicle carrierVehicle = CarrierVehicle.newInstance( Id.createVehicleId("CollectionVehicle" ), collectionLinkId, carrierVehicleType ); + + CarrierCapabilities capabilities = CarrierCapabilities.Builder.newInstance() +// .addType(carrierVehicleType ) + .addVehicle(carrierVehicle ).setFleetSize(FleetSize.INFINITE ).build(); - Carrier carrier = CarrierUtils.createCarrier( carrierId ); + Carrier carrier = CarrierUtils.createCarrier( Id.create("CollectionCarrier", Carrier.class ) ); carrier.setCarrierCapabilities(capabilities); //The Adapter i.e. the Resource is created - Id adapterId = Id.create("CollectionCarrierAdapter", LSPResource.class); - UsecaseUtils.CollectionCarrierAdapterBuilder adapterBuilder = UsecaseUtils.CollectionCarrierAdapterBuilder.newInstance(adapterId, network); - //The scheduler for the Resource is created and added. This is where jsprit comes into play. - adapterBuilder.setCollectionScheduler(UsecaseUtils.createDefaultCollectionCarrierScheduler()); - adapterBuilder.setCarrier(carrier); - adapterBuilder.setLocationLinkId(collectionLinkId); - LSPResource collectionAdapter = adapterBuilder.build(); + LSPResource lspResource = UsecaseUtils.CollectionCarrierAdapterBuilder.newInstance( + Id.create("CollectionCarrierAdapter", LSPResource.class ), network ) + .setCollectionScheduler( UsecaseUtils.createDefaultCollectionCarrierScheduler() ) + .setCarrier(carrier ).setLocationLinkId(collectionLinkId ).build(); //The adapter is now inserted into the only LogisticsSolutionElement of the only LogisticsSolution of the LSP - Id elementId = Id.create("CollectionElement", LogisticsSolutionElement.class); - LSPUtils.LogisticsSolutionElementBuilder collectionElementBuilder = LSPUtils.LogisticsSolutionElementBuilder.newInstance(elementId ); - collectionElementBuilder.setResource(collectionAdapter); - LogisticsSolutionElement collectionElement = collectionElementBuilder.build(); + LogisticsSolutionElement logisticsSolutionElement = LSPUtils.LogisticsSolutionElementBuilder.newInstance( + Id.create("CollectionElement", LogisticsSolutionElement.class ) ).setResource(lspResource ).build(); //The LogisticsSolutionElement is now inserted into the only LogisticsSolution of the LSP - Id collectionSolutionId = Id.create("CollectionSolution", LogisticsSolution.class); - LSPUtils.LogisticsSolutionBuilder collectionSolutionBuilder = LSPUtils.LogisticsSolutionBuilder.newInstance(collectionSolutionId ); - collectionSolutionBuilder.addSolutionElement(collectionElement); - LogisticsSolution collectionSolution = collectionSolutionBuilder.build(); + LogisticsSolution logisticsSolution = LSPUtils.LogisticsSolutionBuilder.newInstance( Id.create("CollectionSolution", LogisticsSolution.class ) ) + .addSolutionElement(logisticsSolutionElement ).build(); //The initial plan of the lsp is generated and the assigner and the solution from above are added - LSPPlan collectionPlan = LSPUtils.createLSPPlan(); - ShipmentAssigner assigner = UsecaseUtils.createDeterministicShipmentAssigner(); - collectionPlan.setAssigner(assigner); - collectionPlan.addSolution(collectionSolution); - - LSPUtils.LSPBuilder collectionLSPBuilder = LSPUtils.LSPBuilder.getInstance(Id.create("CollectionLSP", LSP.class)); - collectionLSPBuilder.setInitialPlan(collectionPlan); - - //The exogenous list of Resoruces for the SolutionScheduler is compiled and the Scheduler is added to the LSPBuilder - ArrayList resourcesList = new ArrayList<>(); - resourcesList.add(collectionAdapter); - SolutionScheduler simpleScheduler = UsecaseUtils.createDefaultSimpleForwardSolutionScheduler(resourcesList); - collectionLSPBuilder.setSolutionScheduler(simpleScheduler); + LSPPlan lspPlan = LSPUtils.createLSPPlan().setAssigner( UsecaseUtils.createDeterministicShipmentAssigner() ).addSolution(logisticsSolution ); - LSP lsp = collectionLSPBuilder.build(); + //The exogenous list of Resoruces for the SolutionScheduler is compiled and the Scheduler is added to the LSPBuilder + LSP lsp = LSPUtils.LSPBuilder.getInstance(Id.create("CollectionLSP", LSP.class ) ) + .setInitialPlan(lspPlan ) + .setSolutionScheduler( UsecaseUtils.createDefaultSimpleForwardSolutionScheduler( Collections.singletonList( lspResource ) ) ) + .build(); - //Create EventHandler for the SimulationTracker which the scorer needs - TipEventHandler handler = new TipEventHandler(); + TipSimulationTracker tracker = new TipSimulationTracker(); - //Create Info for the SimulationTracker which the scorer needs - TipInfo info = new TipInfo(); - - //Create SimulationTracker for the information that the Scorer needs - TipSimulationTracker tracker = new TipSimulationTracker(handler,info); //add SimulationTracker to the Resource - collectionAdapter.addSimulationTracker(tracker); + lspResource.addSimulationTracker(tracker); //Create the Scorer and add it to the lsp - TipScorer scorer = new TipScorer(lsp, tracker); - lsp.setScorer(scorer); + lsp.setScorer( new TipScorer(lsp, tracker) ); // yyyyyy there is almost surely something wrong with the design if you cannot set the // scorer in the builder. kai, sep'18 @@ -148,7 +113,7 @@ private static LSP createLSPWithScorer(Network network) { } private static Collection createInitialLSPShipments(Network network){ - ArrayList shipmentList = new ArrayList<>(); + List shipmentList = new ArrayList<>(); ArrayList linkList = new ArrayList<>(network.getLinks().values()); //Create five LSPShipments that are located in the left half of the network. @@ -185,16 +150,38 @@ private static Collection createInitialLSPShipments(Network network public static void main(String []args) { - //Set up required MATSim classes - Config config = new Config(); - config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); - new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); - Network network = scenario.getNetwork(); + Config config = prepareConfig(); + + Scenario scenario = prepareScenario( config ); + + Controler controler = prepareControler( scenario ); + + controler.run(); + + for( LSP lsp2 : LSPUtils.getLSPs( scenario ).getLSPs().values() ){ + System.out.println("The tip of all customers was: " + lsp2.getSelectedPlan().getScore()); + } + + + } + static Controler prepareControler( Scenario scenario ){ + //Start the Mobsim one iteration is sufficient for scoring + Controler controler = new Controler( scenario ); + controler.addOverridingModule( new AbstractModule(){ + @Override public void install(){ + install( new LSPModule() ); + this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); + } + }); + return controler; + } + static Scenario prepareScenario( Config config ){ + Scenario scenario = ScenarioUtils.loadScenario( config ); //Create LSP and shipments - LSP lsp = createLSPWithScorer(network); - Collection shipments = createInitialLSPShipments(network); + LSP lsp = createLSPWithScorer( scenario.getNetwork() ); + Collection shipments = createInitialLSPShipments( scenario.getNetwork() ); //assign the shipments to the LSP for(LSPShipment shipment : shipments) { @@ -205,28 +192,22 @@ public static void main(String []args) { lsp.scheduleSolutions(); //Prepare LSPModule and add the LSP - ArrayList lspList = new ArrayList<>(); - lspList.add(lsp); - LSPs lsps = new LSPs(lspList); + LSPs lsps = new LSPs( Collections.singletonList( lsp )); LSPUtils.addLSPs( scenario, lsps ); + return scenario; + } + static Config prepareConfig(){ + //Set up required MATSim classes + Config config = ConfigUtils.createConfig(); - //Start the Mobsim one iteration is sufficient for scoring - Controler controler = new Controler(config); - controler.addOverridingModule( new AbstractModule(){ - @Override public void install(){ - install( new LSPModule() ); - this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class); - } - }); - config.controler().setFirstIteration( 0 ); - config.controler().setLastIteration(0); - config.controler().setOverwriteFileSetting(OverwriteFileSetting.overwriteExistingFiles); - config.network().setInputFile("scenarios/2regions/2regions-network.xml"); - controler.run(); + config.network().setInputFile( "scenarios/2regions/2regions-network.xml" ); - System.out.println("The tip of all customers was: " + lsp.getSelectedPlan().getScore()); + config.controler().setLastIteration( 0 ); + config.controler().setOverwriteFileSetting( OverwriteFileSetting.deleteDirectoryIfExists ); + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + return config; } diff --git a/src/main/java/example/lsp/lspScoring/TipInfo.java b/src/main/java/example/lsp/lspScoring/TipInfo.java deleted file mode 100644 index 58d26b54..00000000 --- a/src/main/java/example/lsp/lspScoring/TipInfo.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package example.lsp.lspScoring; - -import lsp.LSPInfo; - -/*package-private*/ class TipInfo extends LSPInfo { - - /*package-private*/ TipInfo() { - } - - @Override - public String getName() { - String name = "TIPINFO"; - return name; - } - - @Override - public void update() { - // TODO Auto-generated method stub - - } - - @Override - public void setName(String name) { - // TODO Auto-generated method stub - - } - -} diff --git a/src/main/java/example/lsp/lspScoring/TipScorer.java b/src/main/java/example/lsp/lspScoring/TipScorer.java index e605104e..ebde6d74 100644 --- a/src/main/java/example/lsp/lspScoring/TipScorer.java +++ b/src/main/java/example/lsp/lspScoring/TipScorer.java @@ -21,7 +21,6 @@ package example.lsp.lspScoring; import lsp.LSP; -import lsp.LSPInfo; import lsp.scoring.LSPScorer; import org.matsim.utils.objectattributes.attributable.Attributes; @@ -38,25 +37,26 @@ @Override public double scoreCurrentPlan(LSP lsp) { double score = 0; - for(LSPInfo info : tracker.getInfos()) { - if(info instanceof TipInfo) { - Attributes function = info.getAttributes(); - for( Map.Entry value : function.getAsMap().entrySet() ) { - if(value.getKey().equals("TIP IN EUR") && value.getValue() instanceof Double) { - double trinkgeldValue = (Double) value.getValue(); - score += trinkgeldValue; - } - } - } +// for(LSPInfo info : tracker.getAttributes()) { +// if(info instanceof TipInfo) { +// Attributes function = info.getAttributes(); +// for( Map.Entry entry : function.getAsMap().entrySet() ) { +// if(entry.getKey().equals("TIP IN EUR") && entry.getValue() instanceof Double) { +// double trinkgeldValue = (Double) entry.getValue(); +// score += trinkgeldValue; +// } +// } +// } +// } + + Double tip = (Double) tracker.getAttributes().getAttribute( "TIP IN EUR" ); + if ( tip != null ){ + score += tip; } + return score; } - @Override - public void setEmbeddingContainer( LSP lsp ) { - // TODO Auto-generated method stub - - } @Override public LSP getEmbeddingContainer(){ throw new RuntimeException( "not implemented" ); } diff --git a/src/main/java/example/lsp/lspScoring/TipSimulationTracker.java b/src/main/java/example/lsp/lspScoring/TipSimulationTracker.java index b828ac1b..dc45a5fa 100644 --- a/src/main/java/example/lsp/lspScoring/TipSimulationTracker.java +++ b/src/main/java/example/lsp/lspScoring/TipSimulationTracker.java @@ -22,44 +22,38 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; +import java.util.List; +import org.matsim.contrib.freight.events.LSPServiceEndEvent; +import org.matsim.contrib.freight.events.eventhandler.LSPServiceEndEventHandler; import org.matsim.core.controler.events.AfterMobsimEvent; import org.matsim.core.events.handler.EventHandler; -import lsp.LSPInfo; import lsp.controler.LSPSimulationTracker; +import org.matsim.utils.objectattributes.attributable.Attributes; /*package-private*/ class TipSimulationTracker implements LSPSimulationTracker{ - private final TipEventHandler handler; - private final LSPInfo info; + private final Attributes attributes = new Attributes(); + + private final TipEventHandler handler = new TipEventHandler(); +// private final LSPInfo info = new TipInfo(); - /*package-private*/ TipSimulationTracker(TipEventHandler handler, LSPInfo info) { - this.info = info; - this.handler = handler; - } - @Override public Collection getEventHandlers() { - ArrayList handlers = new ArrayList<>(); + List handlers = new ArrayList<>(); handlers.add(handler); return handlers; } - @Override - public Collection getInfos() { - ArrayList infos = new ArrayList<>(); - infos.add(info); - return infos; - } - @Override public void notifyAfterMobsim(AfterMobsimEvent event) { double tip = handler.getTip(); // LSPInfoFunctionValueImpl value = LSPInfoFunctionUtils.createInfoFunctionValue( "TIP IN EUR" ); // value.setValue(tip); // info.getAttributes().getAttributes().add(value ); - info.getAttributes().putAttribute( "TIP IN EUR", tip ); + this.getAttributes().putAttribute( "TIP IN EUR", tip ); } @Override @@ -67,5 +61,7 @@ public void reset() { // TODO Auto-generated method stub } - + @Override public Attributes getAttributes(){ + return attributes; + } } diff --git a/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfSimpleLSP.java b/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfSimpleLSP.java index 36251cbd..6f3ab332 100644 --- a/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfSimpleLSP.java +++ b/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfSimpleLSP.java @@ -25,14 +25,11 @@ import java.util.Collections; import java.util.Random; -import com.google.inject.Provides; import lsp.*; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; +import lsp.scoring.LSPScoringModuleDefaultImpl; import lsp.shipment.*; import lsp.usecase.*; import org.matsim.api.core.v01.Id; @@ -41,7 +38,6 @@ import org.matsim.api.core.v01.network.Network; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreator; import org.matsim.core.config.Config; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; @@ -52,7 +48,6 @@ import org.matsim.vehicles.VehicleType; import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; import lsp.LSPResource; /*package-private*/ class ExampleMobsimOfSimpleLSP { @@ -192,7 +187,7 @@ public static void main (String[]args) { controler.addOverridingModule( new AbstractModule(){ @Override public void install(){ this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } } ); config.controler().setFirstIteration(0); @@ -204,9 +199,9 @@ public static void main (String[]args) { for(LSPShipment shipment : lsp.getShipments()) { System.out.println("Shipment: " + shipment.getId()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(int i = 0; i < shipment.getShipmentPlan().getPlanElements().size(); i++) { System.out.println("Scheduled: " + scheduleElements.get(i).getSolutionElement().getId() + " " + scheduleElements.get(i).getResourceId()+ " " + scheduleElements.get(i).getElementType() + " Start: " + scheduleElements.get(i).getStartTime() + " End: " + scheduleElements.get(i).getEndTime()); diff --git a/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfTransportChain.java b/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfTransportChain.java index b8e7037b..72edb2af 100644 --- a/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfTransportChain.java +++ b/src/main/java/example/lsp/mobsimExamples/ExampleMobsimOfTransportChain.java @@ -20,21 +20,16 @@ package example.lsp.mobsimExamples; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; -import org.checkerframework.checker.units.qual.A; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; @@ -50,9 +45,10 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.Random; /*package-private*/ class ExampleMobsimOfTransportChain { @@ -344,7 +340,7 @@ public static void main (String[]args) { @Override public void install(){ install( new LSPModule() ); // this is the better syntax, having everything in one module. kai, may'22 this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } } ); config.controler().setFirstIteration(0); @@ -356,9 +352,9 @@ public static void main (String[]args) { for(LSPShipment shipment : lsp.getShipments()) { System.out.println("Shipment: " + shipment.getId()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(int i = 0; i < shipment.getShipmentPlan().getPlanElements().size(); i++) { System.out.println("Scheduled: " + scheduleElements.get(i).getSolutionElement().getId() + " " + scheduleElements.get(i).getResourceId()+ " " + scheduleElements.get(i).getElementType() + " Start: " + scheduleElements.get(i).getStartTime() + " End: " + scheduleElements.get(i).getEndTime()); diff --git a/src/main/java/example/lsp/simulationTrackers/CostInfo.java b/src/main/java/example/lsp/simulationTrackers/CostInfo.java index 9f3cc0e6..9c8ed926 100644 --- a/src/main/java/example/lsp/simulationTrackers/CostInfo.java +++ b/src/main/java/example/lsp/simulationTrackers/CostInfo.java @@ -1,64 +1,64 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package example.lsp.simulationTrackers; - -import lsp.LSPInfo; - -/*package-private*/ class CostInfo extends LSPInfo { - - CostInfo() { - setFixedCost( null ); - setVariableCost( null ); - } - void setVariableCost( Double value ){ - this.getAttributes().putAttribute( "variableCost", value ); - } - void setFixedCost( Double value ){ - this.getAttributes().putAttribute( "fixedCost", value ); - } - Double getFixedCost() { - return (Double) this.getAttributes().getAttribute( "fixedCost" ); - } - Double getVariableCost(){ - return (Double) this.getAttributes().getAttribute( "variableCost" ); - } - - - @Override - public String getName() { - return "cost_function"; - } - - - @Override - public void update() { - // TODO Auto-generated method stub - - } - - - @Override - public void setName(String name) { - // TODO Auto-generated method stub - - } - -} +///* +// * *********************************************************************** * +// * * project: org.matsim.* +// * * *********************************************************************** * +// * * * +// * * copyright : (C) 2022 by the members listed in the COPYING, * +// * * LICENSE and WARRANTY file. * +// * * email : info at matsim dot org * +// * * * +// * * *********************************************************************** * +// * * * +// * * This program is free software; you can redistribute it and/or modify * +// * * it under the terms of the GNU General Public License as published by * +// * * the Free Software Foundation; either version 2 of the License, or * +// * * (at your option) any later version. * +// * * See also COPYING, LICENSE and WARRANTY file * +// * * * +// * * *********************************************************************** +// */ +// +//package example.lsp.simulationTrackers; +// +//import lsp.LSPInfo; +// +///*package-private*/ class CostInfo extends LSPInfo { +// +// CostInfo() { +// setFixedCost( null ); +// setVariableCost( null ); +// } +// void setVariableCost( Double value ){ +// this.getAttributes().putAttribute( "variableCost", value ); +// } +// void setFixedCost( Double value ){ +// this.getAttributes().putAttribute( "fixedCost", value ); +// } +// Double getFixedCost() { +// return (Double) this.getAttributes().getAttribute( "fixedCost" ); +// } +// Double getVariableCost(){ +// return (Double) this.getAttributes().getAttribute( "variableCost" ); +// } +// +// +// @Override +// public String getName() { +// return "cost_function"; +// } +// +// +// @Override +// public void update() { +// // TODO Auto-generated method stub +// +// } +// +// +// @Override +// public void setName(String name) { +// // TODO Auto-generated method stub +// +// } +// +//} diff --git a/src/main/java/example/lsp/simulationTrackers/ExampleSimulationTrackers.java b/src/main/java/example/lsp/simulationTrackers/ExampleSimulationTrackers.java index acda4b5f..f633c706 100644 --- a/src/main/java/example/lsp/simulationTrackers/ExampleSimulationTrackers.java +++ b/src/main/java/example/lsp/simulationTrackers/ExampleSimulationTrackers.java @@ -25,10 +25,8 @@ import lsp.*; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; +import lsp.scoring.LSPScoringModuleDefaultImpl; import lsp.shipment.ShipmentUtils; import lsp.usecase.*; import org.matsim.api.core.v01.Id; @@ -47,8 +45,6 @@ import org.matsim.vehicles.VehicleType; import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPInfo; import lsp.LSPResource; import lsp.shipment.LSPShipment; @@ -198,7 +194,7 @@ public static void main (String [] args) { controler.addOverridingModule( new AbstractModule(){ @Override public void install(){ this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } } ); config.controler().setFirstIteration(0); @@ -208,17 +204,22 @@ public static void main (String [] args) { controler.run(); //Retrieve cost info from lsp - LSPInfo costInfo; - for(LSPInfo info : lsp.getSelectedPlan().getSolutions().iterator().next().getInfos()) { +// LSPInfo costInfo; +// for(LSPInfo info : lsp.getSelectedPlan().getSolutions().iterator().next().getAttributes()) { // if( Objects.equals( info.getName(), "cost_function" ) ) { // costInfo = info; // for( Map.Entry value : costInfo.getAttributes().getAttributes().getAsMap().entrySet() ){ // System.out.println(value.getKey() + " " + value.getValue()); // } // } - for( Map.Entry entry : info.getAttributes().getAsMap().entrySet() ){ - System.out.println( entry.getKey() + " " + entry.getValue() ); - } +// for( Map.Entry entry : info.getAttributes().getAsMap().entrySet() ){ +// System.out.println( entry.getKey() + " " + entry.getValue() ); +// } +// } + for( LogisticsSolution solution : lsp.getSelectedPlan().getSolutions() ){ + System.out.println( solution.getAttributes().getAttribute( "cost_function" )); } + + } } diff --git a/src/main/java/example/lsp/simulationTrackers/LinearCostTracker.java b/src/main/java/example/lsp/simulationTrackers/LinearCostTracker.java index 6de68123..81543aee 100644 --- a/src/main/java/example/lsp/simulationTrackers/LinearCostTracker.java +++ b/src/main/java/example/lsp/simulationTrackers/LinearCostTracker.java @@ -20,18 +20,20 @@ package example.lsp.simulationTrackers; +import lsp.LSPUtils; import lsp.controler.LSPSimulationTracker; -import lsp.LSPInfo; import org.matsim.core.controler.events.AfterMobsimEvent; import org.matsim.core.events.handler.EventHandler; +import org.matsim.utils.objectattributes.attributable.Attributes; import java.util.ArrayList; import java.util.Collection; /*package-private*/ class LinearCostTracker implements LSPSimulationTracker{ + private final Attributes attributes = new Attributes(); private final Collection eventHandlers; - private final Collection infos; +// private final Collection infos; private double distanceCosts; private double timeCosts; private double loadingCosts; @@ -46,9 +48,9 @@ public LinearCostTracker(double shareOfFixedCosts) { this.shareOfFixedCosts = shareOfFixedCosts; - CostInfo costInfo = new CostInfo(); - infos = new ArrayList<>(); - infos.add(costInfo); +// CostInfo costInfo = new CostInfo(); +// infos = new ArrayList<>(); +// infos.add(costInfo); this.eventHandlers = new ArrayList<>(); } @@ -58,11 +60,6 @@ public Collection getEventHandlers() { return eventHandlers; } - @Override - public Collection getInfos() { - return infos; - } - @Override public void notifyAfterMobsim(AfterMobsimEvent event) { for(EventHandler handler : eventHandlers) { @@ -88,7 +85,7 @@ public void notifyAfterMobsim(AfterMobsimEvent event) { fixedUnitCosts = (totalCosts * shareOfFixedCosts)/totalNumberOfShipments; linearUnitCosts = (totalCosts * (1-shareOfFixedCosts))/totalWeightOfShipments; - CostInfo info = (CostInfo) infos.iterator().next(); +// CostInfo info = (CostInfo) infos.iterator().next(); // for(LSPInfoFunctionValue value : info.getFunction().getValues()) { // if(value instanceof example.lsp.simulationTrackers.FixedCostFunctionValue) { // ((example.lsp.simulationTrackers.FixedCostFunctionValue)value).setValue(fixedUnitCosts); @@ -97,8 +94,10 @@ public void notifyAfterMobsim(AfterMobsimEvent event) { // ((example.lsp.simulationTrackers.LinearCostFunctionValue)value).setValue(linearUnitCosts); // } // } - info.setFixedCost( fixedUnitCosts ); - info.setVariableCost( linearUnitCosts ); +// info.setFixedCost( fixedUnitCosts ); +// info.setVariableCost( linearUnitCosts ); + LSPUtils.setFixedCost( this, fixedUnitCosts ); + LSPUtils.setVariableCost( this, linearUnitCosts ); } @@ -117,6 +116,8 @@ public void reset() { } - - + + @Override public Attributes getAttributes(){ + return attributes; + } } diff --git a/src/main/java/example/lspAndDemand/requirementsChecking/BlueInfo.java b/src/main/java/example/lspAndDemand/requirementsChecking/BlueInfo.java deleted file mode 100644 index 6c3be2b8..00000000 --- a/src/main/java/example/lspAndDemand/requirementsChecking/BlueInfo.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package example.lspAndDemand.requirementsChecking; - -import lsp.LSPInfo; - -/*package-private*/ class BlueInfo extends LSPInfo { - - /*package-private*/ BlueInfo() { - this.getAttributes().putAttribute( "blue", null ); - } - - @Override - public String getName() { - return "blue"; - } - - @Override - public void update() { - // TODO Auto-generated method stub - - } - - @Override - public void setName(String name) { - // TODO Auto-generated method stub - - } -} diff --git a/src/main/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java b/src/main/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java index 40f114b9..50b945ea 100644 --- a/src/main/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java +++ b/src/main/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java @@ -20,7 +20,6 @@ package example.lspAndDemand.requirementsChecking; -import lsp.LSPInfo; import lsp.LogisticsSolution; import lsp.shipment.Requirement; @@ -28,11 +27,14 @@ @Override public boolean checkRequirement(LogisticsSolution solution) { - for(LSPInfo info : solution.getInfos()) { - if(info instanceof BlueInfo) { - return true; - } - } +// for(LSPInfo info : solution.getAttributes()) { +// if(info instanceof BlueInfo) { +// return true; +// } +// } + if ( solution.getAttributes().getAttribute( "color" ).equals( "blue" ) ) { + return true; + } return false; } diff --git a/src/main/java/example/lspAndDemand/requirementsChecking/ExampleCheckRequirementsOfAssigner.java b/src/main/java/example/lspAndDemand/requirementsChecking/ExampleCheckRequirementsOfAssigner.java index 3c7c6f8e..18a34534 100644 --- a/src/main/java/example/lspAndDemand/requirementsChecking/ExampleCheckRequirementsOfAssigner.java +++ b/src/main/java/example/lspAndDemand/requirementsChecking/ExampleCheckRequirementsOfAssigner.java @@ -87,7 +87,8 @@ public static LSP createLSPWithProperties(Network network) { LogisticsSolution redSolution = redSolutionBuilder.build(); //Add info that shows the world the color of the solution - redSolution.getInfos().add(new RedInfo()); +// redSolution.getAttributes().add(new RedInfo() ); + redSolution.getAttributes().putAttribute( "color", "red" ); //Create blue LogisticsSolution which has the corresponding info @@ -121,7 +122,8 @@ public static LSP createLSPWithProperties(Network network) { LogisticsSolution blueSolution = blueSolutionBuilder.build(); //Add info that shows the world the color of the solution - blueSolution.getInfos().add(new BlueInfo()); +// blueSolution.getAttributes().add(new BlueInfo() ); + blueSolution.getAttributes().putAttribute( "color", "blue" ); //Create the initial plan, add assigner that checks requirements of the shipments when assigning and add both solutions (red and blue) to the //plan. diff --git a/src/main/java/example/lspAndDemand/requirementsChecking/RedInfo.java b/src/main/java/example/lspAndDemand/requirementsChecking/RedInfo.java deleted file mode 100644 index 5b95d824..00000000 --- a/src/main/java/example/lspAndDemand/requirementsChecking/RedInfo.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package example.lspAndDemand.requirementsChecking; - -import lsp.LSPInfo; - -/*package-private*/ class RedInfo extends LSPInfo { - - /*package-private*/ RedInfo() { - this.getAttributes().putAttribute( "red", null ); - } - - @Override - public String getName() { - return "red"; - } - - @Override - public void update() { - // TODO Auto-generated method stub - } - - @Override - public void setName(String name) { - // TODO Auto-generated method stub - } - -} diff --git a/src/main/java/example/lspAndDemand/requirementsChecking/RedRequirement.java b/src/main/java/example/lspAndDemand/requirementsChecking/RedRequirement.java index b14431ab..91959448 100644 --- a/src/main/java/example/lspAndDemand/requirementsChecking/RedRequirement.java +++ b/src/main/java/example/lspAndDemand/requirementsChecking/RedRequirement.java @@ -20,7 +20,6 @@ package example.lspAndDemand.requirementsChecking; -import lsp.LSPInfo; import lsp.LogisticsSolution; import lsp.shipment.Requirement; @@ -28,11 +27,14 @@ @Override public boolean checkRequirement(LogisticsSolution solution) { - for(LSPInfo info : solution.getInfos()) { - if(info instanceof RedInfo) { - return true; - } - } +// for(LSPInfo info : solution.getAttributes()) { +// if(info instanceof RedInfo) { +// return true; +// } +// } + if ( solution.getAttributes().getAttribute( "color" ).equals( "blue" ) ) { + return true; + } return false; } diff --git a/src/main/java/lsp/HasBackpointer.java b/src/main/java/lsp/HasBackpointer.java index e4bd635c..55d23ff8 100644 --- a/src/main/java/lsp/HasBackpointer.java +++ b/src/main/java/lsp/HasBackpointer.java @@ -1,6 +1,10 @@ package lsp; public interface HasBackpointer { - void setEmbeddingContainer(T pointer); - T getEmbeddingContainer() ; + + // yy maybe also have interface HasSettableBackpointer? + default void setEmbeddingContainer(T pointer) {}; + + T getEmbeddingContainer(); + } diff --git a/src/main/java/lsp/HasEventHandlers.java b/src/main/java/lsp/HasEventHandlers.java index c56ee00e..eca283dc 100644 --- a/src/main/java/lsp/HasEventHandlers.java +++ b/src/main/java/lsp/HasEventHandlers.java @@ -27,4 +27,5 @@ public interface HasEventHandlers { CollectiongetEventHandlers(); + } diff --git a/src/main/java/lsp/HasInfos.java b/src/main/java/lsp/HasInfos.java deleted file mode 100644 index 71f3512b..00000000 --- a/src/main/java/lsp/HasInfos.java +++ /dev/null @@ -1,7 +0,0 @@ -package lsp; - -import java.util.Collection; - -public interface HasInfos{ - Collection getInfos(); -} diff --git a/src/main/java/lsp/HasSimulationTrackers.java b/src/main/java/lsp/HasSimulationTrackers.java index 0a657faa..2bb4331c 100644 --- a/src/main/java/lsp/HasSimulationTrackers.java +++ b/src/main/java/lsp/HasSimulationTrackers.java @@ -4,7 +4,21 @@ import java.util.Collection; +/** + * @deprecated -- try to do without + */ +// One could say that the simulation trackers are the decorators that convert the data objects into behavioral objects. In core matsim, we instead +// create behavioral objects, which contain the data objects. E.g. MobsimAgent, DriverAgent, CarrierAgent, etc. kai, may'22 public interface HasSimulationTrackers{ + + /** + * @deprecated -- try to do without + */ void addSimulationTracker( LSPSimulationTracker tracker ); + + /** + * @deprecated -- try to do without + */ Collection getSimulationTrackers(); + } diff --git a/src/main/java/lsp/LSP.java b/src/main/java/lsp/LSP.java index 083516aa..c46513f3 100644 --- a/src/main/java/lsp/LSP.java +++ b/src/main/java/lsp/LSP.java @@ -81,7 +81,7 @@ public interface LSP extends HasPlansAndId{ * yyyy does it make sense to expose this (implies that scorer can be changed during iterations)? */ void setScorer( LSPScorer scorer ); - + /** * @param replanner * diff --git a/src/main/java/lsp/LSPInfo.java b/src/main/java/lsp/LSPInfo.java deleted file mode 100644 index e13f237c..00000000 --- a/src/main/java/lsp/LSPInfo.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package lsp; - -import lsp.shipment.LSPShipment; -import org.matsim.utils.objectattributes.attributable.Attributable; -import org.matsim.utils.objectattributes.attributable.Attributes; - -import java.util.HashSet; -import java.util.Set; - -/** - * In order to enable a wide range of data to be represented, the abstract class {@link LSPInfo} was created. - * It contains data about the object to which it is attached. - * - * Infos can be attached to {@link LogisticsSolution}s, {@link LSPShipment}s, {@link LogisticsSolutionElement}s and {@link LSPResource}s. - * - * Further, they can be valid only during a certain period of time. - * - * Note (KMT, KN Mrz22): If we need to store more infos inside an attribute, e.g. a Collection for the {@link CostInfo}: - * There are the AttributeConverter(s) in MATSim-libs. - * One could easily create a DoubleCollectionConverter based on the StringCollectionConverter if needed. - */ -public abstract class LSPInfo implements Attributable { - - private final Attributes attributes = new Attributes(); - - protected LSPInfo() { - } - - public abstract void setName(String name); - public abstract String getName(); - public abstract void update(); - - @Override - public Attributes getAttributes(){ - return attributes; - } - - -} diff --git a/src/main/java/lsp/LSPResource.java b/src/main/java/lsp/LSPResource.java index 597d9b74..1ce75617 100644 --- a/src/main/java/lsp/LSPResource.java +++ b/src/main/java/lsp/LSPResource.java @@ -25,16 +25,14 @@ import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Identifiable; import org.matsim.api.core.v01.network.Link; -import org.matsim.core.api.experimental.events.EventsManager; -import org.matsim.core.events.handler.EventHandler; -import lsp.controler.LSPSimulationTracker; +import org.matsim.utils.objectattributes.attributable.Attributable; /** * * */ -public interface LSPResource extends Identifiable, HasSimulationTrackers, HasEventHandlers, HasInfos { +public interface LSPResource extends Identifiable, HasSimulationTrackers, HasEventHandlers, Attributable{ Id getStartLinkId(); diff --git a/src/main/java/lsp/LSPResourceScheduler.java b/src/main/java/lsp/LSPResourceScheduler.java index 03bcc673..d3e0da88 100644 --- a/src/main/java/lsp/LSPResourceScheduler.java +++ b/src/main/java/lsp/LSPResourceScheduler.java @@ -20,10 +20,10 @@ package lsp; -import java.util.ArrayList; - import lsp.shipment.LSPShipment; -import lsp.shipment.ShipmentComparator; + +import java.util.ArrayList; +import java.util.Comparator; /** * Resources are scheduled separately by calling their individual scheduling algorithm. @@ -85,7 +85,7 @@ public final void presortIncomingShipments(){ for(LogisticsSolutionElement element : resource.getClientElements()){ shipments.addAll(element.getIncomingShipments().getShipments()); } - shipments.sort( new ShipmentComparator() ); + shipments.sort( Comparator.comparingDouble( ShipmentWithTime::getTime ) ); } diff --git a/src/main/java/lsp/LSPUtils.java b/src/main/java/lsp/LSPUtils.java index e0f4739f..3321e264 100644 --- a/src/main/java/lsp/LSPUtils.java +++ b/src/main/java/lsp/LSPUtils.java @@ -26,11 +26,12 @@ import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.core.events.handler.EventHandler; +import org.matsim.utils.objectattributes.attributable.Attributable; import java.util.ArrayList; import java.util.Collection; -public class LSPUtils{ +public final class LSPUtils{ public static LSPPlan createLSPPlan(){ return new LSPPlanImpl(); } @@ -41,7 +42,7 @@ public static WaitingShipments createWaitingShipments(){ return new WaitingShipmentsImpl(); } private LSPUtils(){} // do not instantiate - public static class LSPBuilder{ + public static final class LSPBuilder{ Id id; SolutionScheduler solutionScheduler; LSPPlan initialPlan; @@ -55,8 +56,8 @@ public static LSPBuilder getInstance(Id id){ } private LSPBuilder(Id id){ + this.id = id; // this line was not there until today. kai, may'22 this.resources = new ArrayList<>(); - } public LSPBuilder setSolutionScheduler( SolutionScheduler solutionScheduler ){ @@ -93,10 +94,9 @@ public LSP build(){ } } - public static class LogisticsSolutionBuilder{ + public static final class LogisticsSolutionBuilder{ final Id id; final Collection elements; - final Collection solutionInfos; final Collection eventHandlers; final Collectiontrackers; @@ -106,7 +106,6 @@ public static LogisticsSolutionBuilder newInstance( Idid ){ private LogisticsSolutionBuilder( Id id ){ this.elements = new ArrayList<>(); - this.solutionInfos = new ArrayList<>(); this.eventHandlers = new ArrayList<>(); this.trackers = new ArrayList<>(); this.id = id; @@ -117,11 +116,6 @@ public LogisticsSolutionBuilder addSolutionElement( LogisticsSolutionElement ele return this; } - public LogisticsSolutionBuilder addInfo( LSPInfo info ) { - solutionInfos.add(info); - return this; - } - public LogisticsSolutionBuilder addEventHandler( EventHandler handler ) { eventHandlers.add(handler); return this; @@ -137,7 +131,7 @@ public LogisticsSolution build(){ } } - public static class LogisticsSolutionElementBuilder{ + public static final class LogisticsSolutionElementBuilder{ final Idid; LSPResource resource; final WaitingShipments incomingShipments; @@ -175,7 +169,7 @@ public static LSPs getLSPs( Scenario scenario ) { } return (LSPs) result; } -// The following would be closer to how we have done it elsewhere (scenario containers are mutable). kai, may'22' + // The following would be closer to how we have done it elsewhere (scenario containers are mutable). kai, may'22' // public static LSPs createOrGetLPSs( Scenario scenario ){ // Object result = scenario.getScenarioElement( lspsString ); // LSPs lsps; @@ -187,4 +181,18 @@ public static LSPs getLSPs( Scenario scenario ) { // } // return lsps; // } + + public static Double getVariableCost( Attributable attributable ) { + return (Double) attributable.getAttributes().getAttribute( "variableCost" ); + } + public static void setVariableCost( Attributable attributable, Double variableCost ) { + attributable.getAttributes().putAttribute( "variableCost", variableCost ); + } + public static Double getFixedCost( Attributable attributable ) { + return (Double) attributable.getAttributes().getAttribute( "fixedCost" ); + } + public static void setFixedCost( Attributable attributable, Double fixedCost ) { + attributable.getAttributes().putAttribute( "fixedCost", fixedCost ); + } + } diff --git a/src/main/java/lsp/LSPs.java b/src/main/java/lsp/LSPs.java index ed1055c3..00a74d29 100644 --- a/src/main/java/lsp/LSPs.java +++ b/src/main/java/lsp/LSPs.java @@ -22,13 +22,14 @@ import java.util.Collection; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; import org.matsim.api.core.v01.Id; public class LSPs { - private final Map, LSP> lsps = new HashMap<>(); + private final Map, LSP> lsps = new LinkedHashMap<>(); public LSPs(Collection lsps) { makeMap(lsps); diff --git a/src/main/java/lsp/LogisticsSolution.java b/src/main/java/lsp/LogisticsSolution.java index 08f4f4b1..8d1af4f2 100644 --- a/src/main/java/lsp/LogisticsSolution.java +++ b/src/main/java/lsp/LogisticsSolution.java @@ -20,9 +20,9 @@ package lsp; -import lsp.controler.LSPSimulationTracker; import lsp.shipment.LSPShipment; import org.matsim.api.core.v01.Identifiable; +import org.matsim.utils.objectattributes.attributable.Attributable; import java.util.Collection; @@ -35,7 +35,7 @@ * {@link LSPResource}. This introduction of an intermediate layer allows physical Resources * to be used by several {@link LogisticsSolution}s and thus transport chains. */ -public interface LogisticsSolution extends Identifiable, KnowsLSP, HasEventHandlers, HasSimulationTrackers, HasInfos { +public interface LogisticsSolution extends Identifiable, KnowsLSP, HasEventHandlers, HasSimulationTrackers, Attributable{ Collection getSolutionElements(); diff --git a/src/main/java/lsp/LogisticsSolutionElement.java b/src/main/java/lsp/LogisticsSolutionElement.java index 9abd4428..b86f0619 100644 --- a/src/main/java/lsp/LogisticsSolutionElement.java +++ b/src/main/java/lsp/LogisticsSolutionElement.java @@ -20,16 +20,12 @@ package lsp; -import java.util.Collection; - -import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Identifiable; -import org.matsim.core.events.handler.EventHandler; -import lsp.controler.LSPSimulationTracker; +import org.matsim.utils.objectattributes.attributable.Attributable; -public interface LogisticsSolutionElement extends Identifiable, HasBackpointer, HasEventHandlers, HasSimulationTrackers, HasInfos { +public interface LogisticsSolutionElement extends Identifiable, HasBackpointer, HasEventHandlers, HasSimulationTrackers, Attributable{ void connectWithNextElement(LogisticsSolutionElement element); diff --git a/src/main/java/lsp/LogisticsSolutionElementImpl.java b/src/main/java/lsp/LogisticsSolutionElementImpl.java index 63258f69..7f25fc06 100644 --- a/src/main/java/lsp/LogisticsSolutionElementImpl.java +++ b/src/main/java/lsp/LogisticsSolutionElementImpl.java @@ -23,14 +23,16 @@ import lsp.controler.LSPSimulationTracker; import org.matsim.api.core.v01.Id; import org.matsim.core.events.handler.EventHandler; +import org.matsim.utils.objectattributes.attributable.Attributes; import java.util.ArrayList; import java.util.Collection; - +import java.util.Map; /* package-private */ class LogisticsSolutionElementImpl implements LogisticsSolutionElement { + private final Attributes attributes = new Attributes(); private final Idid; //die beiden nicht im Builder. Die können erst in der Solution als ganzes gesetzt werden private LogisticsSolutionElement previousElement; @@ -39,7 +41,6 @@ private final WaitingShipments incomingShipments; private final WaitingShipments outgoingShipments; private LogisticsSolution solution; - private final Collection infos; private final Collection trackers; private final Collection handlers; // private EventsManager eventsManager; @@ -51,7 +52,6 @@ this.outgoingShipments = builder.outgoingShipments; resource.getClientElements().add(this); this.handlers = new ArrayList<>(); - this.infos = new ArrayList<>(); this.trackers = new ArrayList<>(); } @@ -113,13 +113,14 @@ public LogisticsSolutionElement getNextElement() { @Override public void addSimulationTracker( LSPSimulationTracker tracker ) { trackers.add(tracker); - infos.addAll(tracker.getInfos()); - handlers.addAll(tracker.getEventHandlers()); - } - @Override - public Collection getInfos() { - return infos; + // can't say if this hierarchical design is useful or confusing. kai, may'22 + // yy should maybe check for overwriting? However, did also not check in original design. kai, may'22 + for( Map.Entry entry : tracker.getAttributes().getAsMap().entrySet() ){ + attributes.putAttribute( entry.getKey(), entry.getValue() ); + } + + handlers.addAll(tracker.getEventHandlers()); } public Collection getEventHandlers(){ @@ -130,6 +131,9 @@ public Collection getEventHandlers(){ public Collection getSimulationTrackers() { return trackers; } + @Override public Attributes getAttributes(){ + return attributes; + } // @Override // public void setEventsManager(EventsManager eventsManager) { diff --git a/src/main/java/lsp/LogisticsSolutionImpl.java b/src/main/java/lsp/LogisticsSolutionImpl.java index 5f46d5b7..94f96656 100644 --- a/src/main/java/lsp/LogisticsSolutionImpl.java +++ b/src/main/java/lsp/LogisticsSolutionImpl.java @@ -22,21 +22,22 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Map; import org.matsim.api.core.v01.Id; import org.matsim.core.events.handler.EventHandler; import lsp.shipment.LSPShipment; import lsp.controler.LSPSimulationTracker; +import org.matsim.utils.objectattributes.attributable.Attributes; /* package-private */ class LogisticsSolutionImpl implements LogisticsSolution { - + private final Attributes attributes = new Attributes(); private final Id id; private LSP lsp; private final Collection solutionElements; private final Collection shipments; - private final Collection solutionInfos; private final Collection eventHandlers; private final Collectiontrackers; @@ -48,8 +49,7 @@ element.setEmbeddingContainer(this ); } this.shipments = new ArrayList<>(); - this.solutionInfos = builder.solutionInfos; - this.eventHandlers = builder.eventHandlers; + this.eventHandlers = builder.eventHandlers; this.trackers = builder.trackers; } @@ -84,12 +84,6 @@ public void assignShipment(LSPShipment shipment) { shipments.add(shipment); } - @Override - public Collection getInfos() { - return solutionInfos; - } - - @Override public Collection getEventHandlers() { return eventHandlers; @@ -100,7 +94,11 @@ public Collection getEventHandlers() { public void addSimulationTracker( LSPSimulationTracker tracker ) { this.trackers.add(tracker); this.eventHandlers.addAll(tracker.getEventHandlers()); - this.solutionInfos.addAll(tracker.getInfos()); +// this.solutionInfos.addAll(tracker.getAttributes() ); + for( Map.Entry entry : tracker.getAttributes().getAsMap().entrySet() ){ + this.attributes.putAttribute( entry.getKey(), entry.getValue()); + } + } @@ -108,7 +106,16 @@ public void addSimulationTracker( LSPSimulationTracker tracker ) { public Collection getSimulationTrackers() { return trackers; } - + + @Override public Attributes getAttributes(){ + for( LSPSimulationTracker tracker : this.trackers ){ + for( Map.Entry entry : tracker.getAttributes().getAsMap().entrySet() ){ + this.attributes.putAttribute( entry.getKey(), entry.getValue()); + } + } + return attributes; + } + // @Override // public void setEventsManager(EventsManager eventsManager) { // } diff --git a/src/main/java/lsp/ShipmentAssigner.java b/src/main/java/lsp/ShipmentAssigner.java index 3f917001..d4fdaa35 100644 --- a/src/main/java/lsp/ShipmentAssigner.java +++ b/src/main/java/lsp/ShipmentAssigner.java @@ -23,13 +23,16 @@ import lsp.shipment.LSPShipment; /** - * Takes a {@link LSPShipment} and normally assigns it to something that belongs to an {@link LSP}. - * + * Takes an {@link LSPShipment} and normally assigns it to something that belongs to an {@link LSP}. + *

* If there are several {@link LogisticsSolution}s, the {@link LSP} has to assign each {@link LSPShipment} to * the suitable one. For this purpose, each LSPPlan contains a pluggable strategy that - * is contained in classes implementing the interface ShipmentAssigner. - * - * Weist {@link LSPShipment}s den {@link LogisticsSolution}s zu. + * is contained in classes implementing the interface {@link ShipmentAssigner}. + *

+ * Discussion points:
    + *
  • yyyy Shipments are normally assigned to the selected plan only. I am not sure if this is what I would + * expect from the outside. kai, may'22
  • + *
*/ public interface ShipmentAssigner extends KnowsLSP { diff --git a/src/main/java/lsp/WaitingShipmentsImpl.java b/src/main/java/lsp/WaitingShipmentsImpl.java index b33ec756..ae372113 100644 --- a/src/main/java/lsp/WaitingShipmentsImpl.java +++ b/src/main/java/lsp/WaitingShipmentsImpl.java @@ -20,17 +20,17 @@ package lsp; +import lsp.shipment.LSPShipment; + import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; - -import lsp.shipment.LSPShipment; -import lsp.shipment.ShipmentComparator; +import java.util.Comparator; +import java.util.List; /* package-private */ class WaitingShipmentsImpl implements WaitingShipments { - private final ArrayList shipments; + private final List shipments; WaitingShipmentsImpl() { this.shipments = new ArrayList<>(); @@ -41,12 +41,12 @@ public void addShipment(double time, LSPShipment shipment) { ShipmentWithTime tuple = new ShipmentWithTime(time, shipment); this.shipments.add(tuple); - shipments.sort(new ShipmentComparator()); + shipments.sort( Comparator.comparingDouble( ShipmentWithTime::getTime ) );; } @Override public Collection getSortedShipments() { - shipments.sort(new ShipmentComparator()); + shipments.sort( Comparator.comparingDouble( ShipmentWithTime::getTime ) ); return shipments; } diff --git a/src/main/java/lsp/controler/LSPControlerListenerImpl.java b/src/main/java/lsp/controler/LSPControlerListenerImpl.java index f0ec7955..1a284c80 100644 --- a/src/main/java/lsp/controler/LSPControlerListenerImpl.java +++ b/src/main/java/lsp/controler/LSPControlerListenerImpl.java @@ -22,7 +22,6 @@ import lsp.*; -import lsp.LSPInfo; import lsp.replanning.LSPReplanningModule; import lsp.LSPCarrierResource; import lsp.scoring.LSPScoringModule; @@ -40,6 +39,7 @@ import javax.inject.Inject; import java.util.ArrayList; import java.util.Collection; +import java.util.List; class LSPControlerListenerImpl implements BeforeMobsimListener, AfterMobsimListener, ScoringListener, @@ -53,11 +53,12 @@ class LSPControlerListenerImpl implements BeforeMobsimListener, AfterMobsimListe private final LSPScoringModule scoringModule; private final Collection creators; - private ArrayList registeredHandlers; + private List registeredHandlers; - @Inject EventsManager eventsManager; + @Inject private EventsManager eventsManager; - @Inject LSPControlerListenerImpl( Scenario scenario, LSPReplanningModule replanningModule, LSPScoringModule scoringModule, Collection creators ) { + @Inject LSPControlerListenerImpl( Scenario scenario, LSPReplanningModule replanningModule, LSPScoringModule scoringModule, + Collection creators ) { this.scenario = scenario; this.replanningModule = replanningModule; this.scoringModule = scoringModule; @@ -69,8 +70,7 @@ class LSPControlerListenerImpl implements BeforeMobsimListener, AfterMobsimListe public void notifyBeforeMobsim(BeforeMobsimEvent event) { LSPs lsps = LSPUtils.getLSPs( scenario ); - LSPRescheduler rescheduler = new LSPRescheduler(lsps); - rescheduler.notifyBeforeMobsim(event); + LSPRescheduler.notifyBeforeMobsim(lsps, event); carrierResourceTracker = new CarrierAgentTracker(carriers, creators, eventsManager ); eventsManager.addHandler(carrierResourceTracker); @@ -121,7 +121,7 @@ public void notifyAfterMobsim(AfterMobsimEvent event) { eventsManager.removeHandler(carrierResourceTracker); - ArrayList alreadyUpdatedTrackers = new ArrayList<>(); + Collection alreadyUpdatedTrackers = new ArrayList<>(); for(LSP lsp : lsps.getLSPs().values()) { for(LogisticsSolution solution : lsp.getSelectedPlan().getSolutions()) { for(LogisticsSolutionElement element : solution.getSolutionElements()) { @@ -141,18 +141,18 @@ public void notifyAfterMobsim(AfterMobsimEvent event) { } } - for(LSP lsp : lsps.getLSPs().values()) { - for(LogisticsSolution solution : lsp.getSelectedPlan().getSolutions()) { - for(LogisticsSolutionElement element : solution.getSolutionElements()) { - for(LSPInfo info : element.getInfos()) { - info.update(); - } - } - for(LSPInfo info : solution.getInfos()) { - info.update(); - } - } - } +// for(LSP lsp : lsps.getLSPs().values()) { +// for(LogisticsSolution solution : lsp.getSelectedPlan().getSolutions()) { +// for(LogisticsSolutionElement element : solution.getSolutionElements()) { +// for(LSPInfo info : element.getAttributes()) { +// info.update(); +// } +// } +// for(LSPInfo info : solution.getAttributes()) { +// info.update(); +// } +// } +// } } diff --git a/src/main/java/lsp/controler/LSPModule.java b/src/main/java/lsp/controler/LSPModule.java index 29747aad..cf03004e 100644 --- a/src/main/java/lsp/controler/LSPModule.java +++ b/src/main/java/lsp/controler/LSPModule.java @@ -43,13 +43,13 @@ public class LSPModule extends AbstractModule { private static final Logger log = org.apache.log4j.Logger.getLogger( LSPModule.class ); - private final FreightConfigGroup carrierConfig = new FreightConfigGroup(); +// private final FreightConfigGroup carrierConfig = new FreightConfigGroup(); @Override public void install() { FreightConfigGroup freightConfig = ConfigUtils.addOrGetModule( getConfig(), FreightConfigGroup.class ) ; - bind(FreightConfigGroup.class).toInstance(carrierConfig); +// bind(FreightConfigGroup.class).toInstance(carrierConfig); // yyyyyy ????? doesn't this ignore the freightConfig that was just pulled out of config two lines earlier? kai, may'22 bind( LSPControlerListenerImpl.class ).in( Singleton.class ); @@ -62,10 +62,10 @@ public void install() { switch ( freightConfig.getTimeWindowHandling() ) { case ignore: break; - case enforceBeginnings: -// abc.add( WithinDayActivityReScheduling.COMPONENT_NAME ); - log.warn("LSP has never hedged against time window openings; this is probably wrong; but I don't know what to do ..."); - break; +// case enforceBeginnings: +//// abc.add( WithinDayActivityReScheduling.COMPONENT_NAME ); +// log.warn("LSP has never hedged against time window openings; this is probably wrong; but I don't know what to do ..."); +// break; default: throw new IllegalStateException( "Unexpected value: " + freightConfig.getTimeWindowHandling() ); } @@ -79,10 +79,10 @@ public void install() { switch( freightConfig.getTimeWindowHandling() ) { case ignore: break; - case enforceBeginnings: -// this.addQSimComponentBinding(WithinDayActivityReScheduling.COMPONENT_NAME).to( WithinDayActivityReScheduling.class ); - log.warn("LSP has never hedged against time window openings; this is probably wrong; but I don't know what to do ..."); - break; +// case enforceBeginnings: +//// this.addQSimComponentBinding(WithinDayActivityReScheduling.COMPONENT_NAME).to( WithinDayActivityReScheduling.class ); +// log.warn("LSP has never hedged against time window openings; this is probably wrong; but I don't know what to do ..."); +// break; default: throw new IllegalStateException( "Unexpected value: " + freightConfig.getTimeWindowHandling() ); } @@ -96,9 +96,8 @@ public void install() { // (if you do not like them, you will have to override the binding. kai, may'22) } - @Provides - CarrierAgentTracker provideCarrierResourceTracker( LSPControlerListenerImpl lSPControlerListener ) { - return lSPControlerListener.getCarrierResourceTracker(); + @Provides CarrierAgentTracker provideCarrierResourceTracker( LSPControlerListenerImpl lspControlerListener ) { + return lspControlerListener.getCarrierResourceTracker(); } } diff --git a/src/main/java/lsp/controler/LSPRescheduler.java b/src/main/java/lsp/controler/LSPRescheduler.java index aa207ba4..ec2b2f81 100644 --- a/src/main/java/lsp/controler/LSPRescheduler.java +++ b/src/main/java/lsp/controler/LSPRescheduler.java @@ -56,16 +56,17 @@ * network, for example passenger traffic, and the network conditions change between * subsequent iterations of the simulation due to congestion. */ -class LSPRescheduler implements BeforeMobsimListener{ +final class LSPRescheduler { + private LSPRescheduler(){ } + +// private final LSPs lsps; +// +// public LSPRescheduler(LSPs lsps) { +// this.lsps = lsps; +// } - private final LSPs lsps; - - public LSPRescheduler(LSPs lsps) { - this.lsps = lsps; - } - - public void notifyBeforeMobsim(BeforeMobsimEvent arg0) { + static void notifyBeforeMobsim( LSPs lsps, BeforeMobsimEvent arg0) { if(arg0.getIteration() != 0) { for(LSP lsp : lsps.getLSPs().values()){ for(LogisticsSolution solution : lsp.getSelectedPlan().getSolutions()) { diff --git a/src/main/java/lsp/controler/LSPSimulationTracker.java b/src/main/java/lsp/controler/LSPSimulationTracker.java index 0ebca5bc..c6192d15 100644 --- a/src/main/java/lsp/controler/LSPSimulationTracker.java +++ b/src/main/java/lsp/controler/LSPSimulationTracker.java @@ -20,15 +20,18 @@ package lsp.controler; -import java.util.Collection; - import lsp.HasEventHandlers; -import lsp.HasInfos; import org.matsim.core.controler.listener.AfterMobsimListener; -import org.matsim.core.events.handler.EventHandler; +import org.matsim.utils.objectattributes.attributable.Attributable; -import lsp.LSPInfo; +/** + * @deprecated -- try to do without + */ +public interface LSPSimulationTracker extends AfterMobsimListener, HasEventHandlers, Attributable{ -public interface LSPSimulationTracker extends AfterMobsimListener, HasEventHandlers, HasInfos { + /** + * @deprecated -- try to do without + */ void reset(); + } diff --git a/src/main/java/lsp/scoring/LSPScoringModuleImpl.java b/src/main/java/lsp/scoring/LSPScoringModuleDefaultImpl.java similarity index 91% rename from src/main/java/lsp/scoring/LSPScoringModuleImpl.java rename to src/main/java/lsp/scoring/LSPScoringModuleDefaultImpl.java index 35986938..fc85e20b 100644 --- a/src/main/java/lsp/scoring/LSPScoringModuleImpl.java +++ b/src/main/java/lsp/scoring/LSPScoringModuleDefaultImpl.java @@ -1,53 +1,53 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package lsp.scoring; - -import com.google.inject.Inject; -import lsp.LSP; -import lsp.LSPUtils; -import lsp.LSPs; -import org.matsim.api.core.v01.Scenario; -import org.matsim.core.controler.events.ScoringEvent; - -public class LSPScoringModuleImpl implements LSPScoringModule{ - - private final Scenario scenario; - @Inject LSPScoringModuleImpl( Scenario scenario ) { - this.scenario = scenario; - } - -// LSPScoringModuleImpl(LSPs lsps) { -// this.lsps = lsps; -// } - - @Override - public void notifyScoring(ScoringEvent event) { - scoreLSPs(event); - } - - @Override - public void scoreLSPs(ScoringEvent arg0) { - LSPs lsps = LSPUtils.getLSPs( scenario ); - for(LSP lsp : lsps.getLSPs().values()) { - lsp.scoreSelectedPlan(); - } - } -} +/* + * *********************************************************************** * + * * project: org.matsim.* + * * *********************************************************************** * + * * * + * * copyright : (C) 2022 by the members listed in the COPYING, * + * * LICENSE and WARRANTY file. * + * * email : info at matsim dot org * + * * * + * * *********************************************************************** * + * * * + * * This program is free software; you can redistribute it and/or modify * + * * it under the terms of the GNU General Public License as published by * + * * the Free Software Foundation; either version 2 of the License, or * + * * (at your option) any later version. * + * * See also COPYING, LICENSE and WARRANTY file * + * * * + * * *********************************************************************** + */ + +package lsp.scoring; + +import com.google.inject.Inject; +import lsp.LSP; +import lsp.LSPUtils; +import lsp.LSPs; +import org.matsim.api.core.v01.Scenario; +import org.matsim.core.controler.events.ScoringEvent; + +public class LSPScoringModuleDefaultImpl implements LSPScoringModule{ + + private final Scenario scenario; + @Inject LSPScoringModuleDefaultImpl( Scenario scenario ) { + this.scenario = scenario; + } + +// LSPScoringModuleImpl(LSPs lsps) { +// this.lsps = lsps; +// } + + @Override + public void notifyScoring(ScoringEvent event) { + scoreLSPs(event); + } + + @Override + public void scoreLSPs(ScoringEvent arg0) { + LSPs lsps = LSPUtils.getLSPs( scenario ); + for(LSP lsp : lsps.getLSPs().values()) { + lsp.scoreSelectedPlan(); + } + } +} diff --git a/src/main/java/lsp/scoring/LSPScoringUtils.java b/src/main/java/lsp/scoring/LSPScoringUtils.java deleted file mode 100644 index 0715b6b3..00000000 --- a/src/main/java/lsp/scoring/LSPScoringUtils.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package lsp.scoring; - -import lsp.LSPs; - - -/** - * @deprecated -- can go. Left here so that outside users of this code get some meaningful information. kai, may'22 - */ -public class LSPScoringUtils{ -// public static LSPScoringModuleImpl createDefaultLSPScoringModule(LSPs lsps) { -// return new LSPScoringModuleImpl(lsps); -// } - // use bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); -} diff --git a/src/main/java/lsp/shipment/LSPShipment.java b/src/main/java/lsp/shipment/LSPShipment.java index 34d99fe9..b5588127 100644 --- a/src/main/java/lsp/shipment/LSPShipment.java +++ b/src/main/java/lsp/shipment/LSPShipment.java @@ -20,20 +20,24 @@ package lsp.shipment; -import java.util.Collection; - import lsp.HasEventHandlers; -import lsp.HasInfos; +import lsp.LogisticsSolution; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Identifiable; import org.matsim.api.core.v01.network.Link; import org.matsim.contrib.freight.carrier.TimeWindow; -import org.matsim.core.events.handler.EventHandler; +import org.matsim.utils.objectattributes.attributable.Attributable; -import lsp.LogisticsSolution; -import lsp.LSPInfo; +import java.util.Collection; -public interface LSPShipment extends Identifiable, HasInfos, HasEventHandlers { +/** + * This is, for example, a shipment that DHL moves from A to B. It may use multiple carriers to achieve that. + * + * Questions/comments:
    + *
  • Within more modern MATSim, we would probably prefer to have from and to in coordinates, not link IDs.
  • + *
+ */ +public interface LSPShipment extends Identifiable, HasEventHandlers, Attributable{ Id getFrom(); // same as in CarrierShipment diff --git a/src/main/java/lsp/shipment/LSPShipmentImpl.java b/src/main/java/lsp/shipment/LSPShipmentImpl.java index 96967f77..620fc0da 100644 --- a/src/main/java/lsp/shipment/LSPShipmentImpl.java +++ b/src/main/java/lsp/shipment/LSPShipmentImpl.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.List; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.network.Link; @@ -29,9 +30,10 @@ import org.matsim.core.events.handler.EventHandler; import lsp.LogisticsSolution; -import lsp.LSPInfo; +import org.matsim.utils.objectattributes.attributable.Attributes; class LSPShipmentImpl implements LSPShipment { + private final Attributes attributes = new Attributes(); private final Id id; private final Id fromLinkId; @@ -43,9 +45,8 @@ class LSPShipmentImpl implements LSPShipment { private final double pickupServiceTime; private final ShipmentPlan schedule; private final ShipmentPlan log; - private final ArrayList eventHandlers; - private final ArrayList requirements; - private final ArrayList infos; + private final Collection eventHandlers; + private final List requirements; private Id solutionId; LSPShipmentImpl( ShipmentUtils.LSPShipmentBuilder builder ){ @@ -62,8 +63,6 @@ class LSPShipmentImpl implements LSPShipment { this.eventHandlers = new ArrayList<>(); this.requirements = new ArrayList<>(); this.requirements.addAll( builder.requirements ); - this.infos = new ArrayList<>(); - this.infos.addAll( builder.infos ); } @@ -123,11 +122,6 @@ public Collection getRequirements() { return requirements; } - @Override - public Collection getInfos() { - return infos; - } - @Override public Id getSolutionId() { return solutionId; } @@ -135,5 +129,8 @@ public Collection getInfos() { @Override public double getPickupServiceTime(){ return pickupServiceTime; } - + + @Override public Attributes getAttributes(){ + return attributes; + } } diff --git a/src/main/java/lsp/shipment/LSPShipments.java b/src/main/java/lsp/shipment/LSPShipments.java deleted file mode 100644 index a790118a..00000000 --- a/src/main/java/lsp/shipment/LSPShipments.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package lsp.shipment; - -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; -import org.matsim.api.core.v01.Id; - - -//TODO: Unused? -> delete? //set to package-private in first step KMT, Jun'20 -/*package-private*/ class LSPShipments { - - private Map, LSPShipment> lspShipments; - - public LSPShipments(Collection lspShipments) { - makeMap(lspShipments); - } - - private void makeMap(Collection lspShipments) { - for (LSPShipment l : lspShipments) { - this.lspShipments.put(l.getId(), l); - } - } - - public LSPShipments() { - this.lspShipments = new HashMap<>(); - } - - public Map, LSPShipment> getShipments() { - return lspShipments; - } - - public void addShipment(LSPShipment lspShipment) { - if(!lspShipments.containsKey(lspShipment.getId())){ - lspShipments.put(lspShipment.getId(), lspShipment); - } - else { - - } - } -} diff --git a/src/main/java/lsp/shipment/LoggedShipmentHandle.java b/src/main/java/lsp/shipment/LoggedShipmentHandle.java index 3359d49d..e5165f31 100644 --- a/src/main/java/lsp/shipment/LoggedShipmentHandle.java +++ b/src/main/java/lsp/shipment/LoggedShipmentHandle.java @@ -28,7 +28,7 @@ -/*package*/ class LoggedShipmentHandle implements ShipmentPlanElement { +/*package*/ class LoggedShipmentHandle implements ShipmentActivity { private final double startTime; private final double endTime; @@ -70,7 +70,7 @@ public double getEndTime() { return endTime; } - public Id getLinkId() { + @Override public Id getLinkId() { return linkId; } diff --git a/src/main/java/lsp/shipment/LoggedShipmentLoad.java b/src/main/java/lsp/shipment/LoggedShipmentLoad.java index 6a9050dd..24c86594 100644 --- a/src/main/java/lsp/shipment/LoggedShipmentLoad.java +++ b/src/main/java/lsp/shipment/LoggedShipmentLoad.java @@ -27,7 +27,7 @@ import lsp.LogisticsSolutionElement; import lsp.LSPResource; -/*package-private*/ class LoggedShipmentLoad implements ShipmentPlanElement { +/*package-private*/ class LoggedShipmentLoad implements ShipmentActivity { private final double startTime; private final double endTime; @@ -68,4 +68,7 @@ public Id getResourceId() { return resourceId; } + @Override public Id getLinkId(){ + throw new RuntimeException( "not implemented" ); + } } diff --git a/src/main/java/lsp/shipment/LoggedShipmentTransport.java b/src/main/java/lsp/shipment/LoggedShipmentTransport.java index 95ae0d94..14915639 100644 --- a/src/main/java/lsp/shipment/LoggedShipmentTransport.java +++ b/src/main/java/lsp/shipment/LoggedShipmentTransport.java @@ -25,9 +25,10 @@ import lsp.LogisticsSolutionElement; import lsp.LSPResource; +import org.matsim.contrib.freight.carrier.Carrier; +import org.matsim.contrib.freight.carrier.CarrierService; -public final class LoggedShipmentTransport implements ShipmentPlanElement { - // yyyy cannot make package-private since used outside package. kai, jun'20 +final class LoggedShipmentTransport implements ShipmentLeg { private final double startTime; private double endTime; @@ -79,11 +80,17 @@ public void setEndTime(double endTime){ public Id getFromLinkId() { return fromLinkId; } + @Override public CarrierService getCarrierService(){ + throw new RuntimeException( "not implemented" ); + } public Id getToLinkId() { return toLinkId; } + @Override public Id getCarrierId(){ + throw new RuntimeException( "not implemented" ); + } public void setToLinkId(Id toLinkId) { diff --git a/src/main/java/lsp/shipment/LoggedShipmentUnload.java b/src/main/java/lsp/shipment/LoggedShipmentUnload.java index 1768e423..aabd4b73 100644 --- a/src/main/java/lsp/shipment/LoggedShipmentUnload.java +++ b/src/main/java/lsp/shipment/LoggedShipmentUnload.java @@ -27,7 +27,7 @@ import lsp.LogisticsSolutionElement; import lsp.LSPResource; -class LoggedShipmentUnload implements ShipmentPlanElement { +class LoggedShipmentUnload implements ShipmentActivity { private final double startTime; private final double endTime; @@ -68,4 +68,7 @@ public double getEndTime() { return endTime; } + @Override public Id getLinkId(){ + throw new RuntimeException( "not implemented" ); + } } diff --git a/src/main/java/lsp/shipment/ScheduledShipmentHandle.java b/src/main/java/lsp/shipment/ScheduledShipmentHandle.java index 5f574672..c3b78c36 100644 --- a/src/main/java/lsp/shipment/ScheduledShipmentHandle.java +++ b/src/main/java/lsp/shipment/ScheduledShipmentHandle.java @@ -26,7 +26,7 @@ import lsp.LogisticsSolutionElement; import lsp.LSPResource; -class ScheduledShipmentHandle implements ShipmentPlanElement { +class ScheduledShipmentHandle implements ShipmentActivity { private final double startTime; private final double endTime; diff --git a/src/main/java/lsp/shipment/ScheduledShipmentLoad.java b/src/main/java/lsp/shipment/ScheduledShipmentLoad.java index 47d0ae13..bdc17be1 100644 --- a/src/main/java/lsp/shipment/ScheduledShipmentLoad.java +++ b/src/main/java/lsp/shipment/ScheduledShipmentLoad.java @@ -30,7 +30,7 @@ -class ScheduledShipmentLoad implements ShipmentPlanElement { +class ScheduledShipmentLoad implements ShipmentActivity { private final double startTime; private final double endTime; diff --git a/src/main/java/lsp/shipment/ScheduledShipmentTransport.java b/src/main/java/lsp/shipment/ScheduledShipmentTransport.java index 0ad7fa29..50c5dd81 100644 --- a/src/main/java/lsp/shipment/ScheduledShipmentTransport.java +++ b/src/main/java/lsp/shipment/ScheduledShipmentTransport.java @@ -28,8 +28,7 @@ import lsp.LogisticsSolutionElement; import lsp.LSPResource; -public final class ScheduledShipmentTransport implements ShipmentPlanElement { - // yyyy cannot make package-private since used in one instanceof outside package. kai, jun'20 +final class ScheduledShipmentTransport implements ShipmentLeg { private final double startTime; private final double endTime; @@ -80,21 +79,27 @@ public Id getResourceId() { } - public Id getToLinkId() { + @Override public Id getToLinkId() { return toLinkId; } - public Id getCarrierId() { + @Override public Id getCarrierId() { return carrierId; } - public Id getFromLinkId() { + @Override public Id getFromLinkId() { return fromLinkId; } - public CarrierService getCarrierService() { + @Override public CarrierService getCarrierService() { return carrierService; } - + @Override public void setEndTime( double time ){ + throw new RuntimeException( "not implemented" ); + } + @Override public void setToLinkId( Id endLinkId ){ + throw new RuntimeException( "not implemented" ); + } + } diff --git a/src/main/java/lsp/shipment/ScheduledShipmentUnload.java b/src/main/java/lsp/shipment/ScheduledShipmentUnload.java index 8f750e2e..60ed5a4b 100644 --- a/src/main/java/lsp/shipment/ScheduledShipmentUnload.java +++ b/src/main/java/lsp/shipment/ScheduledShipmentUnload.java @@ -28,7 +28,7 @@ import lsp.LogisticsSolutionElement; import lsp.LSPResource; -class ScheduledShipmentUnload implements ShipmentPlanElement { +class ScheduledShipmentUnload implements ShipmentActivity { private final double startTime; private final double endTime; diff --git a/src/main/java/lsp/shipment/ShipmentActivity.java b/src/main/java/lsp/shipment/ShipmentActivity.java new file mode 100644 index 00000000..f0ac58e1 --- /dev/null +++ b/src/main/java/lsp/shipment/ShipmentActivity.java @@ -0,0 +1,8 @@ +package lsp.shipment; + +import org.matsim.api.core.v01.Id; +import org.matsim.api.core.v01.network.Link; + +public interface ShipmentActivity extends ShipmentPlanElement { + Id getLinkId(); +} diff --git a/src/main/java/lsp/shipment/ShipmentComparator.java b/src/main/java/lsp/shipment/ShipmentComparator.java deleted file mode 100644 index ae6d647a..00000000 --- a/src/main/java/lsp/shipment/ShipmentComparator.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * *********************************************************************** * - * * project: org.matsim.* - * * *********************************************************************** * - * * * - * * copyright : (C) 2022 by the members listed in the COPYING, * - * * LICENSE and WARRANTY file. * - * * email : info at matsim dot org * - * * * - * * *********************************************************************** * - * * * - * * This program is free software; you can redistribute it and/or modify * - * * it under the terms of the GNU General Public License as published by * - * * the Free Software Foundation; either version 2 of the License, or * - * * (at your option) any later version. * - * * See also COPYING, LICENSE and WARRANTY file * - * * * - * * *********************************************************************** - */ - -package lsp.shipment; - -import java.util.Comparator; - -import lsp.ShipmentWithTime; - -public final class ShipmentComparator implements Comparator{ - - @Override - public int compare( ShipmentWithTime o1, ShipmentWithTime o2 ) { - return Double.compare(o1.getTime(), o2.getTime()); - } -} diff --git a/src/main/java/lsp/shipment/ShipmentLeg.java b/src/main/java/lsp/shipment/ShipmentLeg.java new file mode 100644 index 00000000..b2cbdaa6 --- /dev/null +++ b/src/main/java/lsp/shipment/ShipmentLeg.java @@ -0,0 +1,15 @@ +package lsp.shipment; + +import org.matsim.api.core.v01.Id; +import org.matsim.api.core.v01.network.Link; +import org.matsim.contrib.freight.carrier.Carrier; +import org.matsim.contrib.freight.carrier.CarrierService; + +public interface ShipmentLeg extends ShipmentPlanElement { + Id getToLinkId(); + Id getCarrierId(); + Id getFromLinkId(); + CarrierService getCarrierService(); + void setEndTime( double time ); + void setToLinkId( Id endLinkId ); +} diff --git a/src/main/java/lsp/shipment/ShipmentPlan.java b/src/main/java/lsp/shipment/ShipmentPlan.java index 47c5a330..3bc2b398 100644 --- a/src/main/java/lsp/shipment/ShipmentPlan.java +++ b/src/main/java/lsp/shipment/ShipmentPlan.java @@ -22,11 +22,12 @@ import java.util.Map; +import lsp.HasBackpointer; import org.matsim.api.core.v01.Id; -public interface ShipmentPlan { +public interface ShipmentPlan extends HasBackpointer { - LSPShipment getShipment(); + LSPShipment getEmbeddingContainer(); Map, ShipmentPlanElement> getPlanElements(); diff --git a/src/main/java/lsp/shipment/ShipmentPlanElement.java b/src/main/java/lsp/shipment/ShipmentPlanElement.java index b4f600f1..110be25b 100644 --- a/src/main/java/lsp/shipment/ShipmentPlanElement.java +++ b/src/main/java/lsp/shipment/ShipmentPlanElement.java @@ -30,11 +30,13 @@ public interface ShipmentPlanElement { LogisticsSolutionElement getSolutionElement(); Id getResourceId(); - + + // yyyy "type" feels like this makes it a tagged class. These should be avoided (Effective Java 2018, Item 23). It is, however, probably not + // used as a type, but rather as a description. Rename? String getElementType(); double getStartTime(); double getEndTime(); - + } diff --git a/src/main/java/lsp/shipment/ShipmentPlanElementComparator.java b/src/main/java/lsp/shipment/ShipmentPlanElementComparator.java index 98699b96..91d4756b 100644 --- a/src/main/java/lsp/shipment/ShipmentPlanElementComparator.java +++ b/src/main/java/lsp/shipment/ShipmentPlanElementComparator.java @@ -22,7 +22,9 @@ import java.util.Comparator; -public final class ShipmentPlanElementComparator implements Comparator{ +final class ShipmentPlanElementComparator implements Comparator{ + + ShipmentPlanElementComparator(){} public int compare(ShipmentPlanElement o1, ShipmentPlanElement o2) { if(o1.getStartTime() > o2.getStartTime()){ diff --git a/src/main/java/lsp/shipment/ShipmentPlanImpl.java b/src/main/java/lsp/shipment/ShipmentPlanImpl.java index fb4bcc8f..49f45197 100644 --- a/src/main/java/lsp/shipment/ShipmentPlanImpl.java +++ b/src/main/java/lsp/shipment/ShipmentPlanImpl.java @@ -59,7 +59,7 @@ public int compare(ShipmentPlanElement o1, ShipmentPlanElement o2) { } @Override - public LSPShipment getShipment() { + public LSPShipment getEmbeddingContainer() { return shipment; } diff --git a/src/main/java/lsp/shipment/ShipmentUtils.java b/src/main/java/lsp/shipment/ShipmentUtils.java index 4e4ffa90..5c36655f 100644 --- a/src/main/java/lsp/shipment/ShipmentUtils.java +++ b/src/main/java/lsp/shipment/ShipmentUtils.java @@ -21,7 +21,6 @@ package lsp.shipment; //import demand.UtilityFunction; -import lsp.LSPInfo; import lsp.LogisticsSolutionElement; import lsp.LSPResource; import org.matsim.api.core.v01.Id; @@ -31,11 +30,13 @@ import org.matsim.contrib.freight.carrier.TimeWindow; import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; -public class ShipmentUtils{ +public final class ShipmentUtils{ private ShipmentUtils(){} // do not instantiate - public static class LoggedShipmentHandleBuilder { + public static final class LoggedShipmentHandleBuilder { private double startTime; private double endTime; private LogisticsSolutionElement element; @@ -96,7 +97,7 @@ public Id getLinkId() { } } - public static class LoggedShipmentLoadBuilder { + public static final class LoggedShipmentLoadBuilder { private double startTime; private double endTime; private LogisticsSolutionElement element; @@ -166,7 +167,7 @@ public Id getLinkId() { } } - public static class LoggedShipmentTransportBuilder { + public static final class LoggedShipmentTransportBuilder { private double startTime; private LogisticsSolutionElement element; private Id resourceId; @@ -235,7 +236,7 @@ public Id getCarrierId() { } } - public static class ScheduledShipmentUnloadBuilder{ + public static final class ScheduledShipmentUnloadBuilder{ double startTime; double endTime; LogisticsSolutionElement element; @@ -284,7 +285,7 @@ public ScheduledShipmentUnload build(){ } } - public static class ScheduledShipmentTransportBuilder{ + public static final class ScheduledShipmentTransportBuilder{ double startTime; double endTime; LogisticsSolutionElement element; @@ -338,7 +339,7 @@ public ScheduledShipmentTransport build(){ } } - public static class ScheduledShipmentLoadBuilder{ + public static final class ScheduledShipmentLoadBuilder{ double startTime; double endTime; LogisticsSolutionElement element; @@ -387,7 +388,7 @@ public ScheduledShipmentLoad build(){ } } - public static class ScheduledShipmentHandleBuilder{ + public static final class ScheduledShipmentHandleBuilder{ double startTime; double endTime; LogisticsSolutionElement element; @@ -424,7 +425,7 @@ public ScheduledShipmentHandle build(){ } } - public static class LoggedShipmentUnloadBuilder{ + public static final class LoggedShipmentUnloadBuilder{ double startTime; double endTime; LogisticsSolutionElement element; @@ -468,7 +469,7 @@ public LoggedShipmentUnload build(){ } } - public static class LSPShipmentBuilder{ + public static final class LSPShipmentBuilder{ final Id id; Id fromLinkId; Id toLinkId; @@ -477,8 +478,7 @@ public static class LSPShipmentBuilder{ int capacityDemand; double deliveryServiceTime; double pickupServiceTime; - final ArrayList requirements; - final ArrayList infos; + final List requirements; public static LSPShipmentBuilder newInstance( Id id ){ return new LSPShipmentBuilder(id); @@ -486,7 +486,6 @@ public static LSPShipmentBuilder newInstance( Id id ){ private LSPShipmentBuilder( Id id ){ this.requirements = new ArrayList<>(); - this.infos = new ArrayList<>(); this.id = id; } @@ -522,12 +521,11 @@ public void addRequirement(Requirement requirement ) { requirements.add(requirement); } - public void addInfo(LSPInfo info ) { - infos.add(info); - } - public LSPShipment build(){ return new LSPShipmentImpl(this); } } + public static Comparator createShipmentPlanElementComparator(){ + return new ShipmentPlanElementComparator(); + } } diff --git a/src/main/java/lsp/usecase/CollectionCarrierAdapter.java b/src/main/java/lsp/usecase/CollectionCarrierResource.java similarity index 85% rename from src/main/java/lsp/usecase/CollectionCarrierAdapter.java rename to src/main/java/lsp/usecase/CollectionCarrierResource.java index dd8586cf..15e3edba 100644 --- a/src/main/java/lsp/usecase/CollectionCarrierAdapter.java +++ b/src/main/java/lsp/usecase/CollectionCarrierResource.java @@ -20,42 +20,41 @@ package lsp.usecase; -import java.util.ArrayList; -import java.util.Collection; - +import lsp.LSPCarrierResource; +import lsp.LSPResource; +import lsp.LogisticsSolutionElement; +import lsp.controler.LSPSimulationTracker; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; import org.matsim.contrib.freight.carrier.Carrier; import org.matsim.contrib.freight.carrier.CarrierVehicle; -import org.matsim.core.api.experimental.events.EventsManager; import org.matsim.core.events.handler.EventHandler; +import org.matsim.utils.objectattributes.attributable.Attributes; -import lsp.LSPInfo; -import lsp.LogisticsSolutionElement; -import lsp.LSPCarrierResource; -import lsp.LSPResource; -import lsp.controler.LSPSimulationTracker; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.Map; -/*package-private*/ class CollectionCarrierAdapter implements LSPCarrierResource { +/*package-private*/ class CollectionCarrierResource implements LSPCarrierResource { + private final Attributes attributes = new Attributes(); private final Idid; private final Carrier carrier; - private final ArrayList clientElements; + private final List clientElements; private final CollectionCarrierScheduler collectionScheduler; private final Network network; private final Collection eventHandlers; - private final Collection infos; private final Collection trackers; - CollectionCarrierAdapter(UsecaseUtils.CollectionCarrierAdapterBuilder builder){ + CollectionCarrierResource( UsecaseUtils.CollectionCarrierAdapterBuilder builder ){ this.id = builder.id; this.collectionScheduler = builder.collectionScheduler; this.clientElements = builder.clientElements; this.carrier = builder.carrier; this.network = builder.network; this.eventHandlers = new ArrayList<>(); - this.infos = new ArrayList<>(); this.trackers = new ArrayList<>(); } @@ -121,17 +120,14 @@ public Network getNetwork(){ return eventHandlers; } - @Override - public Collection getInfos() { - return infos; - } - - @Override public void addSimulationTracker( LSPSimulationTracker tracker ) { this.trackers.add(tracker); this.eventHandlers.addAll(tracker.getEventHandlers()); - this.infos.addAll(tracker.getInfos()); +// this.infos.addAll(tracker.getAttributes() ); + for( Map.Entry entry : tracker.getAttributes().getAsMap().entrySet() ){ + this.attributes.putAttribute( entry.getKey(), entry.getValue() ); + } } @@ -139,6 +135,9 @@ public void addSimulationTracker( LSPSimulationTracker tracker ) { public Collection getSimulationTrackers() { return trackers; } + @Override public Attributes getAttributes(){ + return attributes; + } // @Override // public void setEventsManager(EventsManager eventsManager) { diff --git a/src/main/java/lsp/usecase/CollectionCarrierScheduler.java b/src/main/java/lsp/usecase/CollectionCarrierScheduler.java index 226a4a54..6d24f5cb 100644 --- a/src/main/java/lsp/usecase/CollectionCarrierScheduler.java +++ b/src/main/java/lsp/usecase/CollectionCarrierScheduler.java @@ -49,7 +49,7 @@ import lsp.LSPResourceScheduler; /** - * Schedules the {@link CollectionCarrierAdapter}. + * Schedules the {@link CollectionCarrierResource}. * * Converts the {@link LSPShipment}s into {@link CarrierService}s that are needed for the {@link Carrier} * from the freight contrib of MATSim and then routes the vehicles of this @@ -69,7 +69,7 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ } private Carrier carrier; - private CollectionCarrierAdapter adapter; + private CollectionCarrierResource adapter; private ArrayListpairs; @@ -80,8 +80,8 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ @Override public void initializeValues( LSPResource resource ){ this.pairs = new ArrayList<>(); - if(resource.getClass() == CollectionCarrierAdapter.class){ - this.adapter = (CollectionCarrierAdapter) resource; + if(resource.getClass() == CollectionCarrierResource.class){ + this.adapter = (CollectionCarrierResource) resource; this.carrier = adapter.getCarrier(); this.carrier.getServices().clear(); this.carrier.getShipments().clear(); diff --git a/src/main/java/lsp/usecase/CollectionServiceEndEventHandler.java b/src/main/java/lsp/usecase/CollectionServiceEndEventHandler.java index 64d5df0f..ce9e210d 100644 --- a/src/main/java/lsp/usecase/CollectionServiceEndEventHandler.java +++ b/src/main/java/lsp/usecase/CollectionServiceEndEventHandler.java @@ -80,7 +80,7 @@ private void logTransport(LSPServiceEndEvent event){ builder.setResourceId(resource.getId()); builder.setFromLinkId(event.getService().getLocationLinkId()); builder.setCarrierId(event.getCarrierId()); - LoggedShipmentTransport transport = builder.build(); + ShipmentLeg transport = builder.build(); String idString = transport.getResourceId() + "" + transport.getSolutionElement().getId() + "" + transport.getElementType(); Id transportId = Id.create(idString, ShipmentPlanElement.class); lspShipment.getLog().addPlanElement(transportId, transport); diff --git a/src/main/java/lsp/usecase/CollectionTourEndEventHandler.java b/src/main/java/lsp/usecase/CollectionTourEndEventHandler.java index 63036bba..3908f645 100644 --- a/src/main/java/lsp/usecase/CollectionTourEndEventHandler.java +++ b/src/main/java/lsp/usecase/CollectionTourEndEventHandler.java @@ -85,8 +85,8 @@ private void logTransport(LSPTourEndEvent event, Tour tour){ String idString = resource.getId() + "" + solutionElement.getId() + "" + "TRANSPORT"; Id id = Id.create(idString, ShipmentPlanElement.class); ShipmentPlanElement abstractPlanElement = lspShipment.getLog().getPlanElements().get(id); - if(abstractPlanElement instanceof LoggedShipmentTransport) { - LoggedShipmentTransport transport = (LoggedShipmentTransport) abstractPlanElement; + if(abstractPlanElement instanceof ShipmentLeg) { + ShipmentLeg transport = (ShipmentLeg) abstractPlanElement; //Auskommentiert, im Rahmen des reducing-public-footprint-Prozesses. Kein Test reagiert drauf. Was "sollte" hier geschehen? KMT(&kai) Jun'20 // transport.setEndTime(event.getTime()); // transport.setToLinkId(tour.getEndLinkId()); diff --git a/src/main/java/lsp/usecase/DistributionCarrierAdapter.java b/src/main/java/lsp/usecase/DistributionCarrierResource.java similarity index 87% rename from src/main/java/lsp/usecase/DistributionCarrierAdapter.java rename to src/main/java/lsp/usecase/DistributionCarrierResource.java index 500b6639..91c4a647 100644 --- a/src/main/java/lsp/usecase/DistributionCarrierAdapter.java +++ b/src/main/java/lsp/usecase/DistributionCarrierResource.java @@ -22,33 +22,33 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Map; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; import org.matsim.contrib.freight.carrier.Carrier; import org.matsim.contrib.freight.carrier.CarrierVehicle; -import org.matsim.core.api.experimental.events.EventsManager; import org.matsim.core.events.handler.EventHandler; -import lsp.LSPInfo; import lsp.LogisticsSolutionElement; import lsp.LSPCarrierResource; import lsp.LSPResource; import lsp.controler.LSPSimulationTracker; +import org.matsim.utils.objectattributes.attributable.Attributes; -/*package-private*/ class DistributionCarrierAdapter implements LSPCarrierResource { +/*package-private*/ class DistributionCarrierResource implements LSPCarrierResource { + private final Attributes attributes = new Attributes(); private final Idid; private final Carrier carrier; private final ArrayList clientElements; private final DistributionCarrierScheduler distributionHandler; private final Network network; private final Collection eventHandlers; - private final Collection infos; private final Collection trackers; - DistributionCarrierAdapter(UsecaseUtils.DistributionCarrierAdapterBuilder builder){ + DistributionCarrierResource( UsecaseUtils.DistributionCarrierAdapterBuilder builder ){ this.id = builder.id; Id locationLinkId = builder.locationLinkId; this.distributionHandler = builder.distributionHandler; @@ -56,7 +56,6 @@ this.carrier = builder.carrier; this.network = builder.network; this.eventHandlers = new ArrayList<>(); - this.infos = new ArrayList<>(); this.trackers = new ArrayList<>(); } @@ -121,22 +120,23 @@ public Carrier getCarrier(){ return eventHandlers; } - @Override - public Collection getInfos() { - return infos; - } - @Override public void addSimulationTracker( LSPSimulationTracker tracker ) { this.trackers.add(tracker); this.eventHandlers.addAll(tracker.getEventHandlers()); - this.infos.addAll(tracker.getInfos()); +// this.infos.addAll(tracker.getAttributes() ); + for( Map.Entry entry : tracker.getAttributes().getAsMap().entrySet() ){ + this.attributes.putAttribute( entry.getKey(), entry.getValue()); + } } @Override public Collection getSimulationTrackers() { return trackers; } + @Override public Attributes getAttributes(){ + return attributes; + } // @Override // public void setEventsManager(EventsManager eventsManager) { diff --git a/src/main/java/lsp/usecase/DistributionCarrierScheduler.java b/src/main/java/lsp/usecase/DistributionCarrierScheduler.java index 13bdb2c8..d0e3d0d3 100644 --- a/src/main/java/lsp/usecase/DistributionCarrierScheduler.java +++ b/src/main/java/lsp/usecase/DistributionCarrierScheduler.java @@ -73,7 +73,7 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ private Carrier carrier; - private DistributionCarrierAdapter adapter; + private DistributionCarrierResource adapter; private ArrayListpairs; @@ -84,8 +84,8 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ @Override protected void initializeValues( LSPResource resource ) { this.pairs = new ArrayList<>(); - if(resource.getClass() == DistributionCarrierAdapter.class){ - this.adapter = (DistributionCarrierAdapter) resource; + if(resource.getClass() == DistributionCarrierResource.class){ + this.adapter = (DistributionCarrierResource) resource; this.carrier = adapter.getCarrier(); this.carrier.getServices().clear(); this.carrier.getShipments().clear(); diff --git a/src/main/java/lsp/usecase/DistributionServiceStartEventHandler.java b/src/main/java/lsp/usecase/DistributionServiceStartEventHandler.java index 328d876d..2b018c9a 100644 --- a/src/main/java/lsp/usecase/DistributionServiceStartEventHandler.java +++ b/src/main/java/lsp/usecase/DistributionServiceStartEventHandler.java @@ -61,8 +61,8 @@ private void logTransport(LSPServiceStartEvent event) { String idString = resource.getId() + "" + solutionElement.getId() + "" + "TRANSPORT"; Id id = Id.create(idString, ShipmentPlanElement.class); ShipmentPlanElement abstractPlanElement = lspShipment.getLog().getPlanElements().get(id); - if(abstractPlanElement instanceof LoggedShipmentTransport) { - LoggedShipmentTransport transport = (LoggedShipmentTransport) abstractPlanElement; + if(abstractPlanElement instanceof ShipmentLeg) { + ShipmentLeg transport = (ShipmentLeg) abstractPlanElement; transport.setEndTime(event.getTime()); } } diff --git a/src/main/java/lsp/usecase/MainRunCarrierAdapter.java b/src/main/java/lsp/usecase/MainRunCarrierResource.java similarity index 86% rename from src/main/java/lsp/usecase/MainRunCarrierAdapter.java rename to src/main/java/lsp/usecase/MainRunCarrierResource.java index 40a5f554..46710752 100644 --- a/src/main/java/lsp/usecase/MainRunCarrierAdapter.java +++ b/src/main/java/lsp/usecase/MainRunCarrierResource.java @@ -22,21 +22,22 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Map; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; import org.matsim.contrib.freight.carrier.Carrier; -import org.matsim.core.api.experimental.events.EventsManager; import org.matsim.core.events.handler.EventHandler; -import lsp.LSPInfo; import lsp.LogisticsSolutionElement; import lsp.LSPCarrierResource; import lsp.LSPResource; import lsp.controler.LSPSimulationTracker; +import org.matsim.utils.objectattributes.attributable.Attributes; -/*package-private*/ class MainRunCarrierAdapter implements LSPCarrierResource { +/*package-private*/ class MainRunCarrierResource implements LSPCarrierResource { + private final Attributes attributes = new Attributes(); private final Idid; private final Carrier carrier; @@ -47,10 +48,9 @@ private final Network network; private final Collection eventHandlers; private final Collection trackers; - private final Collection infos; - MainRunCarrierAdapter(UsecaseUtils.MainRunCarrierAdapterBuilder builder){ + MainRunCarrierResource( UsecaseUtils.MainRunCarrierAdapterBuilder builder ){ this.id = builder.getId(); this.carrier = builder.getCarrier(); this.fromLinkId = builder.getFromLinkId(); @@ -59,7 +59,6 @@ this.mainRunScheduler = builder.getMainRunScheduler(); this.network = builder.getNetwork(); this.eventHandlers = new ArrayList<>(); - this.infos = new ArrayList<>(); this.trackers = new ArrayList<>(); } @@ -106,22 +105,23 @@ public Network getNetwork(){ return eventHandlers; } - @Override - public Collection getInfos() { - return infos; - } - @Override public void addSimulationTracker( LSPSimulationTracker tracker ) { this.trackers.add(tracker); this.eventHandlers.addAll(tracker.getEventHandlers()); - this.infos.addAll(tracker.getInfos()); +// this.infos.addAll(tracker.getAttributes() ); + for( Map.Entry entry : tracker.getAttributes().getAsMap().entrySet() ) { + this.attributes.putAttribute( entry.getKey(), entry.getValue()); + } } @Override public Collection getSimulationTrackers() { return trackers; } + @Override public Attributes getAttributes(){ + return attributes; + } // @Override // public void setEventsManager(EventsManager eventsManager) { diff --git a/src/main/java/lsp/usecase/MainRunCarrierScheduler.java b/src/main/java/lsp/usecase/MainRunCarrierScheduler.java index ff215219..75fb2670 100644 --- a/src/main/java/lsp/usecase/MainRunCarrierScheduler.java +++ b/src/main/java/lsp/usecase/MainRunCarrierScheduler.java @@ -22,6 +22,8 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.Comparator; +import java.util.List; import lsp.shipment.*; import org.matsim.api.core.v01.Id; @@ -72,7 +74,7 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ } private Carrier carrier; - private MainRunCarrierAdapter adapter; + private MainRunCarrierResource adapter; private ArrayListpairs; @@ -82,8 +84,8 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ @Override protected void initializeValues( LSPResource resource ) { this.pairs = new ArrayList<>(); - if(resource.getClass() == MainRunCarrierAdapter.class){ - this.adapter = (MainRunCarrierAdapter) resource; + if(resource.getClass() == MainRunCarrierResource.class){ + this.adapter = (MainRunCarrierResource) resource; this.carrier = adapter.getCarrier(); this.carrier.getServices().clear(); this.carrier.getShipments().clear(); @@ -94,8 +96,8 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ @Override protected void scheduleResource() { int load = 0; - ArrayList copyOfAssignedShipments = new ArrayList<>(shipments); - copyOfAssignedShipments.sort(new ShipmentComparator()); + List copyOfAssignedShipments = new ArrayList<>(shipments); + copyOfAssignedShipments.sort( Comparator.comparingDouble( ShipmentWithTime::getTime ) ); ArrayList shipmentsInCurrentTour = new ArrayList<>(); ArrayList scheduledTours = new ArrayList<>(); @@ -126,7 +128,7 @@ public LSPCarrierPair( ShipmentWithTime tuple, CarrierService service ){ - private CarrierPlan createPlan(Carrier carrier, ArrayList tuples ){ + private CarrierPlan createPlan(Carrier carrier, List tuples ){ NetworkBasedTransportCosts.Builder tpcostsBuilder = NetworkBasedTransportCosts.Builder.newInstance(adapter.getNetwork(), adapter.getCarrier().getCarrierCapabilities().getVehicleTypes()); NetworkBasedTransportCosts netbasedTransportcosts = tpcostsBuilder.build(); diff --git a/src/main/java/lsp/usecase/MainRunTourEndEventHandler.java b/src/main/java/lsp/usecase/MainRunTourEndEventHandler.java index eeed1e9e..3d3defd1 100644 --- a/src/main/java/lsp/usecase/MainRunTourEndEventHandler.java +++ b/src/main/java/lsp/usecase/MainRunTourEndEventHandler.java @@ -86,8 +86,8 @@ private void logTransport(LSPTourEndEvent event){ String idString = resource.getId() + "" + solutionElement.getId() + "" + "TRANSPORT"; Id id = Id.create(idString, ShipmentPlanElement.class); ShipmentPlanElement abstractPlanElement = lspShipment.getLog().getPlanElements().get(id); - if(abstractPlanElement instanceof LoggedShipmentTransport) { - LoggedShipmentTransport transport = (LoggedShipmentTransport) abstractPlanElement; + if(abstractPlanElement instanceof ShipmentLeg) { + ShipmentLeg transport = (ShipmentLeg) abstractPlanElement; transport.setEndTime(event.getTime()- getTotalUnloadingTime(event.getTour())); transport.setToLinkId(event.getTour().getEndLinkId()); } diff --git a/src/main/java/lsp/usecase/MainRunTourStartEventHandler.java b/src/main/java/lsp/usecase/MainRunTourStartEventHandler.java index fe50768c..12f18143 100644 --- a/src/main/java/lsp/usecase/MainRunTourStartEventHandler.java +++ b/src/main/java/lsp/usecase/MainRunTourStartEventHandler.java @@ -102,7 +102,7 @@ private void logTransport(LSPTourStartEvent event){ builder.setStartTime(event.getTime()); builder.setLogisticsSolutionElement(solutionElement); builder.setResourceId(resource.getId()); - LoggedShipmentTransport transport = builder.build(); + ShipmentLeg transport = builder.build(); String idString = transport.getResourceId() + "" + transport.getSolutionElement().getId() + "" + transport.getElementType(); Id transportId = Id.create(idString, ShipmentPlanElement.class); lspShipment.getLog().addPlanElement(transportId, transport); diff --git a/src/main/java/lsp/usecase/ReloadingPoint.java b/src/main/java/lsp/usecase/ReloadingPoint.java index ebe94c15..2b9552df 100644 --- a/src/main/java/lsp/usecase/ReloadingPoint.java +++ b/src/main/java/lsp/usecase/ReloadingPoint.java @@ -22,16 +22,17 @@ import java.util.ArrayList; import java.util.Collection; +import java.util.List; +import java.util.Map; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.network.Link; -import org.matsim.core.api.experimental.events.EventsManager; import org.matsim.core.events.handler.EventHandler; -import lsp.LSPInfo; import lsp.LogisticsSolutionElement; import lsp.LSPResource; import lsp.controler.LSPSimulationTracker; +import org.matsim.utils.objectattributes.attributable.Attributes; /** * {@link LSPResource} bei der die geplanten Tätigkeiten NICHT am Verkehr teilnehmen. @@ -45,17 +46,19 @@ * (i.e. crossdocking) of the shipment is entered. In the example, crossdocking * starts as soon as the considered LSPShipment arrives at the {@link ReloadingPoint} * and ends after a fixed and a size dependent amount of time. + *

+ *

    Discussion points: + *
  • yyyy Ich fände TransshipmentHub als Name besser. kai, may'22
*/ /*package-private*/ class ReloadingPoint implements LSPResource { + private final Attributes attributes = new Attributes(); private final Id id; private final Id locationLinkId; private final ReloadingPointScheduler reloadingScheduler; - private final ArrayList clientElements; - private final ArrayList eventHandlers; - private final Collection infos; + private final List clientElements; + private final List eventHandlers; private final Collection trackers; - private ReloadingPointTourEndEventHandler eventHandler; ReloadingPoint(UsecaseUtils.ReloadingPointBuilder builder){ this.id = builder.getId(); @@ -66,7 +69,6 @@ reloadingScheduler.setEventHandler(eventHandler); this.clientElements = builder.getClientElements(); this.eventHandlers = new ArrayList<>(); - this.infos = new ArrayList<>(); this.trackers = new ArrayList<>(); eventHandlers.add(eventHandler); } @@ -113,22 +115,23 @@ public double getCapacityNeedLinear(){ return eventHandlers; } - @Override - public Collection getInfos() { - return infos; - } - @Override public void addSimulationTracker( LSPSimulationTracker tracker ) { this.trackers.add(tracker); this.eventHandlers.addAll(tracker.getEventHandlers()); - this.infos.addAll(tracker.getInfos()); +// this.infos.addAll(tracker.getAttributes() ); + for( Map.Entry entry : tracker.getAttributes().getAsMap().entrySet() ){ + this.attributes.putAttribute( entry.getKey(), entry.getValue()); + } } @Override public Collection getSimulationTrackers() { return trackers; } + @Override public Attributes getAttributes(){ + return attributes; + } // @Override // public void setEventsManager(EventsManager eventsManager) { diff --git a/src/main/java/lsp/usecase/ReloadingPointScheduler.java b/src/main/java/lsp/usecase/ReloadingPointScheduler.java index 34d015bd..6ac3c876 100644 --- a/src/main/java/lsp/usecase/ReloadingPointScheduler.java +++ b/src/main/java/lsp/usecase/ReloadingPointScheduler.java @@ -49,9 +49,9 @@ } @Override protected void initializeValues( LSPResource resource ) { - if(resource.getClass() == ReloadingPoint.class){ +// if(resource.getClass() == ReloadingPoint.class){ this.reloadingPoint = (ReloadingPoint) resource; - } +// } } @Override protected void scheduleResource() { @@ -108,9 +108,9 @@ public double getCapacityNeedFixed() { } - public ReloadingPoint getReloadingPoint() { - return reloadingPoint; - } +// public ReloadingPoint getReloadingPoint() { +// return reloadingPoint; +// } public void setReloadingPoint(ReloadingPoint reloadingPoint) { diff --git a/src/main/java/lsp/usecase/ReloadingPointTourEndEventHandler.java b/src/main/java/lsp/usecase/ReloadingPointTourEndEventHandler.java index 2fc8a8b2..0cf7a89f 100644 --- a/src/main/java/lsp/usecase/ReloadingPointTourEndEventHandler.java +++ b/src/main/java/lsp/usecase/ReloadingPointTourEndEventHandler.java @@ -69,8 +69,8 @@ public void addShipment(LSPShipment shipment, LogisticsSolutionElement solutionE ReloadingPointEventHandlerPair pair = new ReloadingPointEventHandlerPair(shipment, solutionElement); for(ShipmentPlanElement planElement: shipment.getShipmentPlan().getPlanElements().values()){ - if(planElement instanceof ScheduledShipmentTransport){ - ScheduledShipmentTransport transport = (ScheduledShipmentTransport) planElement; + if(planElement instanceof ShipmentLeg){ + ShipmentLeg transport = (ShipmentLeg) planElement; if(transport.getSolutionElement().getNextElement() == solutionElement){ servicesWaitedFor.put(transport.getCarrierService(), pair); } diff --git a/src/main/java/lsp/usecase/DeterministicShipmentAssigner.java b/src/main/java/lsp/usecase/SingleSolutionShipmentAssigner.java similarity index 95% rename from src/main/java/lsp/usecase/DeterministicShipmentAssigner.java rename to src/main/java/lsp/usecase/SingleSolutionShipmentAssigner.java index 47b2b146..c93cc144 100644 --- a/src/main/java/lsp/usecase/DeterministicShipmentAssigner.java +++ b/src/main/java/lsp/usecase/SingleSolutionShipmentAssigner.java @@ -34,11 +34,11 @@ * * (Falls die Voraussetzung "exakt 1 Solution pro Plan" nicht erfüllt ist, kommt eine RuntimeException) */ -class DeterministicShipmentAssigner implements ShipmentAssigner { +class SingleSolutionShipmentAssigner implements ShipmentAssigner { private LSP lsp; - DeterministicShipmentAssigner() { + SingleSolutionShipmentAssigner() { } public void setLSP(LSP lsp) { diff --git a/src/main/java/lsp/usecase/UsecaseUtils.java b/src/main/java/lsp/usecase/UsecaseUtils.java index 9e7c6b96..405d51c9 100644 --- a/src/main/java/lsp/usecase/UsecaseUtils.java +++ b/src/main/java/lsp/usecase/UsecaseUtils.java @@ -49,8 +49,8 @@ public static SimpleForwardSolutionScheduler createDefaultSimpleForwardSolutionS return new SimpleForwardSolutionScheduler(resources); } - public static DeterministicShipmentAssigner createDeterministicShipmentAssigner() { - return new DeterministicShipmentAssigner(); + public static SingleSolutionShipmentAssigner createDeterministicShipmentAssigner() { + return new SingleSolutionShipmentAssigner(); } public static class CollectionCarrierAdapterBuilder { @@ -88,8 +88,8 @@ public CollectionCarrierAdapterBuilder setCollectionScheduler(CollectionCarrierS return this; } - public CollectionCarrierAdapter build(){ - return new CollectionCarrierAdapter(this); + public CollectionCarrierResource build(){ + return new CollectionCarrierResource(this); } } @@ -130,8 +130,8 @@ public DistributionCarrierAdapterBuilder setDistributionScheduler(DistributionCa return this; } - public DistributionCarrierAdapter build(){ - return new DistributionCarrierAdapter(this); + public DistributionCarrierResource build(){ + return new DistributionCarrierResource(this); } } @@ -176,8 +176,8 @@ public MainRunCarrierAdapterBuilder setMainRunCarrierScheduler(MainRunCarrierSch return this; } - public MainRunCarrierAdapter build(){ - return new MainRunCarrierAdapter(this); + public MainRunCarrierResource build(){ + return new MainRunCarrierResource(this); } //--- Getter --- diff --git a/src/test/java/adapterTests/CollectionAdapterTest.java b/src/test/java/adapterTests/CollectionAdapterTest.java index 2e96821f..36e9315c 100644 --- a/src/test/java/adapterTests/CollectionAdapterTest.java +++ b/src/test/java/adapterTests/CollectionAdapterTest.java @@ -109,8 +109,8 @@ public void testCollectionAdapter() { assertSame(carrierResource.getStartLinkId(), collectionLinkId); assertNotNull(carrierResource.getEventHandlers()); assertTrue(carrierResource.getEventHandlers().isEmpty()); - assertNotNull(carrierResource.getInfos()); - assertTrue(carrierResource.getInfos().isEmpty()); + assertNotNull(carrierResource.getAttributes() ); + assertTrue(carrierResource.getAttributes().isEmpty() ); assertSame(carrierResource.getStartLinkId(), collectionLinkId); if(carrierResource.getCarrier() == collectionCarrier) { assertSame(collectionCarrier.getCarrierCapabilities(), capabilities); diff --git a/src/test/java/adapterTests/DistributionAdapterTest.java b/src/test/java/adapterTests/DistributionAdapterTest.java index 84558fd3..13efda8a 100644 --- a/src/test/java/adapterTests/DistributionAdapterTest.java +++ b/src/test/java/adapterTests/DistributionAdapterTest.java @@ -108,8 +108,8 @@ public void testCollectionAdapter() { assertSame(distributionAdapter.getStartLinkId(), distributionLinkId); assertNotNull(distributionAdapter.getEventHandlers()); assertTrue(distributionAdapter.getEventHandlers().isEmpty()); - assertNotNull(distributionAdapter.getInfos()); - assertTrue(distributionAdapter.getInfos().isEmpty()); + assertNotNull(distributionAdapter.getAttributes() ); + assertTrue(distributionAdapter.getAttributes().isEmpty() ); assertSame(distributionAdapter.getStartLinkId(), distributionLinkId); if(distributionAdapter.getCarrier() == distributionCarrier) { assertSame(distributionCarrier.getCarrierCapabilities(), capabilities); diff --git a/src/test/java/adapterTests/MainRunAdapterTest.java b/src/test/java/adapterTests/MainRunAdapterTest.java index 2e2f7f0a..61a47ae3 100644 --- a/src/test/java/adapterTests/MainRunAdapterTest.java +++ b/src/test/java/adapterTests/MainRunAdapterTest.java @@ -111,8 +111,8 @@ public void testMainRunAdapter() { assertSame(mainRunAdapter.getStartLinkId(), fromLinkId); assertNotNull(mainRunAdapter.getEventHandlers()); assertTrue(mainRunAdapter.getEventHandlers().isEmpty()); - assertNotNull(mainRunAdapter.getInfos()); - assertTrue(mainRunAdapter.getInfos().isEmpty()); + assertNotNull(mainRunAdapter.getAttributes() ); + assertTrue(mainRunAdapter.getAttributes().isEmpty() ); if(mainRunAdapter.getCarrier() == carrier) { assertSame(carrier.getCarrierCapabilities(), capabilities); assertTrue(Carrier.class.isAssignableFrom(carrier.getClass())); diff --git a/src/test/java/example/lsp/lspScoring/CollectionLSPScoringTest.java b/src/test/java/example/lsp/lspScoring/CollectionLSPScoringTest.java index 422f9157..118ad374 100644 --- a/src/test/java/example/lsp/lspScoring/CollectionLSPScoringTest.java +++ b/src/test/java/example/lsp/lspScoring/CollectionLSPScoringTest.java @@ -25,21 +25,18 @@ import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; +import lsp.scoring.LSPScoringModuleDefaultImpl; import lsp.shipment.ShipmentUtils; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.replanning.LSPReplanningUtils; import lsp.LSPResource; import lsp.scoring.LSPScorer; -import lsp.scoring.LSPScoringUtils; import lsp.shipment.LSPShipment; -import lsp.usecase.*; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; @@ -47,13 +44,11 @@ import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; -import org.matsim.core.network.io.MatsimNetworkReader; import org.matsim.core.scenario.ScenarioUtils; import org.matsim.vehicles.VehicleType; import java.util.ArrayList; import java.util.Collections; -import java.util.List; import java.util.Random; import static lsp.usecase.UsecaseUtils.*; @@ -69,6 +64,11 @@ public class CollectionLSPScoringTest { public void initialize() { Config config = ConfigUtils.createConfig(); config.network().setInputFile( "scenarios/2regions/2regions-network.xml" ); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + Scenario scenario = ScenarioUtils.loadScenario(config); Network network = scenario.getNetwork(); @@ -95,12 +95,12 @@ public void initialize() { .setInitialPlan( LSPUtils.createLSPPlan().setAssigner( createDeterministicShipmentAssigner() ).addSolution(collectionSolution ) ) .setSolutionScheduler( createDefaultSimpleForwardSolutionScheduler( Collections.singletonList( collectionAdapter ) ) ).build(); - TipEventHandler handler = new TipEventHandler(); +// TipEventHandler handler = new TipEventHandler(); // LSPAttribute value = LSPInfoFunctionUtils.createInfoFunctionValue("TIP IN EUR" ); // LSPAttributes function = LSPInfoFunctionUtils.createDefaultInfoFunction(); // function.getAttributes().add(value ); - TipInfo info = new TipInfo(); - TipSimulationTracker tipTracker = new TipSimulationTracker(handler, info); +// TipInfo info = new TipInfo(); + TipSimulationTracker tipTracker = new TipSimulationTracker(); collectionAdapter.addSimulationTracker(tipTracker); LSPScorer tipScorer = new TipScorer(collectionLSP, tipTracker); collectionLSP.setScorer(tipScorer); @@ -150,7 +150,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); diff --git a/src/test/java/example/lsp/lspScoring/ExampleLSPScoringTest.java b/src/test/java/example/lsp/lspScoring/ExampleLSPScoringTest.java new file mode 100644 index 00000000..66156b10 --- /dev/null +++ b/src/test/java/example/lsp/lspScoring/ExampleLSPScoringTest.java @@ -0,0 +1,35 @@ +package example.lsp.lspScoring; + +import lsp.LSP; +import lsp.LSPUtils; +import org.apache.log4j.Logger; +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.matsim.api.core.v01.Scenario; +import org.matsim.core.config.Config; +import org.matsim.core.controler.Controler; +import org.matsim.testcases.MatsimTestUtils; + +public class ExampleLSPScoringTest{ + private static final Logger log = Logger.getLogger( ExampleLSPScoringTest.class ); + @Rule public MatsimTestUtils utils = new MatsimTestUtils(); + + @Test + public void testMain(){ + + Config config = ExampleLSPScoring.prepareConfig(); + config.controler().setOutputDirectory( utils.getOutputDirectory() ); + + Scenario scenario = ExampleLSPScoring.prepareScenario( config ); + + Controler controler = ExampleLSPScoring.prepareControler( scenario ); + + controler.run(); + + for( LSP lsp : LSPUtils.getLSPs( scenario ).getLSPs().values() ){ + Assert.assertEquals( 13.245734044444207, lsp.getSelectedPlan().getScore(), Double.MIN_VALUE ) ; + } + + } +} diff --git a/src/test/java/example/lsp/lspScoring/MultipleIterationsCollectionLSPScoringTest.java b/src/test/java/example/lsp/lspScoring/MultipleIterationsCollectionLSPScoringTest.java index 42dfc35a..6937b1ec 100644 --- a/src/test/java/example/lsp/lspScoring/MultipleIterationsCollectionLSPScoringTest.java +++ b/src/test/java/example/lsp/lspScoring/MultipleIterationsCollectionLSPScoringTest.java @@ -29,10 +29,8 @@ import lsp.*; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; +import lsp.scoring.LSPScoringModuleDefaultImpl; import lsp.shipment.ShipmentUtils; import lsp.usecase.*; import org.junit.Before; @@ -41,9 +39,11 @@ import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -52,7 +52,6 @@ import org.matsim.vehicles.VehicleType; import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; import lsp.LSPResource; import lsp.scoring.LSPScorer; import lsp.shipment.LSPShipment; @@ -67,6 +66,11 @@ public void initialize() { Config config = new Config(); config.addCoreModules(); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -130,12 +134,12 @@ public void initialize() { collectionLSPBuilder.setSolutionScheduler(simpleScheduler); collectionLSP = collectionLSPBuilder.build(); - TipEventHandler handler = new TipEventHandler(); +// TipEventHandler handler = new TipEventHandler(); // LSPAttribute value = LSPInfoFunctionUtils.createInfoFunctionValue("TIP IN EUR" ); // LSPAttributes function = LSPInfoFunctionUtils.createDefaultInfoFunction(); // function.getAttributes().add(value ); - TipInfo info = new TipInfo(); - TipSimulationTracker tipTracker = new TipSimulationTracker(handler, info); +// TipInfo info = new TipInfo(); + TipSimulationTracker tipTracker = new TipSimulationTracker(); collectionAdapter.addSimulationTracker(tipTracker); LSPScorer tipScorer = new TipScorer(collectionLSP, tipTracker); collectionLSP.setScorer(tipScorer); @@ -184,7 +188,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); diff --git a/src/test/java/example/lsp/simulationTrackers/CollectionTrackerTest.java b/src/test/java/example/lsp/simulationTrackers/CollectionTrackerTest.java index 0251cb63..9d98a67a 100644 --- a/src/test/java/example/lsp/simulationTrackers/CollectionTrackerTest.java +++ b/src/test/java/example/lsp/simulationTrackers/CollectionTrackerTest.java @@ -25,13 +25,10 @@ import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; +import lsp.scoring.LSPScoringModuleDefaultImpl; import lsp.shipment.ShipmentUtils; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPInfo; -import lsp.replanning.LSPReplanningUtils; +import org.matsim.contrib.freight.FreightConfigGroup; import lsp.LSPResource; -import lsp.scoring.LSPScoringUtils; import lsp.shipment.LSPShipment; import lsp.controler.LSPSimulationTracker; import lsp.usecase.*; @@ -47,6 +44,7 @@ import org.matsim.contrib.freight.carrier.Tour.ServiceActivity; import org.matsim.contrib.freight.carrier.Tour.TourElement; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -78,6 +76,11 @@ public void initialize() { Config config = new Config(); config.addCoreModules(); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); this.network = scenario.getNetwork(); @@ -192,7 +195,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -300,14 +303,21 @@ public void testCollectionTracker() { assertEquals(linearTrackedCostsPerShipment, linearScheduledCostsPerShipment, Math.max(linearTrackedCostsPerShipment, linearScheduledCostsPerShipment)*0.01); assertEquals(fixedScheduledCostsPerShipment, fixedTrackedCostsPerShipment, Math.max(fixedTrackedCostsPerShipment, fixedScheduledCostsPerShipment)*0.01); - assertEquals(1, collectionSolution.getInfos().size()); - LSPInfo info = collectionSolution.getInfos().iterator().next(); - assertTrue(info instanceof CostInfo ); - CostInfo costInfo = (CostInfo) info; +// LSPInfo info = collectionSolution.getAttributes().iterator().next(); +// assertTrue(info instanceof CostInfo ); +// CostInfo costInfo = (CostInfo) info; + +// assertEquals(costInfo.getVariableCost() ,linearTrackedCostsPerShipment , Math.max(linearTrackedCostsPerShipment,costInfo.getVariableCost() ) * 0.01 ); +// assertEquals(costInfo.getVariableCost() , linearScheduledCostsPerShipment, Math.max(linearScheduledCostsPerShipment,costInfo.getVariableCost() ) * 0.01 ); +// assertEquals(costInfo.getFixedCost() ,fixedTrackedCostsPerShipment, Math.max(fixedTrackedCostsPerShipment,costInfo.getFixedCost()) * 0.01 ); +// assertEquals(costInfo.getFixedCost(),fixedScheduledCostsPerShipment, Math.max(fixedScheduledCostsPerShipment,costInfo.getFixedCost()) * 0.01 ); + + // I cannot say how the above was supposed to work, since costInfo.getVariableCost() was the same in both cases. kai, may'22 - assertEquals(costInfo.getVariableCost() ,linearTrackedCostsPerShipment , Math.max(linearTrackedCostsPerShipment,costInfo.getVariableCost() ) * 0.01 ); - assertEquals(costInfo.getVariableCost() , linearScheduledCostsPerShipment, Math.max(linearScheduledCostsPerShipment,costInfo.getVariableCost() ) * 0.01 ); - assertEquals(costInfo.getFixedCost() ,fixedTrackedCostsPerShipment, Math.max(fixedTrackedCostsPerShipment,costInfo.getFixedCost()) * 0.01 ); - assertEquals(costInfo.getFixedCost(),fixedScheduledCostsPerShipment, Math.max(fixedScheduledCostsPerShipment,costInfo.getFixedCost()) * 0.01 ); + assertEquals(2, collectionSolution.getAttributes().size() ); + assertEquals( LSPUtils.getVariableCost( collectionSolution ) ,linearTrackedCostsPerShipment , Math.max(linearTrackedCostsPerShipment,LSPUtils.getVariableCost( collectionSolution ) ) * 0.01 ); + assertEquals( LSPUtils.getVariableCost( collectionSolution ) , linearScheduledCostsPerShipment, Math.max(linearScheduledCostsPerShipment,LSPUtils.getVariableCost( collectionSolution ) ) * 0.01 ); + assertEquals( LSPUtils.getFixedCost( collectionSolution ) ,fixedTrackedCostsPerShipment, Math.max(fixedTrackedCostsPerShipment,LSPUtils.getFixedCost( collectionSolution )) * 0.01 ); + assertEquals( LSPUtils.getFixedCost( collectionSolution ),fixedScheduledCostsPerShipment, Math.max(fixedScheduledCostsPerShipment,LSPUtils.getFixedCost( collectionSolution )) * 0.01 ); } } diff --git a/src/test/java/example/lspAndDemand/requirementsChecking/AssignerRequirementsTest.java b/src/test/java/example/lspAndDemand/requirementsChecking/AssignerRequirementsTest.java index 95aceb1e..42e72d70 100644 --- a/src/test/java/example/lspAndDemand/requirementsChecking/AssignerRequirementsTest.java +++ b/src/test/java/example/lspAndDemand/requirementsChecking/AssignerRequirementsTest.java @@ -98,7 +98,8 @@ public void initialize() { LSPUtils.LogisticsSolutionBuilder redCollectionSolutionBuilder = LSPUtils.LogisticsSolutionBuilder.newInstance(redCollectionSolutionId ); redCollectionSolutionBuilder.addSolutionElement(redCollectionElement); redSolution = redCollectionSolutionBuilder.build(); - redSolution.getInfos().add(new RedInfo() ); +// redSolution.getAttributes().add(new RedInfo() ); + redSolution.getAttributes().putAttribute( "color", "red"); ShipmentAssigner assigner = new RequirementsAssigner(); LSPPlan collectionPlan = LSPUtils.createLSPPlan(); @@ -133,7 +134,8 @@ public void initialize() { LSPUtils.LogisticsSolutionBuilder blueCollectionSolutionBuilder = LSPUtils.LogisticsSolutionBuilder.newInstance(blueCollectionSolutionId ); blueCollectionSolutionBuilder.addSolutionElement(blueCollectionElement); blueSolution = blueCollectionSolutionBuilder.build(); - blueSolution.getInfos().add(new BlueInfo() ); +// blueSolution.getAttributes().add(new BlueInfo() ); + blueSolution.getAttributes().putAttribute( "color", "blue" ); collectionPlan.addSolution(blueSolution); LSPUtils.LSPBuilder collectionLSPBuilder = LSPUtils.LSPBuilder.getInstance(Id.create("CollectionLSP", LSP.class)); diff --git a/src/test/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java b/src/test/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java index ad78f546..6148c689 100644 --- a/src/test/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java +++ b/src/test/java/example/lspAndDemand/requirementsChecking/BlueRequirement.java @@ -20,7 +20,6 @@ package example.lspAndDemand.requirementsChecking; -import lsp.LSPInfo; import lsp.LogisticsSolution; import lsp.shipment.Requirement; @@ -28,11 +27,14 @@ public class BlueRequirement implements Requirement{ @Override public boolean checkRequirement(LogisticsSolution solution) { - for(LSPInfo info : solution.getInfos()) { - if(info instanceof BlueInfo) { - return true; - } - } +// for(LSPInfo info : solution.getAttributes()) { +// if(info instanceof BlueInfo) { +// return true; +// } +// } + if ( solution.getAttributes().getAttribute( "color" ).equals( "blue" ) ) { + return true; + } return false; } diff --git a/src/test/java/example/lspAndDemand/requirementsChecking/RedRequirement.java b/src/test/java/example/lspAndDemand/requirementsChecking/RedRequirement.java index edc8b9da..796804f7 100644 --- a/src/test/java/example/lspAndDemand/requirementsChecking/RedRequirement.java +++ b/src/test/java/example/lspAndDemand/requirementsChecking/RedRequirement.java @@ -20,7 +20,6 @@ package example.lspAndDemand.requirementsChecking; -import lsp.LSPInfo; import lsp.LogisticsSolution; import lsp.shipment.Requirement; @@ -28,11 +27,14 @@ public class RedRequirement implements Requirement{ @Override public boolean checkRequirement(LogisticsSolution solution) { - for(LSPInfo info : solution.getInfos()) { - if(info instanceof RedInfo) { - return true; - } - } +// for(LSPInfo info : solution.getAttributes()) { +// if(info instanceof RedInfo) { +// return true; +// } +// } + if ( solution.getAttributes().getAttribute( "color" ).equals( "red" )) { + return true; + } return false; } diff --git a/src/test/java/lsp/usecase/CollectionLSPSchedulingTest.java b/src/test/java/lsp/usecase/CollectionLSPSchedulingTest.java index fee41e40..82ce9012 100644 --- a/src/test/java/lsp/usecase/CollectionLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/CollectionLSPSchedulingTest.java @@ -152,7 +152,7 @@ public void testCollectionLSPScheduling() { for(LSPShipment shipment : collectionLSP.getShipments()) { ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(int i = 0; i < shipment.getShipmentPlan().getPlanElements().size(); i++) { diff --git a/src/test/java/lsp/usecase/CompleteLSPSchedulingTest.java b/src/test/java/lsp/usecase/CompleteLSPSchedulingTest.java index 2f137dd8..ee081616 100644 --- a/src/test/java/lsp/usecase/CompleteLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/CompleteLSPSchedulingTest.java @@ -300,7 +300,7 @@ public void testCompletedLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()) { ArrayList elementList = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - elementList.sort(new ShipmentPlanElementComparator()); + elementList.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(ShipmentPlanElement element : elementList) { System.out.println(element.getSolutionElement().getId() + "\t\t" + element.getResourceId() + "\t\t" + element.getElementType() + "\t\t" + element.getStartTime() + "\t\t" + element.getEndTime()); @@ -314,7 +314,7 @@ public void testCompletedLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(11, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("UNLOAD", planElements.get(10).getElementType()); assertTrue(planElements.get(10).getEndTime() >= (0)); @@ -492,7 +492,7 @@ public void testCompletedLSPScheduling() { assertEquals(6, shipment.getEventHandlers().size()); eventHandlers = new ArrayList<>(shipment.getEventHandlers()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertTrue(eventHandlers.get(0) instanceof CollectionTourEndEventHandler); CollectionTourEndEventHandler endHandler = (CollectionTourEndEventHandler) eventHandlers.get(0); diff --git a/src/test/java/lsp/usecase/FirstReloadAdapterTest.java b/src/test/java/lsp/usecase/FirstReloadAdapterTest.java index 4684a127..35e1f692 100644 --- a/src/test/java/lsp/usecase/FirstReloadAdapterTest.java +++ b/src/test/java/lsp/usecase/FirstReloadAdapterTest.java @@ -65,7 +65,7 @@ public void reloadingPointTest() { assertNotNull(reloadingPoint.getEventHandlers()); assertFalse(reloadingPoint.getEventHandlers().isEmpty()); assertEquals(1, reloadingPoint.getEventHandlers().size()); - assertNotNull(reloadingPoint.getInfos()); - assertTrue(reloadingPoint.getInfos().isEmpty()); + assertNotNull(reloadingPoint.getAttributes() ); + assertTrue(reloadingPoint.getAttributes().isEmpty() ); } } diff --git a/src/test/java/lsp/usecase/FirstReloadElementTest.java b/src/test/java/lsp/usecase/FirstReloadElementTest.java index 216825bc..72a986f7 100644 --- a/src/test/java/lsp/usecase/FirstReloadElementTest.java +++ b/src/test/java/lsp/usecase/FirstReloadElementTest.java @@ -61,8 +61,8 @@ public void testDistributionElement() { assertNotNull(reloadingElement.getIncomingShipments()); assertNotNull(reloadingElement.getIncomingShipments().getShipments()); assertTrue(reloadingElement.getIncomingShipments().getSortedShipments().isEmpty()); - assertNotNull(reloadingElement.getInfos()); - assertTrue(reloadingElement.getInfos().isEmpty()); + assertNotNull(reloadingElement.getAttributes() ); + assertTrue(reloadingElement.getAttributes().isEmpty() ); assertNull(reloadingElement.getEmbeddingContainer() ); assertNull(reloadingElement.getNextElement()); assertNotNull(reloadingElement.getOutgoingShipments()); diff --git a/src/test/java/lsp/usecase/FirstReloadLSPSchedulingTest.java b/src/test/java/lsp/usecase/FirstReloadLSPSchedulingTest.java index 0a02251a..ae7be471 100644 --- a/src/test/java/lsp/usecase/FirstReloadLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/FirstReloadLSPSchedulingTest.java @@ -194,7 +194,7 @@ public void testFirstReloadLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()) { ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(int i = 0; i < shipment.getShipmentPlan().getPlanElements().size(); i++) { @@ -207,7 +207,7 @@ public void testFirstReloadLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(4, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("HANDLE", planElements.get(3).getElementType()); assertTrue(planElements.get(3).getEndTime() >= (0)); assertTrue(planElements.get(3).getEndTime() <= (24*3600)); diff --git a/src/test/java/lsp/usecase/MainRunLSPSchedulingTest.java b/src/test/java/lsp/usecase/MainRunLSPSchedulingTest.java index 13698829..5077a552 100644 --- a/src/test/java/lsp/usecase/MainRunLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/MainRunLSPSchedulingTest.java @@ -233,7 +233,7 @@ public void testMainRunLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()) { ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(int i = 0; i < shipment.getShipmentPlan().getPlanElements().size(); i++) { @@ -246,7 +246,7 @@ public void testMainRunLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(7, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("UNLOAD", planElements.get(6).getElementType()); assertTrue(planElements.get(6).getEndTime() >= (0)); assertTrue(planElements.get(6).getEndTime() <= (24*3600)); @@ -351,7 +351,7 @@ public void testMainRunLSPScheduling() { assertEquals(4, shipment.getEventHandlers().size()); eventHandlers = new ArrayList<>(shipment.getEventHandlers()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList solutionElements = new ArrayList<>(lsp.getSelectedPlan().getSolutions().iterator().next().getSolutionElements()); ArrayList resources = new ArrayList<>(lsp.getResources()); diff --git a/src/test/java/lsp/usecase/MultipleShipmentsCollectionLSPSchedulingTest.java b/src/test/java/lsp/usecase/MultipleShipmentsCollectionLSPSchedulingTest.java index c9064318..5474b96c 100644 --- a/src/test/java/lsp/usecase/MultipleShipmentsCollectionLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/MultipleShipmentsCollectionLSPSchedulingTest.java @@ -155,7 +155,7 @@ public void testCollectionLSPScheduling() { for(LSPShipment shipment : collectionLSP.getShipments()) { ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(int i = 0; i < shipment.getShipmentPlan().getPlanElements().size(); i++) { diff --git a/src/test/java/lsp/usecase/MultipleShipmentsCompleteLSPSchedulingTest.java b/src/test/java/lsp/usecase/MultipleShipmentsCompleteLSPSchedulingTest.java index ffeaf40d..2c607ff8 100644 --- a/src/test/java/lsp/usecase/MultipleShipmentsCompleteLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/MultipleShipmentsCompleteLSPSchedulingTest.java @@ -300,7 +300,7 @@ public void testCompletedLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()) { ArrayList elementList = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - elementList.sort(new ShipmentPlanElementComparator()); + elementList.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(ShipmentPlanElement element : elementList) { System.out.println(element.getSolutionElement().getId() + "\t\t" + element.getResourceId() + "\t\t" + element.getElementType() + "\t\t" + element.getStartTime() + "\t\t" + element.getEndTime()); @@ -314,7 +314,7 @@ public void testCompletedLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(11, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("UNLOAD", planElements.get(10).getElementType()); assertTrue(planElements.get(10).getEndTime() >= (0)); @@ -492,7 +492,7 @@ public void testCompletedLSPScheduling() { assertEquals(6, shipment.getEventHandlers().size()); eventHandlers = new ArrayList<>(shipment.getEventHandlers()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertTrue(eventHandlers.get(0) instanceof CollectionTourEndEventHandler); CollectionTourEndEventHandler endHandler = (CollectionTourEndEventHandler) eventHandlers.get(0); diff --git a/src/test/java/lsp/usecase/MultipleShipmentsFirstReloadLSPSchedulingTest.java b/src/test/java/lsp/usecase/MultipleShipmentsFirstReloadLSPSchedulingTest.java index 04f41ffb..8c64746d 100644 --- a/src/test/java/lsp/usecase/MultipleShipmentsFirstReloadLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/MultipleShipmentsFirstReloadLSPSchedulingTest.java @@ -194,7 +194,7 @@ public void testFirstReloadLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()) { ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(int i = 0; i < shipment.getShipmentPlan().getPlanElements().size(); i++) { @@ -207,7 +207,7 @@ public void testFirstReloadLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(4, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("HANDLE", planElements.get(3).getElementType()); assertTrue(planElements.get(3).getEndTime() >= (0)); assertTrue(planElements.get(3).getEndTime() <= (24*3600)); diff --git a/src/test/java/lsp/usecase/MultipleShipmentsMainRunLSPSchedulingTest.java b/src/test/java/lsp/usecase/MultipleShipmentsMainRunLSPSchedulingTest.java index aa2b9c9a..5e2137bc 100644 --- a/src/test/java/lsp/usecase/MultipleShipmentsMainRunLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/MultipleShipmentsMainRunLSPSchedulingTest.java @@ -246,7 +246,7 @@ public void testMainRunLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(7, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("UNLOAD", planElements.get(6).getElementType()); assertTrue(planElements.get(6).getEndTime() >= (0)); assertTrue(planElements.get(6).getEndTime() <= (24*3600)); @@ -351,7 +351,7 @@ public void testMainRunLSPScheduling() { assertEquals(4, shipment.getEventHandlers().size()); eventHandlers = new ArrayList<>(shipment.getEventHandlers()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList solutionElements = new ArrayList<>(lsp.getSelectedPlan().getSolutions().iterator().next().getSolutionElements()); ArrayList resources = new ArrayList<>(lsp.getResources()); diff --git a/src/test/java/lsp/usecase/MultipleShipmentsSecondReloadLSPSchedulingTest.java b/src/test/java/lsp/usecase/MultipleShipmentsSecondReloadLSPSchedulingTest.java index d833d634..249aee39 100644 --- a/src/test/java/lsp/usecase/MultipleShipmentsSecondReloadLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/MultipleShipmentsSecondReloadLSPSchedulingTest.java @@ -273,7 +273,7 @@ public void testSecondReloadLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(8, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("HANDLE", planElements.get(7).getElementType()); assertTrue(planElements.get(7).getEndTime() >= (0)); @@ -418,7 +418,7 @@ public void testSecondReloadLSPScheduling() { assertEquals(4, shipment.getEventHandlers().size()); eventHandlers = new ArrayList<>(shipment.getEventHandlers()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList solutionElements = new ArrayList<>(lsp.getSelectedPlan().getSolutions().iterator().next().getSolutionElements()); ArrayList resources = new ArrayList<>(lsp.getResources()); diff --git a/src/test/java/lsp/usecase/SecondReloadAdapterTest.java b/src/test/java/lsp/usecase/SecondReloadAdapterTest.java index 986c505c..d1cc071e 100644 --- a/src/test/java/lsp/usecase/SecondReloadAdapterTest.java +++ b/src/test/java/lsp/usecase/SecondReloadAdapterTest.java @@ -64,8 +64,8 @@ public void reloadingPointTest() { assertNotNull(reloadingPoint.getEventHandlers()); assertFalse(reloadingPoint.getEventHandlers().isEmpty()); assertEquals(1, reloadingPoint.getEventHandlers().size()); - assertNotNull(reloadingPoint.getInfos()); - assertTrue(reloadingPoint.getInfos().isEmpty()); + assertNotNull(reloadingPoint.getAttributes() ); + assertTrue(reloadingPoint.getAttributes().isEmpty() ); } } diff --git a/src/test/java/lsp/usecase/SecondReloadLSPSchedulingTest.java b/src/test/java/lsp/usecase/SecondReloadLSPSchedulingTest.java index 01f7174e..b7353d3c 100644 --- a/src/test/java/lsp/usecase/SecondReloadLSPSchedulingTest.java +++ b/src/test/java/lsp/usecase/SecondReloadLSPSchedulingTest.java @@ -262,7 +262,7 @@ public void testSecondReloadLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()) { ArrayList elementList = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - elementList.sort(new ShipmentPlanElementComparator()); + elementList.sort( ShipmentUtils.createShipmentPlanElementComparator() ); System.out.println(); for(ShipmentPlanElement element : elementList) { System.out.println(element.getSolutionElement().getId() + " " + element.getResourceId() + " " + element.getElementType() + " " + element.getStartTime() + " " + element.getEndTime()); @@ -273,7 +273,7 @@ public void testSecondReloadLSPScheduling() { for(LSPShipment shipment : lsp.getShipments()){ assertEquals(8, shipment.getShipmentPlan().getPlanElements().size()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); assertEquals("HANDLE", planElements.get(7).getElementType()); assertTrue(planElements.get(7).getEndTime() >= (0)); @@ -418,7 +418,7 @@ public void testSecondReloadLSPScheduling() { assertEquals(4, shipment.getEventHandlers().size()); eventHandlers = new ArrayList<>(shipment.getEventHandlers()); ArrayList planElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - planElements.sort(new ShipmentPlanElementComparator()); + planElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList solutionElements = new ArrayList<>(lsp.getSelectedPlan().getSolutions().iterator().next().getSolutionElements()); ArrayList resources = new ArrayList<>(lsp.getResources()); diff --git a/src/test/java/lspMobsimTests/CollectionLSPMobsimTest.java b/src/test/java/lspMobsimTests/CollectionLSPMobsimTest.java index 4064d970..b2247177 100644 --- a/src/test/java/lspMobsimTests/CollectionLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/CollectionLSPMobsimTest.java @@ -20,21 +20,15 @@ package lspMobsimTests; -import static lsp.usecase.UsecaseUtils.*; -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; import org.apache.log4j.Logger; import org.junit.Before; import org.junit.Rule; @@ -43,6 +37,7 @@ import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.events.Event; import org.matsim.api.core.v01.network.Link; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; @@ -55,10 +50,12 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPCarrierResource; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; + +import static lsp.usecase.UsecaseUtils.*; +import static org.junit.Assert.*; public class CollectionLSPMobsimTest { private static final Logger log = Logger.getLogger( CollectionLSPMobsimTest.class ); @@ -79,6 +76,9 @@ public void initialize() { config.controler().setFirstIteration( 0 ); config.controler().setLastIteration( 0 ); + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + // load scenario: Scenario scenario = ScenarioUtils.loadScenario(config); @@ -197,7 +197,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); @@ -224,9 +224,9 @@ public void testCollectionLSPMobsim() { assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); //Das muss besser in den SchedulingTest rein assertSame(collectionLSP.getResources().iterator().next(), collectionAdapter); diff --git a/src/test/java/lspMobsimTests/CompleteLSPMobsimTest.java b/src/test/java/lspMobsimTests/CompleteLSPMobsimTest.java index cfe8f411..64d12cc6 100644 --- a/src/test/java/lspMobsimTests/CompleteLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/CompleteLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class CompleteLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -300,7 +304,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); @@ -318,9 +322,9 @@ public void testFirstReloadLSPMobsim() { for(LSPShipment shipment : completeLSP.getShipments()) { assertFalse(shipment.getLog().getPlanElements().isEmpty()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/FirstReloadLSPMobsimTest.java b/src/test/java/lspMobsimTests/FirstReloadLSPMobsimTest.java index f8af18a9..beda29d7 100644 --- a/src/test/java/lspMobsimTests/FirstReloadLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/FirstReloadLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class FirstReloadLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -204,7 +208,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -221,9 +225,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MainRunLSPMobsimTest.java b/src/test/java/lspMobsimTests/MainRunLSPMobsimTest.java index 09d04187..9bef945d 100644 --- a/src/test/java/lspMobsimTests/MainRunLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MainRunLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class MainRunLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -241,7 +245,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -256,9 +260,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MainRunOnlyLSPMobsimTest.java b/src/test/java/lspMobsimTests/MainRunOnlyLSPMobsimTest.java index 65b15d82..8d8aafd7 100644 --- a/src/test/java/lspMobsimTests/MainRunOnlyLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MainRunOnlyLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class MainRunOnlyLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -187,7 +191,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -202,9 +206,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleIterationsCollectionLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleIterationsCollectionLSPMobsimTest.java index 41378bb3..dbd0cede 100644 --- a/src/test/java/lspMobsimTests/MultipleIterationsCollectionLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleIterationsCollectionLSPMobsimTest.java @@ -20,30 +20,27 @@ package lspMobsimTests; -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -51,9 +48,11 @@ import org.matsim.core.scenario.ScenarioUtils; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; + +import static org.junit.Assert.*; public class MultipleIterationsCollectionLSPMobsimTest { private LSP collectionLSP; @@ -63,7 +62,12 @@ public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -166,7 +170,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -183,9 +187,9 @@ public void testCollectionLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleIterationsFirstReloadLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleIterationsFirstReloadLSPMobsimTest.java index 5d7b9429..53cf14ef 100644 --- a/src/test/java/lspMobsimTests/MultipleIterationsFirstReloadLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleIterationsFirstReloadLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -49,9 +48,9 @@ import org.matsim.core.scenario.ScenarioUtils; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -62,7 +61,12 @@ public class MultipleIterationsFirstReloadLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -203,7 +207,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -220,9 +224,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleIterationsMainRunLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleIterationsMainRunLSPMobsimTest.java index 37a6133b..706d433c 100644 --- a/src/test/java/lspMobsimTests/MultipleIterationsMainRunLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleIterationsMainRunLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class MultipleIterationsMainRunLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -243,7 +247,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -258,9 +262,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleIterationsSecondReloadLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleIterationsSecondReloadLSPMobsimTest.java index 9343ca0d..09cef031 100644 --- a/src/test/java/lspMobsimTests/MultipleIterationsSecondReloadLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleIterationsSecondReloadLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -64,7 +63,12 @@ public class MultipleIterationsSecondReloadLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -266,7 +270,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -282,9 +286,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleItreationsCompleteLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleItreationsCompleteLSPMobsimTest.java index a684694e..1c7d404a 100644 --- a/src/test/java/lspMobsimTests/MultipleItreationsCompleteLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleItreationsCompleteLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class MultipleItreationsCompleteLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -304,7 +308,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -319,9 +323,9 @@ public void testCompleteLSPMobsim() { for(LSPShipment shipment : completeLSP.getShipments()) { assertFalse(shipment.getLog().getPlanElements().isEmpty()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleShipmentsCollectionLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleShipmentsCollectionLSPMobsimTest.java index 7b4e36be..527a8831 100644 --- a/src/test/java/lspMobsimTests/MultipleShipmentsCollectionLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleShipmentsCollectionLSPMobsimTest.java @@ -20,30 +20,27 @@ package lspMobsimTests; -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -51,9 +48,11 @@ import org.matsim.core.scenario.ScenarioUtils; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; + +import static org.junit.Assert.*; public class MultipleShipmentsCollectionLSPMobsimTest { private LSP collectionLSP; @@ -63,7 +62,12 @@ public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -166,7 +170,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -183,9 +187,9 @@ public void testCollectionLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleShipmentsCompleteLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleShipmentsCompleteLSPMobsimTest.java index 48cad698..cc7000af 100644 --- a/src/test/java/lspMobsimTests/MultipleShipmentsCompleteLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleShipmentsCompleteLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class MultipleShipmentsCompleteLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -303,7 +307,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -318,9 +322,9 @@ public void testCompleteLSPMobsim() { for(LSPShipment shipment : completeLSP.getShipments()) { assertFalse(shipment.getLog().getPlanElements().isEmpty()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleShipmentsFirstReloadLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleShipmentsFirstReloadLSPMobsimTest.java index 8adddcfa..64307d61 100644 --- a/src/test/java/lspMobsimTests/MultipleShipmentsFirstReloadLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleShipmentsFirstReloadLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class MultipleShipmentsFirstReloadLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -205,7 +209,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -222,9 +226,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleShipmentsMainRunLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleShipmentsMainRunLSPMobsimTest.java index 187c9b44..9bb4f292 100644 --- a/src/test/java/lspMobsimTests/MultipleShipmentsMainRunLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleShipmentsMainRunLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -63,7 +62,12 @@ public class MultipleShipmentsMainRunLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -242,7 +246,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -257,9 +261,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/MultipleShipmentsSecondReloadLSPMobsimTest.java b/src/test/java/lspMobsimTests/MultipleShipmentsSecondReloadLSPMobsimTest.java index 404bd3f7..9afc8185 100644 --- a/src/test/java/lspMobsimTests/MultipleShipmentsSecondReloadLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/MultipleShipmentsSecondReloadLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -64,7 +63,12 @@ public class MultipleShipmentsSecondReloadLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -266,7 +270,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -282,9 +286,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/RepeatedMultipleShipmentsCompleteLSPMobsimTest.java b/src/test/java/lspMobsimTests/RepeatedMultipleShipmentsCompleteLSPMobsimTest.java index 2f1d5e9e..a081ea5a 100644 --- a/src/test/java/lspMobsimTests/RepeatedMultipleShipmentsCompleteLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/RepeatedMultipleShipmentsCompleteLSPMobsimTest.java @@ -20,27 +20,26 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -49,9 +48,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -62,7 +61,12 @@ public class RepeatedMultipleShipmentsCompleteLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -302,7 +306,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -320,9 +324,9 @@ public void testCompleteLSPMobsim() { for(LSPShipment shipment : completeLSP.getShipments()) { assertFalse(shipment.getLog().getPlanElements().isEmpty()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspMobsimTests/SecondReloadLSPMobsimTest.java b/src/test/java/lspMobsimTests/SecondReloadLSPMobsimTest.java index db4da92d..f6a38a7b 100644 --- a/src/test/java/lspMobsimTests/SecondReloadLSPMobsimTest.java +++ b/src/test/java/lspMobsimTests/SecondReloadLSPMobsimTest.java @@ -20,28 +20,27 @@ package lspMobsimTests; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; -import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; -import lsp.shipment.*; -import lsp.usecase.*; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; +import lsp.shipment.ShipmentPlanElement; +import lsp.shipment.ShipmentUtils; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -50,9 +49,9 @@ import org.matsim.vehicles.Vehicle; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; import static org.junit.Assert.*; @@ -64,7 +63,12 @@ public class SecondReloadLSPMobsimTest { public void initialize() { Config config = new Config(); config.addCoreModules(); - Scenario scenario = ScenarioUtils.createScenario(config); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -267,7 +271,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); config.controler().setFirstIteration(0); @@ -283,9 +287,9 @@ public void testFirstReloadLSPMobsim() { assertFalse(shipment.getLog().getPlanElements().isEmpty()); assertEquals(shipment.getShipmentPlan().getPlanElements().size(), shipment.getLog().getPlanElements().size()); ArrayList scheduleElements = new ArrayList<>(shipment.getShipmentPlan().getPlanElements().values()); - scheduleElements.sort(new ShipmentPlanElementComparator()); + scheduleElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); ArrayList logElements = new ArrayList<>(shipment.getLog().getPlanElements().values()); - logElements.sort(new ShipmentPlanElementComparator()); + logElements.sort( ShipmentUtils.createShipmentPlanElementComparator() ); for(ShipmentPlanElement scheduleElement : scheduleElements){ ShipmentPlanElement logElement = logElements.get(scheduleElements.indexOf(scheduleElement)); diff --git a/src/test/java/lspReplanningTests/CollectionLSPReplanningTest.java b/src/test/java/lspReplanningTests/CollectionLSPReplanningTest.java index 32a0cbd6..914f4795 100644 --- a/src/test/java/lspReplanningTests/CollectionLSPReplanningTest.java +++ b/src/test/java/lspReplanningTests/CollectionLSPReplanningTest.java @@ -20,31 +20,28 @@ package lspReplanningTests; -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Random; - import lsp.*; +import lsp.controler.LSPModule; import lsp.replanning.LSPReplanner; import lsp.replanning.LSPReplanningModule; import lsp.replanning.LSPReplanningModuleImpl; import lsp.replanning.LSPReplanningUtils; import lsp.scoring.LSPScoringModule; -import lsp.scoring.LSPScoringModuleImpl; -import lsp.scoring.LSPScoringUtils; +import lsp.scoring.LSPScoringModuleDefaultImpl; +import lsp.shipment.LSPShipment; import lsp.shipment.ShipmentUtils; -import lsp.usecase.*; +import lsp.usecase.UsecaseUtils; import org.junit.Before; import org.junit.Test; import org.matsim.api.core.v01.Id; import org.matsim.api.core.v01.Scenario; import org.matsim.api.core.v01.network.Link; import org.matsim.api.core.v01.network.Network; +import org.matsim.contrib.freight.FreightConfigGroup; import org.matsim.contrib.freight.carrier.*; import org.matsim.contrib.freight.carrier.CarrierCapabilities.FleetSize; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigUtils; import org.matsim.core.controler.AbstractModule; import org.matsim.core.controler.Controler; import org.matsim.core.controler.OutputDirectoryHierarchy.OverwriteFileSetting; @@ -53,10 +50,11 @@ import org.matsim.core.scenario.ScenarioUtils; import org.matsim.vehicles.VehicleType; -import lsp.controler.LSPModule; -import org.matsim.contrib.freight.events.eventsCreator.LSPEventCreatorUtils; -import lsp.LSPResource; -import lsp.shipment.LSPShipment; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Random; + +import static org.junit.Assert.assertTrue; public class CollectionLSPReplanningTest { private LSP collectionLSP; @@ -67,6 +65,11 @@ public void initialize() { Config config = new Config(); config.addCoreModules(); + + var freightConfig = ConfigUtils.addOrGetModule( config, FreightConfigGroup.class ); + freightConfig.setTimeWindowHandling( FreightConfigGroup.TimeWindowHandling.ignore ); + + Scenario scenario = ScenarioUtils.createScenario(config); new MatsimNetworkReader(scenario.getNetwork()).readFile("scenarios/2regions/2regions-network.xml"); Network network = scenario.getNetwork(); @@ -180,7 +183,7 @@ public void initialize() { @Override public void install(){ install( new LSPModule() ); this.bind( LSPReplanningModule.class ).to( LSPReplanningModuleImpl.class ); - this.bind( LSPScoringModule.class ).to( LSPScoringModuleImpl.class ); + this.bind( LSPScoringModule.class ).to( LSPScoringModuleDefaultImpl.class ); } }); diff --git a/src/test/java/lspShipmentTest/CollectionShipmentBuilderTest.java b/src/test/java/lspShipmentTest/CollectionShipmentBuilderTest.java index 41b9208e..01d47a6b 100644 --- a/src/test/java/lspShipmentTest/CollectionShipmentBuilderTest.java +++ b/src/test/java/lspShipmentTest/CollectionShipmentBuilderTest.java @@ -103,10 +103,10 @@ public void testShipments() { assertNotNull(shipment.getEventHandlers()); assertTrue(shipment.getEventHandlers().isEmpty()); - assertEquals(shipment.getLog().getShipment(), shipment); + assertEquals(shipment.getLog().getEmbeddingContainer(), shipment ); assertTrue(shipment.getLog().getPlanElements().isEmpty()); - assertEquals(shipment.getShipmentPlan().getShipment(), shipment); + assertEquals(shipment.getShipmentPlan().getEmbeddingContainer(), shipment ); assertTrue(shipment.getShipmentPlan().getPlanElements().isEmpty()); Link link = network.getLinks().get(shipment.getFrom() ); diff --git a/src/test/java/lspShipmentTest/CompleteShipmentBuilderTest.java b/src/test/java/lspShipmentTest/CompleteShipmentBuilderTest.java index 816baf98..946c5bcc 100644 --- a/src/test/java/lspShipmentTest/CompleteShipmentBuilderTest.java +++ b/src/test/java/lspShipmentTest/CompleteShipmentBuilderTest.java @@ -117,10 +117,10 @@ public void testShipments() { assertNotNull(shipment.getEventHandlers()); assertTrue(shipment.getEventHandlers().isEmpty()); - assertEquals(shipment.getLog().getShipment(), shipment); + assertEquals(shipment.getLog().getEmbeddingContainer(), shipment ); assertTrue(shipment.getLog().getPlanElements().isEmpty()); - assertEquals(shipment.getShipmentPlan().getShipment(), shipment); + assertEquals(shipment.getShipmentPlan().getEmbeddingContainer(), shipment ); assertTrue(shipment.getShipmentPlan().getPlanElements().isEmpty()); Link link = network.getLinks().get(shipment.getTo() ); assertTrue(link.getFromNode().getCoord().getX() <= 18000); diff --git a/src/test/java/lspShipmentTest/DistributionShipmentBuilderTest.java b/src/test/java/lspShipmentTest/DistributionShipmentBuilderTest.java index 4ae79cc3..1feacced 100644 --- a/src/test/java/lspShipmentTest/DistributionShipmentBuilderTest.java +++ b/src/test/java/lspShipmentTest/DistributionShipmentBuilderTest.java @@ -107,10 +107,10 @@ public void testShipments() { assertNotNull(shipment.getEventHandlers()); assertTrue(shipment.getEventHandlers().isEmpty()); - assertEquals(shipment.getLog().getShipment(), shipment); + assertEquals(shipment.getLog().getEmbeddingContainer(), shipment ); assertTrue(shipment.getLog().getPlanElements().isEmpty()); - assertEquals(shipment.getShipmentPlan().getShipment(), shipment); + assertEquals(shipment.getShipmentPlan().getEmbeddingContainer(), shipment ); assertTrue(shipment.getShipmentPlan().getPlanElements().isEmpty()); Link link = network.getLinks().get(shipment.getTo() ); assertTrue(link.getFromNode().getCoord().getX() <= 18000); diff --git a/src/test/java/solutionElementTests/CollectionElementTest.java b/src/test/java/solutionElementTests/CollectionElementTest.java index 0cc06c10..6869de9a 100644 --- a/src/test/java/solutionElementTests/CollectionElementTest.java +++ b/src/test/java/solutionElementTests/CollectionElementTest.java @@ -95,8 +95,8 @@ public void testCollectionElement() { assertNotNull(collectionElement.getIncomingShipments()); assertNotNull(collectionElement.getIncomingShipments().getShipments()); assertTrue(collectionElement.getIncomingShipments().getSortedShipments().isEmpty()); - assertNotNull(collectionElement.getInfos()); - assertTrue(collectionElement.getInfos().isEmpty()); + assertNotNull(collectionElement.getAttributes() ); + assertTrue(collectionElement.getAttributes().isEmpty() ); assertNull(collectionElement.getEmbeddingContainer() ); assertNull(collectionElement.getNextElement()); assertNotNull(collectionElement.getOutgoingShipments()); diff --git a/src/test/java/solutionElementTests/DistributionElementTest.java b/src/test/java/solutionElementTests/DistributionElementTest.java index 8db350fe..02691cbd 100644 --- a/src/test/java/solutionElementTests/DistributionElementTest.java +++ b/src/test/java/solutionElementTests/DistributionElementTest.java @@ -98,8 +98,8 @@ public void testDistributionElement() { assertNotNull(distributionElement.getIncomingShipments()); assertNotNull(distributionElement.getIncomingShipments().getShipments()); assertTrue(distributionElement.getIncomingShipments().getSortedShipments().isEmpty()); - assertNotNull(distributionElement.getInfos()); - assertTrue(distributionElement.getInfos().isEmpty()); + assertNotNull(distributionElement.getAttributes() ); + assertTrue(distributionElement.getAttributes().isEmpty() ); assertNull(distributionElement.getEmbeddingContainer() ); assertNull(distributionElement.getNextElement()); assertNotNull(distributionElement.getOutgoingShipments()); diff --git a/src/test/java/solutionElementTests/MainRunElementTest.java b/src/test/java/solutionElementTests/MainRunElementTest.java index 0839d2ad..9739669f 100644 --- a/src/test/java/solutionElementTests/MainRunElementTest.java +++ b/src/test/java/solutionElementTests/MainRunElementTest.java @@ -100,8 +100,8 @@ public void testDistributionElement() { assertNotNull(mainRunElement.getIncomingShipments()); assertNotNull(mainRunElement.getIncomingShipments().getShipments()); assertTrue(mainRunElement.getIncomingShipments().getSortedShipments().isEmpty()); - assertNotNull(mainRunElement.getInfos()); - assertTrue(mainRunElement.getInfos().isEmpty()); + assertNotNull(mainRunElement.getAttributes() ); + assertTrue(mainRunElement.getAttributes().isEmpty() ); assertNull(mainRunElement.getEmbeddingContainer() ); assertNull(mainRunElement.getNextElement()); assertNotNull(mainRunElement.getOutgoingShipments()); diff --git a/src/test/java/solutionElementTests/SecondReloadElementTest.java b/src/test/java/solutionElementTests/SecondReloadElementTest.java index 580bbe43..aad91a2b 100644 --- a/src/test/java/solutionElementTests/SecondReloadElementTest.java +++ b/src/test/java/solutionElementTests/SecondReloadElementTest.java @@ -63,8 +63,8 @@ public void testDistributionElement() { assertNotNull(reloadElement.getIncomingShipments()); assertNotNull(reloadElement.getIncomingShipments().getShipments()); assertTrue(reloadElement.getIncomingShipments().getSortedShipments().isEmpty()); - assertNotNull(reloadElement.getInfos()); - assertTrue(reloadElement.getInfos().isEmpty()); + assertNotNull(reloadElement.getAttributes() ); + assertTrue(reloadElement.getAttributes().isEmpty() ); assertNull(reloadElement.getEmbeddingContainer() ); assertNull(reloadElement.getNextElement()); assertNotNull(reloadElement.getOutgoingShipments()); diff --git a/src/test/java/solutionTests/CollectionSolutionTest.java b/src/test/java/solutionTests/CollectionSolutionTest.java index 241cc585..3e75e46c 100644 --- a/src/test/java/solutionTests/CollectionSolutionTest.java +++ b/src/test/java/solutionTests/CollectionSolutionTest.java @@ -101,8 +101,8 @@ public void initialize() { public void testCollectionSolution() { assertNotNull(collectionSolution.getEventHandlers()); assertTrue(collectionSolution.getEventHandlers().isEmpty()); - assertNotNull(collectionSolution.getInfos()); - assertTrue(collectionSolution.getInfos().isEmpty()); + assertNotNull(collectionSolution.getAttributes() ); + assertTrue(collectionSolution.getAttributes().isEmpty() ); assertNull(collectionSolution.getLSP() ); assertNotNull(collectionSolution.getShipments()); assertTrue(collectionSolution.getShipments().isEmpty()); diff --git a/src/test/java/solutionTests/CompleteSolutionTest.java b/src/test/java/solutionTests/CompleteSolutionTest.java index 4dbcd3f0..06a42c15 100644 --- a/src/test/java/solutionTests/CompleteSolutionTest.java +++ b/src/test/java/solutionTests/CompleteSolutionTest.java @@ -227,8 +227,8 @@ public void initialize() { public void testCompleteSolution() { assertNotNull(solution.getEventHandlers()); assertTrue(solution.getEventHandlers().isEmpty()); - assertNotNull(solution.getInfos()); - assertTrue(solution.getInfos().isEmpty()); + assertNotNull(solution.getAttributes() ); + assertTrue(solution.getAttributes().isEmpty() ); assertNull(solution.getLSP() ); assertNotNull(solution.getShipments()); assertTrue(solution.getShipments().isEmpty());