122 if (trip.
getType() !=
"default") {
128 depTime += variation;
129 if (depTime.getDay() > 0) {
130 trip.
setDay(depTime.getDay());
131 trip.
setDepTime(depTime.getSecondsInCurrentDay());
142 if (trips.size() != 0) {
143 std::list<AGTrip>::iterator it;
145 int firstTrip = trips.front().getTime() + trips.front().getDay() * 86400;
146 int lastTrip = trips.front().getTime() + trips.front().getDay() * 86400;
147 std::map<int, int> histogram;
148 for (
int i = 0; i < 100; ++i) {
152 for (it = trips.begin(); it != trips.end(); ++it) {
155 if (it->getTime() + 86400 * it->getDay() > lastTrip) {
156 lastTrip = it->getTime() + 86400 * it->getDay();
158 if (it->getTime() + 86400 * it->getDay() < firstTrip) {
159 firstTrip = it->getTime() + 86400 * it->getDay();
162 ++histogram[(it->getTime()) / 3600];
168 std::cout <<
"first real trip: " << first.getDay() <<
", " << first.getHour() <<
":" << first.getMinute() <<
":" << first.getSecond() << std::endl;
170 for (
int i = 0; i < 100; ++i) {
171 if (histogram[i] > 0) {
172 std::cout <<
"histogram[ hour " << i <<
" ] = " << histogram[i] << std::endl;
176 std::cout <<
"No real trips were generated" << std::endl;
195 std::list<AGTrip> expTrips;
196 std::map<std::string, int> carUsed;
197 std::list<AGTrip>::iterator it;
199 for (it = acts.
trips.begin(); it != acts.
trips.end(); ++it) {
202 AGTrip tr(it->getDep(), it->getArr(), it->getVehicleName(), it->getTime(), currday);
204 if (carUsed.find(tr.getVehicleName()) != carUsed.end()) {
205 ++carUsed.find(tr.getVehicleName())->second;
207 carUsed[tr.getVehicleName()] = 1;
209 std::ostringstream os;
210 os << tr.getVehicleName() <<
":" << carUsed.find(tr.getVehicleName())->second;
211 tr.setVehicleName(os.str());
212 tr.addLayOverWithoutDestination(*it);
215 expTrips.push_back(tr);
221 AGTrip tr(it->getDep(), it->getArr(), it->getVehicleName(), it->getTime(), it->getDay());
223 if (carUsed.find(tr.getVehicleName()) != carUsed.end()) {
224 ++carUsed.find(tr.getVehicleName())->second;
226 carUsed[tr.getVehicleName()] = 1;
228 std::ostringstream os;
229 os << tr.getVehicleName() <<
":" << carUsed.find(tr.getVehicleName())->second;
230 tr.setVehicleName(os.str());
231 tr.addLayOverWithoutDestination(*it);
234 expTrips.push_back(tr);
241 std::cout <<
"total trips generated: " << acts.
trips.size() << std::endl;
242 std::cout <<
"total trips finally taken: " << expTrips.size() << std::endl;
248 std::cout <<
"...sorted by departure time.\n" << std::endl;
void generateActivityTrips()
void varDepTime(AGTrip &trip) const
double departureVariation
OutputDevice & outputFile
The generated routes.
AGDataAndStatistics & statData
void setType(std::string type)
void makeActivityTrips(int days=1, int beginTime=0, int endTime=0)
build activities and trips of the population and generate routes
void generatePopulation()
static bool runParser(GenericSAXHandler &handler, const std::string &file, const bool isNet=false)
Runs the given handler on the given file; returns if everything's ok.
#define PROGRESS_FAILED_MESSAGE()
void setDepTime(int time)
static double randNorm(double mean, double variance, std::mt19937 *rng=0)
Access to a random number from a normal distribution.
void generateWorkPositions()
std::list< AGTrip > trips
#define PROGRESS_BEGIN_MESSAGE(msg)
bool timeTripValidation(const AGTrip &trip) const
validation: compatibility of the given trip
void generateOutputFile(std::list< AGTrip > &trips)
generate the output file (trips or routes) using a trip list
void addTrip(const AGTrip &trip)
void importInfoCity()
build the internal city
#define PROGRESS_DONE_MESSAGE()
const std::string & getType() const