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