void lbann_callback_summary::save_histograms(model *m) { for (const auto& layer : m->get_layers()) { const std::string prefix = layer->get_name() + "/"; for (int i = 0; i < layer->get_num_children(); ++i) { AbsDistMatReadProxy<El::Device::CPU> acts(layer->get_activations(i)); m_summarizer->reduce_histogram(prefix + "activations" + std::to_string(i), acts.GetLocked(), m->get_cur_step()); } } for (const auto& w : m->get_weights()) { const std::string prefix = w->get_name() + "/"; AbsDistMatReadProxy<El::Device::CPU> weights(w->get_values()); m_summarizer->reduce_histogram(prefix + "weights", weights.GetLocked(), m->get_cur_step()); optimizer *opt = w->get_optimizer(); if (opt != nullptr) { AbsDistMatReadProxy<El::Device::CPU> gradients(opt->get_gradient()); m_summarizer->reduce_histogram(prefix + "weights_gradient", gradients.GetLocked(), m->get_cur_step()); } } }
void AGActivityGen::makeActivityTrips(int days, int beginSec, int endSec) { durationInDays = days; beginTime = beginSec; endTime = endSec; /** * making the activity trips */ AGActivities acts(&city, durationInDays + 1); acts.generateActivityTrips(); /** * validating the trips with the simulation's time limits */ //list<Trip>* trips = &(acts.trips); std::list<AGTrip> expTrips; std::map<std::string, int> carUsed; std::list<AGTrip>::iterator it; //multiplication of days for (it = acts.trips.begin(); it != acts.trips.end(); ++it) { if (it->isDaily()) { for (int currday = 1; currday < durationInDays + 2; ++currday) { AGTrip tr(it->getDep(), it->getArr(), it->getVehicleName(), it->getTime(), currday); tr.setType(it->getType()); if (carUsed.find(tr.getVehicleName()) != carUsed.end()) { ++carUsed.find(tr.getVehicleName())->second; } else { carUsed[tr.getVehicleName()] = 1; } std::ostringstream os; os << tr.getVehicleName() << ":" << carUsed.find(tr.getVehicleName())->second; tr.setVehicleName(os.str()); tr.addLayOverWithoutDestination(*it); //intermediate destinations are taken in account too varDepTime(tr); //slight variation on each "default" car if (timeTripValidation(tr)) { expTrips.push_back(tr); } //else // std::cout << "trop tard 1 pour " << tr.getVehicleName() << " " << tr.getTime() << " day: " << tr.getDay() << std::endl; } } else { AGTrip tr(it->getDep(), it->getArr(), it->getVehicleName(), it->getTime(), it->getDay()); tr.setType(it->getType()); if (carUsed.find(tr.getVehicleName()) != carUsed.end()) { ++carUsed.find(tr.getVehicleName())->second; } else { carUsed[tr.getVehicleName()] = 1; } std::ostringstream os; os << tr.getVehicleName() << ":" << carUsed.find(tr.getVehicleName())->second; tr.setVehicleName(os.str()); tr.addLayOverWithoutDestination(*it); //intermediate destinations are taken in account too varDepTime(tr); //slight variation on each "default" car if (timeTripValidation(tr)) { expTrips.push_back(tr); } //else // std::cout << "trop tard 2 pour " << tr.getVehicleName() << " " << tr.getTime() << " day: " << tr.getDay() << std::endl; } } std::cout << "total trips generated: " << acts.trips.size() << std::endl; std::cout << "total trips finally taken: " << expTrips.size() << std::endl; /** * re-ordering of trips: SUMO needs routes ordered by departure time. */ expTrips.sort(); //natural order of trips std::cout << "...sorted by departure time.\n" << std::endl; /** * trip file generation */ generateOutputFile(expTrips); }