int AGActivity::availableTranspMeans(AGPosition from, AGPosition to) { int FOOT = 1; int BUS = 2; int available = 0; if (from.distanceTo(to) <= myStatData->maxFootDistance) { available += FOOT; } if (from.minDistanceTo(myStatData->busStations) <= myStatData->maxFootDistance && to.minDistanceTo(myStatData->busStations) <= myStatData->maxFootDistance) { available += BUS; } return available; }
int AGActivity::possibleTranspMean(AGPosition destination) { int FOOT = 1; int BUS = 2; int CAR = 4; int transp = 0; if (destination.distanceTo(myHousehold->getPosition()) <= myStatData->maxFootDistance) { transp = FOOT; if (myHousehold->getCarNbr() != 0) { transp += CAR; } if (destination.minDistanceTo(myStatData->busStations) <= myStatData->maxFootDistance && myHousehold->getPosition().minDistanceTo(myStatData->busStations) <= myStatData->maxFootDistance) { transp += BUS; } } else if (myHousehold->getCarNbr() == 0) { SUMOReal d1 = destination.distanceTo(myHousehold->getPosition()); SUMOReal d2 = destination.minDistanceTo(myStatData->busStations) + myHousehold->getPosition().minDistanceTo(myStatData->busStations); if (d1 > d2) { transp = BUS; } else { transp = FOOT; } } else if (myHousehold->getCarNbr() != 0) { //all other cases if (destination.minDistanceTo(myStatData->busStations) > myStatData->maxFootDistance || myHousehold->getPosition().minDistanceTo(myStatData->busStations) > myStatData->maxFootDistance) { transp = CAR; } else { transp = CAR + BUS; } } return transp; }