private void createFacility( ActivityFacilitiesFactory activityFacilityFactory, Entity entity, String name, Coord coord, String activityType) { Id<ActivityFacility> facilityId = Id.create(idPrefix + entity.getId(), ActivityFacility.class); ActivityFacility activityFacility; // activity facility if(!facilities.getFacilities().containsKey(facilityId)){ activityFacility = activityFacilityFactory.createActivityFacility(facilityId, coord); ((ActivityFacilityImpl)activityFacility).setDesc(name); facilities.addActivityFacility(activityFacility); } else{ activityFacility = (ActivityFacilityImpl) facilities.getFacilities().get(facilityId); } ActivityOption activityOption = activityFacilityFactory.createActivityOption(activityType); // activity option if(!activityFacility.getActivityOptions().containsKey(activityType)) { activityFacility.addActivityOption(activityOption); } }
if (atts.getValue("linkId") !=null) { //both coord and link present this.currfacility = this.factory.createActivityFacility( Id.create(atts.getValue("id"), ActivityFacility.class), coordinateTransformation.transform( } else { // only coord present this.currfacility = this.factory.createActivityFacility( Id.create(atts.getValue("id"), ActivityFacility.class), coordinateTransformation.transform( if (atts.getValue("linkId") !=null) { //only link present this.currfacility = this.factory.createActivityFacility( Id.create(atts.getValue("id"), ActivityFacility.class), Id.create(atts.getValue("linkId"),Link.class));
private void startActivity(final Attributes atts) { this.curractivity = this.factory.createActivityOption(atts.getValue("type")); this.currfacility.addActivityOption(this.curractivity); }
public static final ActivityFacilities createFacilityForEachLink(String facilityContainerName, Network network) { ActivityFacilities facilities = FacilitiesUtils.createActivityFacilities(facilityContainerName); ActivityFacilitiesFactory aff = facilities.getFactory(); for (Link link : network.getLinks().values()) { ActivityFacility facility = aff.createActivityFacility(Id.create(link.getId(),ActivityFacility.class), link.getCoord(), link.getId()); facilities.addActivityFacility(facility); } return facilities ; }
ActivityFacility facility = aff.createActivityFacility(facilityId, activity.getCoord()); facility.addActivityOption(aff.createActivityOption(activityType)); facilities.addActivityFacility(facility);
@Test public void testAddActivityFacility() { ActivityFacilities facilities = new ActivityFacilitiesImpl(); ActivityFacilitiesFactory factory = facilities.getFactory(); ActivityFacility facility1 = factory.createActivityFacility(Id.create(1, ActivityFacility.class), new Coord((double) 200, (double) 5000)); Assert.assertEquals(0, facilities.getFacilities().size()); facilities.addActivityFacility(facility1); Assert.assertEquals(1, facilities.getFacilities().size()); ActivityFacility facility2 = factory.createActivityFacility(Id.create(2, ActivityFacility.class), new Coord((double) 300, (double) 4000)); facilities.addActivityFacility(facility2); Assert.assertEquals(2, facilities.getFacilities().size()); }
private void processFacilities(ActivityFacilitiesFactory aff, Map<Long,? extends EntityContainer> entityMap, String osmKey) { for (long n : entityMap.keySet()){ Entity entity = entityMap.get(n).getEntity(); Map<String, String> tags = new TagCollectionImpl(entity.getTags()).buildMap(); String amenity = tags.get(osmKey); String matsimType = null; if (amenity != null) { matsimType = getActivityType(amenity, osmKey); } if (matsimType != null){ String name = tags.get(OsmTags.NAME); name = AccessibilityOsmUtils.simplifyString(name); Coord coord = OSMCoordUtils.getCentroidCoord(entity, this.ct, this.nodeMap, this.wayMap, this.relationMap); Id<ActivityFacility> newId = Id.create(entity.getId(), ActivityFacility.class); ActivityFacility af; if(!facilities.getFacilities().containsKey(newId)){ af = aff.createActivityFacility(newId, coord); ((ActivityFacilityImpl)af).setDesc(name); facilities.addActivityFacility(af); } else{ af = (ActivityFacilityImpl) facilities.getFacilities().get(newId); } ActivityOption ao = aff.createActivityOption(matsimType); af.addActivityOption(ao); } } }
@Override public double computeContributionOfOpportunity(ActivityFacility origin, final AggregationObject destination, Double departureTime) { Person person = null ; // I think that this is ok ActivityFacilitiesFactory activityFacilitiesFactory = new ActivityFacilitiesFactoryImpl(); ActivityFacility destinationFacility = activityFacilitiesFactory.createActivityFacility(null, destination.getNearestNode().getCoord()); Gbl.assertNotNull(tripRouter); List<? extends PlanElement> plan = tripRouter.calcRoute(mode, origin, destinationFacility, departureTime, person); // Vehicle vehicle = null ; // I think that this is ok double utility = 0.; List<Leg> legs = TripStructureUtils.getLegs(plan); // TODO Doing it like this, the pt interaction (e.g. waiting) times will be omitted! Gbl.assertIf(!legs.isEmpty()); for (Leg leg : legs) { // Add up all utility components of leg utility += leg.getRoute().getDistance() * this.planCalcScoreConfigGroup.getModes().get(leg.getMode()).getMarginalUtilityOfDistance(); utility += leg.getRoute().getTravelTime() * this.planCalcScoreConfigGroup.getModes().get(leg.getMode()).getMarginalUtilityOfTraveling() / 3600.; utility += -leg.getRoute().getTravelTime() * this.planCalcScoreConfigGroup.getPerforming_utils_hr() / 3600.; } // Utility based on opportunities that are attached to destination node double sumExpVjkWalk = destination.getSum(); // exp(beta * a) * exp(beta * b) = exp(beta * (a+b)) return Math.exp(this.planCalcScoreConfigGroup.getBrainExpBeta() * utility) * sumExpVjkWalk; } }
ActivityFacility af; if(!facilities.getFacilities().containsKey(newId)){ af = aff.createActivityFacility(newId, coord); ((ActivityFacilityImpl)af).setDesc(name); facilities.addActivityFacility(af); af = (ActivityFacilityImpl) facilities.getFacilities().get(newId); ActivityOption ao = aff.createActivityOption(matsimType); af.addActivityOption(ao); ActivityFacility af; if(!facilities.getFacilities().containsKey(newId)){ af = aff.createActivityFacility(newId, coord); ((ActivityFacilityImpl)af).setDesc(name); facilities.addActivityFacility(af); af = (ActivityFacilityImpl) facilities.getFacilities().get(newId); ActivityOption ao = aff.createActivityOption("s"); af.addActivityOption(ao);
public static final ActivityFacilities createFacilityFromBuildingShapefile(String shapeFileName, String identifierCaption, String numberOfHouseholdsCaption) { ShapeFileReader shapeFileReader = new ShapeFileReader(); Collection<SimpleFeature> features = shapeFileReader.readFileAndInitialize(shapeFileName); ActivityFacilities facilities = FacilitiesUtils.createActivityFacilities("DensitiyFacilities"); ActivityFacilitiesFactory aff = facilities.getFactory(); for (SimpleFeature feature : features) { String featureId = (String) feature.getAttribute(identifierCaption); Integer numberOfHouseholds = Integer.parseInt((String) feature.getAttribute(numberOfHouseholdsCaption)); Geometry geometry = (Geometry) feature.getDefaultGeometry(); Coord coord = CoordUtils.createCoord(geometry.getCentroid().getX(), geometry.getCentroid().getY()); for (int i = 0; i < numberOfHouseholds; i++) { ActivityFacility facility = aff.createActivityFacility(Id.create(featureId + "_" + i, ActivityFacility.class), coord); facilities.addActivityFacility(facility); } } return facilities ; }
facility = facilitiesPerLinkId.get(linkId); if (facility == null) { facility = factory.createActivityFacility(Id.create(this.idPrefix + linkId.toString(), ActivityFacility.class), c, linkId); this.facilities.addActivityFacility(facility); facilitiesPerLinkId.put(linkId, facility); facility = factory.createActivityFacility(Id.create(this.idPrefix + idxCounter++, ActivityFacility.class), c, linkId); this.facilities.addActivityFacility(facility); facilitiesPerCoordinate.put(c, facility); ActivityOption option = facility.getActivityOptions().get(actType); if (option == null) { option = factory.createActivityOption(actType); facility.addActivityOption(option);
/** * Yes, it's just a remove on a Map. But we don't know what kind of map * is used internally, and if the map is modifiable at all... */ @Test public void testRemove() { ActivityFacilities facilities = new ActivityFacilitiesImpl(); ActivityFacilitiesFactory factory = facilities.getFactory(); ActivityFacility facility1 = factory.createActivityFacility(Id.create(1, ActivityFacility.class), new Coord((double) 200, (double) 5000)); ActivityFacility facility2 = factory.createActivityFacility(Id.create(2, ActivityFacility.class), new Coord((double) 300, (double) 4000)); facilities.addActivityFacility(facility1); facilities.addActivityFacility(facility2); Assert.assertEquals(2, facilities.getFacilities().size()); Assert.assertEquals(facility1, facilities.getFacilities().remove(Id.create(1, ActivityFacility.class))); Assert.assertEquals(1, facilities.getFacilities().size()); }
activityFacility = activityFacilityFactory.createActivityFacility(facilityId, coord); ((ActivityFacilityImpl)activityFacility).setDesc(name); facilities.addActivityFacility(activityFacility); activityFacility = (ActivityFacilityImpl) facilities.getFacilities().get(facilityId); ActivityOption aactivityOption = activityFacilityFactory.createActivityOption(activityType);
@Test public void testAddActivityFacility_sameId() { ActivityFacilities facilities = new ActivityFacilitiesImpl(); ActivityFacilitiesFactory factory = facilities.getFactory(); ActivityFacility facility1 = factory.createActivityFacility(Id.create(1, ActivityFacility.class), new Coord((double) 200, (double) 5000)); ActivityFacility facility2 = factory.createActivityFacility(Id.create(1, ActivityFacility.class), new Coord((double) 300, (double) 4000)); Assert.assertEquals(0, facilities.getFacilities().size()); facilities.addActivityFacility(facility1); try { facilities.addActivityFacility(facility2); Assert.fail("Expected exception, got none."); } catch (IllegalArgumentException expected) {} Assert.assertEquals(1, facilities.getFacilities().size()); Assert.assertEquals(facility1, facilities.getFacilities().get(Id.create(1, ActivityFacility.class))); }
@Override protected void setUp() throws Exception { super.setUp(); final Config config = ConfigUtils.createConfig(); final Scenario scenario = ScenarioUtils.createScenario( config ); this.facilities = scenario.getActivityFacilities() ; // create facilities, activities in it and open times final ActivityFacilitiesFactory facilitiesFactory = this.facilities.getFactory(); Coord defaultCoord = new Coord(0.0, 0.0); ActivityFacility testFacility = facilitiesFactory.createActivityFacility(Id.create(0, ActivityFacility.class), defaultCoord) ; this.facilities.addActivityFacility(testFacility); ActivityOption ao = facilitiesFactory.createActivityOption("shop") ; testFacility.addActivityOption(ao); ao.addOpeningTime(new OpeningTimeImpl(6.0 * 3600, 11.0 * 3600)); ao.addOpeningTime(new OpeningTimeImpl(13.0 * 3600, 19.0 * 3600)); // here, we don't test the scoring function itself, but just the method to retrieve opening times // we don't really need persons and plans, they're just used to initialize the ScoringFunction object final PopulationFactory pf = scenario.getPopulation().getFactory(); this.person = pf.createPerson(Id.create(1, Person.class)); Plan plan = pf.createPlan() ; this.person.addPlan(plan); Activity act = pf.createActivityFromCoord("shop", defaultCoord ) ; plan.addActivity(act); act.setFacilityId(testFacility.getId()); act.setStartTime(8.0 * 3600); act.setEndTime(16.0 * 3600); }
@Test public void testAddActivityFacility_addingTwice() { ActivityFacilities facilities = new ActivityFacilitiesImpl(); ActivityFacilitiesFactory factory = facilities.getFactory(); ActivityFacility facility1 = factory.createActivityFacility(Id.create(1, ActivityFacility.class), new Coord((double) 200, (double) 5000)); ActivityFacility facility2 = factory.createActivityFacility(Id.create(2, ActivityFacility.class), new Coord((double) 300, (double) 4000)); Assert.assertEquals(0, facilities.getFacilities().size()); facilities.addActivityFacility(facility1); facilities.addActivityFacility(facility2); Assert.assertEquals(2, facilities.getFacilities().size()); try { facilities.addActivityFacility(facility1); Assert.fail("Expected exception, got none."); } catch (IllegalArgumentException expected) {} Assert.assertEquals(2, facilities.getFacilities().size()); }
ActivityFacility fac1 = factory.createActivityFacility(Id.create("1", ActivityFacility.class), new Coord(10.0, 15.0)); fac1.addActivityOption(new ActivityOptionImpl("home")); facilities.addActivityFacility(fac1); ActivityFacility fac2 = factory.createActivityFacility(Id.create("2", ActivityFacility.class), new Coord(20.0, 25.0)); ActivityOptionImpl shopOption = new ActivityOptionImpl("shop"); shopOption.addOpeningTime(new OpeningTimeImpl(8*3600, 20*3600));
@Test public void testWriteReadV1_withAttributes() { Scenario scenario = ScenarioUtils.createScenario(ConfigUtils.createConfig()); ActivityFacilities facilities = scenario.getActivityFacilities(); ActivityFacilitiesFactory factory = facilities.getFactory(); ActivityFacility fac1 = factory.createActivityFacility(Id.create("1", ActivityFacility.class), new Coord(10.0, 15.0)); fac1.getAttributes().putAttribute("size_m2", 100); facilities.addActivityFacility(fac1); ActivityFacility fac2 = factory.createActivityFacility(Id.create("2", ActivityFacility.class), new Coord(20.0, 25.0)); fac2.getAttributes().putAttribute("size_m2", 500); facilities.addActivityFacility(fac2); ByteArrayOutputStream outStream = new ByteArrayOutputStream(); new FacilitiesWriter(facilities).write(outStream); /* ------ */ ByteArrayInputStream inStream = new ByteArrayInputStream(outStream.toByteArray()); ActivityFacilities facilities2 = FacilitiesUtils.createActivityFacilities(); new MatsimFacilitiesReader(null, null, facilities2).parse(inStream); Assert.assertEquals(2, facilities2.getFacilities().size()); ActivityFacility fac1b = facilities2.getFacilities().get(Id.create("1", ActivityFacility.class)); Assert.assertEquals(0, fac1b.getActivityOptions().size()); Assert.assertEquals(1, fac1b.getAttributes().size()); Assert.assertEquals(100, fac1b.getAttributes().getAttribute("size_m2")); ActivityFacility fac2b = facilities2.getFacilities().get(Id.create("2", ActivityFacility.class)); Assert.assertEquals(0, fac2b.getActivityOptions().size()); Assert.assertEquals(1, fac2b.getAttributes().size()); Assert.assertEquals(500, fac2b.getAttributes().getAttribute("size_m2")); }
ActivityFacility fac1 = factory.createActivityFacility(Id.create("1", ActivityFacility.class), new Coord(10.0, 15.0)); fac1.addActivityOption(new ActivityOptionImpl("home")); fac1.getAttributes().putAttribute("size_m2", 100); ActivityFacility fac2 = factory.createActivityFacility(Id.create("2", ActivityFacility.class), new Coord(20.0, 25.0)); ActivityOptionImpl shopOption = new ActivityOptionImpl("shop"); shopOption.addOpeningTime(new OpeningTimeImpl(8*3600, 20*3600));
ActivityFacilitiesFactory factory = facilities.getFactory(); ActivityFacility fac1 = factory.createActivityFacility(Id.create("1", ActivityFacility.class), new Coord(10.0, 15.0)); ((ActivityFacilityImpl) fac1).setLinkId(Id.create("Abc", Link.class)); ActivityFacility fac2 = factory.createActivityFacility(Id.create("2", ActivityFacility.class), new Coord(20.0, 25.0)); ((ActivityFacilityImpl) fac2).setLinkId(Id.create("Def", Link.class)); ActivityFacility fac3 = factory.createActivityFacility(Id.create("3", ActivityFacility.class), new Coord(30.0, 35.0));