54 while (static_cast<int>(
myAdults.size()) < numAdults) {
64 while (static_cast<int>(
myChildren.size()) < numChilds) {
72 int peopleInNeed =
static_cast<int>(
myAdults.size()) - static_cast<int>(
myCars.size());
73 while (peopleInNeed > 0) {
83 int numCar =
static_cast<int>(
myCars.size() + 1);
89 return static_cast<int>(
myCars.size());
99 return static_cast<int>(
myAdults.size());
102 const std::list<AGAdult>&
107 const std::list<AGChild>&
112 const std::list<AGCar>&
138 std::list<AGChild>::iterator itC;
139 std::list<AGAdult>::iterator itA;
141 if (itC->haveASchool()) {
142 if (itC->leaveSchool()) {
150 if (itA->isWorking()) {
151 itA->resignFromWorkPosition();
158 std::cout <<
"Not enough work positions in AGHousehold::regenerate. Should not happen!" << std::endl;
165 std::list<AGChild>::iterator it;
166 bool oneRemainsAtHome =
false;
170 oneRemainsAtHome =
true;
173 return !oneRemainsAtHome;
178 std::list<AGAdult>::iterator it;
181 std::cout <<
"Not enough free work positions in AGHousehold::allocateAdultsWork. Should not happen." << std::endl;
const std::list< AGAdult > & getAdults() const
void generateCars(double rate)
bool allocateChildrenSchool()
static double rand(std::mt19937 *rng=0)
Returns a random real number in [0, 1)
A location in the 2D plane freely positioned on a street.
AGDataAndStatistics & statData
int getRandomPopDistributed(int n, int m)
An adult person who can have a job.
void generatePeople(int numAdults, int numChilds, bool firstRetired)
double minDistanceTo(const std::list< AGPosition > &positions) const
Computes the distance to the closest position in a list.
const std::list< AGChild > & getChildren() const
std::list< AGSchool > schools
std::list< AGAdult > myAdults
bool isCloseFromPubTransport(std::list< AGPosition > *pubTransport)
bool retiredHouseholders()
std::list< AGCar > myCars
bool allocateAdultsWork()
std::list< AGChild > myChildren
std::vector< AGWorkPosition > workPositions
const std::list< AGCar > & getCars() const