/* ------------------------------------------------------------------------- * MSTriggeredReader::UserCommand-methods * ----------------------------------------------------------------------- */ MSCalibrator::MSCalibrator_FileTriggeredChild::MSCalibrator_FileTriggeredChild( MSNet &net, const std::string &aXMLFilename, MSCalibrator &parent, MSVehicleControl &vc) throw() : MSTriggeredXMLReader(net, aXMLFilename), MSCalibratorChild(parent, vc), myHaveNext(false), myFlow(-1), myHaveInitialisedFlow(false), myRunningID(0) { myBeginTime = net.getCurrentTimeStep(); }
// =========================================================================== // method definitions // =========================================================================== MSTriggeredXMLReader::MSTriggeredXMLReader(MSNet& net, const std::string& filename) : MSTriggeredReader(net), SUMOSAXHandler(filename), myParser(0), myHaveMore(true) { Command* c = new WrappingCommand< MSTriggeredReader >(this, &MSTriggeredReader::wrappedExecute); MSNet::getInstance()->getInsertionEvents().addEvent(c, net.getCurrentTimeStep(), MSEventControl::NO_CHANGE); }
void MSNet::updateWeather() { OptionsCont &oc = OptionsCont::getOptions(); std::string currentTimeString, initialTimeString = MyHandler2::getInitialTimeString(); MSNet *net = MSNet::getInstance(); if(oc.getAnyVerbosity()>1) std::cout<<"----> void MSNet::updateWeather()"<<std::endl; if(oc.getAnyVerbosity()>2) std::cout<<"initialTimeString{"<<initialTimeString<<"}"<<std::endl; int tempTendingTo; if(oc.getSafeBool("rlwc")) { // Update time string to catch night or day becoming currentTimeString = net->makeTimeString(net->getCurrentTimeStep()); if(getCity()=="cambiano") { // Real Life simulation envtemp update // Month depending analysis if(extractMonth(initialTimeString) < 3 || extractMonth(initialTimeString) > 11) { // December, January or February if(net->isNight(currentTimeString)) tempTendingTo = 0; else tempTendingTo = 5; } else if(extractMonth(initialTimeString)<6) { // March, April or May if(net->isNight(currentTimeString)) tempTendingTo = 10; else tempTendingTo = 15; } else if(extractMonth(initialTimeString)<9) { // June, July or August if(net->isNight(currentTimeString)) tempTendingTo = 15; else tempTendingTo = 20; } else { // September, October or November if(net->isNight(currentTimeString)) tempTendingTo = 5; else tempTendingTo = 10; } // Real Life simulation envhum update if(rand()%10==0) { rand()%2==0? setCurrentEnvHum(getCurrentEnvHum() + ((float)rand()) / RAND_MAX) : setCurrentEnvHum(getCurrentEnvHum() - ((float)rand()) / RAND_MAX); } } else if(getCity()=="munchen") { // Real Life simulation envtemp update // Month depending analysis if((extractMonth(initialTimeString)<3)|| extractMonth(initialTimeString)>11) { // December, January or February if(net->isNight(currentTimeString)) tempTendingTo = 0; else tempTendingTo = 5; } else if(extractMonth(initialTimeString)<6) { // March, April or May if(net->isNight(currentTimeString)) tempTendingTo = 10; else tempTendingTo = 15; } else if(extractMonth(initialTimeString)<9) { // June, July or August if(net->isNight(currentTimeString)) tempTendingTo = 15; else tempTendingTo = 20; } else { // September, October or November if(net->isNight(currentTimeString)) tempTendingTo = 5; else tempTendingTo = 10; } // Real Life simulation envhum update if(rand() % 10 == 0) { (rand() % 2 == 0) ? setCurrentEnvHum(getCurrentEnvHum() + ((float)rand()) / RAND_MAX) : setCurrentEnvHum(getCurrentEnvHum() - ((float)rand()) / RAND_MAX); } } // Envtemp update if(rand() % 10 == 0) { if(rand() % 2 == 0) { // Adding if(getCurrentEnvTemp() > tempTendingTo) { rand() % 3 == 0 ? setCurrentEnvTemp(getCurrentEnvTemp() + ((float)rand()) / RAND_MAX) : setCurrentEnvTemp(getCurrentEnvTemp() - ((float)rand()) / RAND_MAX); } else { rand() % 2 == 0 ? setCurrentEnvTemp(getCurrentEnvTemp() + ((float)rand()) / RAND_MAX) : setCurrentEnvTemp(getCurrentEnvTemp() - ((float)rand()) / RAND_MAX); } } else { // Substracting if(getCurrentEnvTemp() > tempTendingTo) { rand() % 2 == 0 ? setCurrentEnvTemp(getCurrentEnvTemp() + ((float)rand()) / RAND_MAX) : setCurrentEnvTemp(getCurrentEnvTemp() - ((float)rand()) / RAND_MAX); } else { rand() % 3 == 0 ? setCurrentEnvTemp(getCurrentEnvTemp() - ((float)rand()) / RAND_MAX) : setCurrentEnvTemp(getCurrentEnvTemp() + ((float)rand()) / RAND_MAX); } } } } else if((oc.getSafeBool("rwc") || (oc.getSafeBool("rlwc") && (getCity() == "unknown")))) { tag: // Random envtemp update if(rand() % 10 == 0) { (rand() % 2 == 0) ? setCurrentEnvTemp(getCurrentEnvTemp() + ((float)rand())/RAND_MAX) : setCurrentEnvTemp(getCurrentEnvTemp() - ((float)rand())/RAND_MAX); } // Random envhum update if(rand()%10==0) { (rand()%2==0)? setCurrentEnvHum(getCurrentEnvHum()+((float)rand())/RAND_MAX) : setCurrentEnvHum(getCurrentEnvHum()-((float)rand())/RAND_MAX); } } // else weather is constant }