51 while (static_cast<int>(
myAdults.size()) < numAdults) {
61 while (static_cast<int>(
myChildren.size()) < numChilds) {
69 int peopleInNeed =
static_cast<int>(
myAdults.size()) - static_cast<int>(
myCars.size());
70 while (peopleInNeed > 0) {
80 int numCar =
static_cast<int>(
myCars.size() + 1);
86 return static_cast<int>(
myCars.size());
96 return static_cast<int>(
myAdults.size());
99 const std::list<AGAdult>&
104 const std::list<AGChild>&
109 const std::list<AGCar>&
135 std::list<AGChild>::iterator itC;
136 std::list<AGAdult>::iterator itA;
138 if (itC->haveASchool()) {
139 if (itC->leaveSchool()) {
147 if (itA->isWorking()) {
148 itA->resignFromWorkPosition();
155 std::cout <<
"Not enough work positions in AGHousehold::regenerate. Should not happen!" << std::endl;
162 std::list<AGChild>::iterator it;
163 bool oneRemainsAtHome =
false;
167 oneRemainsAtHome =
true;
170 return !oneRemainsAtHome;
175 std::list<AGAdult>::iterator it;
178 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