48 while (static_cast<int>(
myAdults.size()) < numAdults) {
58 while (static_cast<int>(
myChildren.size()) < numChilds) {
66 int peopleInNeed =
static_cast<int>(
myAdults.size()) - static_cast<int>(
myCars.size());
67 while (peopleInNeed > 0) {
77 int numCar =
static_cast<int>(
myCars.size() + 1);
83 return static_cast<int>(
myCars.size());
93 return static_cast<int>(
myAdults.size());
96 const std::list<AGAdult>&
101 const std::list<AGChild>&
106 const std::list<AGCar>&
132 std::list<AGChild>::iterator itC;
133 std::list<AGAdult>::iterator itA;
135 if (itC->haveASchool()) {
136 if (itC->leaveSchool()) {
144 if (itA->isWorking()) {
145 itA->resignFromWorkPosition();
152 std::cout <<
"Not enough work positions in AGHousehold::regenerate. Should not happen!" << std::endl;
159 std::list<AGChild>::iterator it;
160 bool oneRemainsAtHome =
false;
164 oneRemainsAtHome =
true;
167 return !oneRemainsAtHome;
172 std::list<AGAdult>::iterator it;
175 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