38 #include "../city/AGCar.h"
79 std::list<AGChild>::const_iterator itC;
81 if (itC->haveASchool()) {
92 std::list<AGAdult>::const_iterator itA;
94 if (itA->isWorking()) {
113 std::list<AGAdult>::iterator it;
141 std::list<AGAdult>::const_iterator itUA;
143 if (! itUA->isWorking()) {
161 std::list<AGAdult>::const_iterator itDriA;
169 if (!itDriA->getWorkPosition().getPosition().getStreet().allows(
SVC_PASSENGER)) {
177 std::list<AGAdult>::iterator itAccA;
183 std::list<AGChild>::iterator itAccC;
208 std::list<AGTrip>::iterator it1, it2;
217 diff1 = it2->getTime() - it1->getRideBackArrTime(this->
timePerKm);
218 diff2 = it1->getTime() - it2->getRideBackArrTime(this->
timePerKm);
220 if (diff1 < 0 || diff2 < 0) {
222 arrTime = it2->getArrTime(this->
timePerKm);
223 it2->addLayOver(*it1);
224 it2->setDepTime(it2->estimateDepTime(arrTime, this->timePerKm));
227 arrTime = it1->getArrTime(this->
timePerKm);
228 it1->addLayOver(*it2);
229 it1->setDepTime(it1->estimateDepTime(arrTime, this->timePerKm));
247 std::list<AGTrip>::iterator itAccT;
248 std::list<AGTrip>::iterator itDriT;
249 std::list<AGAdult>::iterator itA;
252 if (itAccT->getArrTime(this->timePerKm) < itDriT->getArrTime(this->
timePerKm)) {
257 if (!itA->isWorking()) {
259 }
else if (itAccT->getRideBackArrTime(this->timePerKm) < itA->getWorkPosition().getOpening()) {
274 std::list<AGTrip>::iterator itAccT;
275 std::list<AGTrip>::iterator itDriT;
276 std::list<AGAdult>::iterator itA;
286 if (itAccT->getArrTime(this->timePerKm) < itDriT->getArrTime(this->
timePerKm) && !alreadyDone) {
288 if (itAccT->getRideBackArrTime(this->timePerKm) < itDriT->getTime()) {
290 itAccT->setVehicleName(itDriT->getVehicleName());
291 itAccT->addLayOver(itAccT->getArr());
297 arrTime = itDriT->getArrTime(this->
timePerKm);
298 itDriT->addLayOver(*itAccT);
299 itDriT->setDepTime(itDriT->estimateDepTime(arrTime, this->timePerKm));
309 if (!itA->isWorking() && !alreadyDone) {
311 if (nameC.size() != 0) {
313 itAccT->addLayOver(itAccT->getArr());
318 }
else if (itAccT->getRideBackArrTime(this->timePerKm) < itA->getWorkPosition().getOpening() && !alreadyDone) {
320 if (nameC.size() != 0) {
322 itAccT->addLayOver(itAccT->getArr());
343 if (itA->getWorkPosition().getPosition() == itDriT->getArr()) {
344 AGTrip trip(itA->getWorkPosition().getPosition(),
myHousehold->
getPosition(), itDriT->getVehicleName(), itA->getWorkPosition().getClosing());
355 std::string nameCar =
"";
356 std::string nameCarUsed =
"";
359 nameCarUsed =
tempTrip.front().getVehicleName();
364 if (nameCarUsed.size() != 0) {
378 std::list<AGAdult>::const_iterator itUA;
380 if (! itUA->isWorking()) {
int depHour(AGPosition from, AGPosition to, int arrival)
void makePossibleDriversDrive()
const std::list< AGCar > & getCars() const
const AGStreet & getStreet() const
Provides the street this AGPosition is located on.
std::list< AGAdult > notNeedingDrivers
std::list< AGTrip > tempAccTrip
SUMOReal getPosition() const
Provides the relative position of this AGPosition on the street.
bool allows(const SUMOVehicleClass vclass) const
Returns whether the given vehicle class is allowed on this street.
std::list< AGAdult > adultNeedingCarAccompaniment
int availableTranspMeans(AGPosition from, AGPosition to)
AGHousehold * myHousehold
std::list< AGAdult > personsDrivingCars
const std::list< AGAdult > & getAdults() const
bool checkDriversScheduleMatching()
vehicle is a passenger car (a "normal" car)
std::list< AGAdult > workingPeoplePossCar
std::list< AGChild > childrenNeedingCarAccompaniment
std::list< AGTrip > tempTrip
int possibleTranspMean(AGPosition destination)
std::list< AGTrip > myPartialActivityTrips
unsigned int getAdultNbr()
void buildChildrenAccompaniment()
void buildWorkDestinations()
std::string getUnusedCar()
bool checkAndBuildTripConsistancy()
const std::list< AGChild > & getChildren() const