Eclipse SUMO - Simulation of Urban MObility
AGActivity.cpp
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2019 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
7 // are made available under the terms of the Eclipse Public License v2.0
8 // which accompanies this distribution, and is available at
9 // http://www.eclipse.org/legal/epl-v20.html
10 // SPDX-License-Identifier: EPL-2.0
11 /****************************************************************************/
19 // Parent object for all activities. Derived classes generate trips for each
20 // household.
21 /****************************************************************************/
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #include <config.h>
28 
32 #include "AGActivity.h"
33 
34 
35 // ===========================================================================
36 // method definitions
37 // ===========================================================================
38 bool
40  return genDone;
41 }
42 
43 
44 bool
46  return true;
47 }
48 
49 int
51  int FOOT = 1;
52  int BUS = 2;
53  int CAR = 4;
54 
55  int transp = 0;
56 
58  transp = FOOT;
59  if (myHousehold->getCarNbr() != 0) {
60  transp += CAR;
61  }
64  transp += BUS;
65  }
66  } else if (myHousehold->getCarNbr() == 0) {
67  double d1 = destination.distanceTo(myHousehold->getPosition());
69 
70  if (d1 > d2) {
71  transp = BUS;
72  } else {
73  transp = FOOT;
74  }
75  } else if (myHousehold->getCarNbr() != 0) { //all other cases
78  transp = CAR;
79  } else {
80  transp = CAR + BUS;
81  }
82  }
83  return transp;
84 }
85 
86 int
88  int FOOT = 1;
89  int BUS = 2;
90 
91  int available = 0;
92 
93  if (from.distanceTo(to) <= myStatData->maxFootDistance) {
94  available += FOOT;
95  }
98  available += BUS;
99  }
100  return available;
101 }
102 
103 
104 int
106  double dist = from.distanceTo(to);
107  return (int)(timePerKm * dist / 1000.0);
108 }
109 
110 
111 int
112 AGActivity::depHour(AGPosition from, AGPosition to, int arrival) {
113  // ?? departure.addDays(1); // in case of negative time: arrival < timeToDrive
114  //departure.setDay(0); // days are set to 0 because we want the time in the current day
115  return (arrival - timeToDrive(from, to));
116 }
117 
118 
119 int
120 AGActivity::arrHour(AGPosition from, AGPosition to, int departure) {
121  return (departure + timeToDrive(from, to));
122 }
123 
124 
125 int
126 AGActivity::randomTimeBetween(int begin, int end) {
127  if (0 > begin || begin > end) {
128  return -1;
129  }
130  if (begin == end) {
131  return begin;
132  }
133  int tAlea = RandHelper::rand(end - begin);
134  return (begin + tAlea);
135 }
136 
137 
138 std::list<AGTrip>&
140  return myPartialActivityTrips;
141 }
142 
143 
144 /****************************************************************************/
AGActivity::isGenerated
bool isGenerated()
Definition: AGActivity.cpp:39
AGActivity::arrHour
int arrHour(AGPosition from, AGPosition to, int departure)
Definition: AGActivity.cpp:120
AGActivity::possibleTranspMean
int possibleTranspMean(AGPosition destination)
Definition: AGActivity.cpp:50
AGHousehold::getCarNbr
int getCarNbr()
Definition: AGHousehold.cpp:85
AGPosition::minDistanceTo
double minDistanceTo(const std::list< AGPosition > &positions) const
Computes the distance to the closest position in a list.
Definition: AGPosition.cpp:69
AGHousehold::getPosition
AGPosition getPosition()
Definition: AGHousehold.cpp:189
AGPosition::distanceTo
double distanceTo(const AGPosition &otherPos) const
Computes the distance between two AGPosition objects.
Definition: AGPosition.cpp:63
AGDataAndStatistics::busStations
std::map< int, AGPosition > busStations
Definition: AGDataAndStatistics.h:69
AGActivity::myHousehold
AGHousehold * myHousehold
Definition: AGActivity.h:108
RandHelper::rand
static double rand(std::mt19937 *rng=0)
Returns a random real number in [0, 1)
Definition: RandHelper.h:60
AGHousehold.h
AGTime.h
AGActivity::availableTranspMeans
int availableTranspMeans(AGPosition from, AGPosition to)
Definition: AGActivity.cpp:87
AGActivity::timeToDrive
int timeToDrive(AGPosition from, AGPosition to)
Definition: AGActivity.cpp:105
AGActivity::randomTimeBetween
int randomTimeBetween(int begin, int end)
Definition: AGActivity.cpp:126
AGDataAndStatistics::maxFootDistance
double maxFootDistance
Definition: AGDataAndStatistics.h:60
AGPosition
A location in the 2D plane freely positioned on a street.
Definition: AGPosition.h:56
AGActivity.h
AGActivity::generateTrips
virtual bool generateTrips()=0
Definition: AGActivity.cpp:45
config.h
RandHelper.h
AGActivity::depHour
int depHour(AGPosition from, AGPosition to, int arrival)
Definition: AGActivity.cpp:112
AGActivity::myStatData
AGDataAndStatistics * myStatData
Definition: AGActivity.h:110
AGActivity::myPartialActivityTrips
std::list< AGTrip > myPartialActivityTrips
Definition: AGActivity.h:113
AGActivity::timePerKm
double timePerKm
Definition: AGActivity.h:116
AGActivity::getPartialActivityTrips
std::list< AGTrip > & getPartialActivityTrips()
Definition: AGActivity.cpp:139
AGActivity::genDone
bool genDone
Definition: AGActivity.h:115