Line data Source code
1 : /****************************************************************************/ 2 : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo 3 : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others. 4 : // activitygen module 5 : // Copyright 2010 TUM (Technische Universitaet Muenchen, http://www.tum.de/) 6 : // This program and the accompanying materials are made available under the 7 : // terms of the Eclipse Public License 2.0 which is available at 8 : // https://www.eclipse.org/legal/epl-2.0/ 9 : // This Source Code may also be made available under the following Secondary 10 : // Licenses when the conditions for such availability set forth in the Eclipse 11 : // Public License 2.0 are satisfied: GNU General Public License, version 2 12 : // or later which is available at 13 : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html 14 : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later 15 : /****************************************************************************/ 16 : /// @file AGWorkAndSchool.h 17 : /// @author Piotr Woznica 18 : /// @author Daniel Krajzewicz 19 : /// @author Walter Bamberger 20 : /// @date July 2010 21 : /// 22 : // Generates trips to work and to school 23 : /****************************************************************************/ 24 : #pragma once 25 : #include <config.h> 26 : 27 : #include <activitygen/city/AGHousehold.h> 28 : #include <activitygen/city/AGPosition.h> 29 : #include "AGActivity.h" 30 : 31 : 32 : // =========================================================================== 33 : // class definitions 34 : // =========================================================================== 35 : class AGWorkAndSchool : public AGActivity { 36 : public: 37 : AGWorkAndSchool(AGHousehold* hh, AGDataAndStatistics* das, std::list<AGTrip>* prevTrips) : 38 1506 : AGActivity(hh, das, prevTrips, 1) {}; 39 : 40 : /** 41 : * @Overwrite 42 : */ 43 : bool generateTrips(); 44 : 45 : /** 46 : * generate objects 47 : */ 48 : //void buildDestinations(); 49 : void buildChildrenAccompaniment(); 50 : void buildWorkDestinations(); 51 : 52 : /** 53 : * allocation of cars to the convenient adult: 54 : * the adult able to accompany the other (adult) and children in need. 55 : */ 56 : void carAllocation(); 57 : 58 : /** 59 : * trip generation for adults and children 60 : */ 61 : bool carsToTrips(); 62 : 63 : /** 64 : * returns true if there is an unused car that can be driven by an adult 65 : */ 66 : bool isThereUnusedCar(); 67 : 68 : /** 69 : * main function of Accompaniment trip management: 70 : * simple trips are analyzed whether they can be grouped together or not. 71 : * return true if every thing worked well 72 : */ 73 : bool checkAndBuildTripConsistancy(); 74 : 75 : /** 76 : * checks whether the driver is able to accompany all people 77 : * or if the others have to go too late to work for him 78 : */ 79 : bool checkDriversScheduleMatching(); 80 : 81 : /** 82 : * function generating Trip objects using the local objects 83 : */ 84 : void generateListTrips(); 85 : 86 : /** 87 : * function adding new drivers when a not used car is needed 88 : * + when the person prefer the car to the bus (choice variable) 89 : */ 90 : void makePossibleDriversDrive(); 91 : 92 : /** 93 : * return the name of a car that is not used by another adult driver of the household 94 : * in fact there is only 1 or 2 adults, so if the number of cars is greater that 1 95 : * at least one car isn't used 96 : */ 97 : std::string getUnusedCar(); 98 : 99 : private: 100 : /** 101 : * list of destinations for children, which can be reach only using a car (too far from home) 102 : * and therefore need to be accompanied: 103 : * waiting list for the accompaniment 104 : */ 105 : //std::list<Position> childrenCarAccompaniment; 106 : std::list<AGChild> childrenNeedingCarAccompaniment; 107 : /** 108 : * adult needing a car having a car but this car is not available because of an other person 109 : */ 110 : //std::list<Position> adultCarAccompaniment; 111 : std::list<AGAdult> adultNeedingCarAccompaniment; 112 : /** 113 : * list of destinations for work by bus or car, 114 : * car being possible (other wise bus or feet) 115 : */ 116 : //std::list<Position> workDestinations; 117 : std::list<AGAdult> workingPeoplePossCar; 118 : /** 119 : * work destinations with use of car 120 : */ 121 : //std::list<Position> carDestinations; 122 : std::list<AGAdult> personsDrivingCars; 123 : /** 124 : * adults of the household who are not in need of car for work 125 : * but are able to accompany someone. used only in case of need. 126 : */ 127 : std::list<AGAdult> notNeedingDrivers; 128 : /** 129 : * list of temporary trips: 130 : * contains accompaniment trips without any return to home. 131 : */ 132 : std::list<AGTrip> tempAccTrip; 133 : std::list<AGTrip> tempTrip; 134 : };