void MSDevice_BTsender::buildVehicleDevices(SUMOVehicle& v, std::vector<MSDevice*>& into) { if (equippedByDefaultAssignmentOptions(OptionsCont::getOptions(), "btsender", v)) { MSDevice_BTsender* device = new MSDevice_BTsender(v, "btsender_" + v.getID()); into.push_back(device); } }
void MSDevice_Emissions::buildVehicleDevices(SUMOVehicle& v, std::vector<MSVehicleDevice*>& into) { if (equippedByDefaultAssignmentOptions(OptionsCont::getOptions(), "emissions", v, false)) { // build the device MSDevice_Emissions* device = new MSDevice_Emissions(v, "emissions_" + v.getID()); into.push_back(device); } }
void MSDevice_FCD::buildVehicleDevices(SUMOVehicle& v, std::vector<MSVehicleDevice*>& into) { OptionsCont& oc = OptionsCont::getOptions(); if (equippedByDefaultAssignmentOptions(oc, "fcd", v, oc.isSet("fcd-output"))) { MSDevice_FCD* device = new MSDevice_FCD(v, "fcd_" + v.getID()); into.push_back(device); if (!myEdgeFilterInitialized) { initEdgeFilter(); } } }
void MSDevice_Routing::buildVehicleDevices(SUMOVehicle& v, std::vector<MSDevice*>& into) { bool needRerouting = v.getParameter().wasSet(VEHPARS_FORCE_REROUTE); OptionsCont& oc = OptionsCont::getOptions(); if (!needRerouting && oc.getFloat("device.rerouting.probability") == 0 && !oc.isSet("device.rerouting.explicit")) { // no route computation is modelled return; } needRerouting |= equippedByDefaultAssignmentOptions(OptionsCont::getOptions(), "rerouting", v); if (needRerouting) { // route computation is enabled myWithTaz = oc.getBool("device.rerouting.with-taz"); // build the device MSDevice_Routing* device = new MSDevice_Routing(v, "routing_" + v.getID(), string2time(oc.getString("device.rerouting.period")), string2time(oc.getString("device.rerouting.pre-period"))); into.push_back(device); // initialise edge efforts if not done before if (myEdgeEfforts.size() == 0) { const std::vector<MSEdge*>& edges = MSNet::getInstance()->getEdgeControl().getEdges(); const bool useLoaded = oc.getBool("device.rerouting.init-with-loaded-weights"); const SUMOReal currentSecond = STEPS2TIME(MSNet::getInstance()->getCurrentTimeStep()); for (std::vector<MSEdge*>::const_iterator i = edges.begin(); i != edges.end(); ++i) { while ((*i)->getNumericalID() >= (int)myEdgeEfforts.size()) { myEdgeEfforts.push_back(0); } if (useLoaded) { myEdgeEfforts[(*i)->getNumericalID()] = MSNet::getTravelTime(*i, 0, currentSecond); } else { myEdgeEfforts[(*i)->getNumericalID()] = (*i)->getCurrentTravelTime(); } } } // make the weights be updated if (myEdgeWeightSettingCommand == 0) { myEdgeWeightSettingCommand = new StaticCommand< MSDevice_Routing >(&MSDevice_Routing::adaptEdgeEfforts); MSNet::getInstance()->getEndOfTimestepEvents().addEvent( myEdgeWeightSettingCommand, 0, MSEventControl::ADAPT_AFTER_EXECUTION); myAdaptationWeight = oc.getFloat("device.rerouting.adaptation-weight"); myAdaptationInterval = string2time(oc.getString("device.rerouting.adaptation-interval")); } if (myWithTaz) { if (MSEdge::dictionary(v.getParameter().fromTaz + "-source") == 0) { WRITE_ERROR("Source district '" + v.getParameter().fromTaz + "' not known when rerouting '" + v.getID() + "'!"); return; } if (MSEdge::dictionary(v.getParameter().toTaz + "-sink") == 0) { WRITE_ERROR("Destination district '" + v.getParameter().toTaz + "' not known when rerouting '" + v.getID() + "'!"); return; } } } }
void MSDevice_BTreceiver::buildVehicleDevices(SUMOVehicle& v, std::vector<MSDevice*>& into) { OptionsCont& oc = OptionsCont::getOptions(); if (equippedByDefaultAssignmentOptions(oc, "btreceiver", v)) { MSDevice_BTreceiver* device = new MSDevice_BTreceiver(v, "btreceiver_" + v.getID()); into.push_back(device); if (!myWasInitialised) { new BTreceiverUpdate(); myWasInitialised = true; myRange = oc.getFloat("device.btreceiver.range"); myOffTime = oc.getFloat("device.btreceiver.offtime"); sRecognitionRNG.seed(oc.getInt("seed")); } } }
void MSDevice_Example::buildVehicleDevices(SUMOVehicle& v, std::vector<MSDevice*>& into) { OptionsCont& oc = OptionsCont::getOptions(); if (equippedByDefaultAssignmentOptions(oc, "example", v)) { // build the device // get custom vehicle parameter SUMOReal customParameter2 = -1; if (v.getParameter().knowsParameter("example")) { try { customParameter2 = TplConvert::_2SUMOReal(v.getParameter().getParameter("example", "-1").c_str()); } catch (...) { WRITE_WARNING("Invalid value '" + v.getParameter().getParameter("example", "-1") + "'for vehicle parameter 'example'"); } } else { std::cout << "vehicle '" << v.getID() << "' does not supply vehicle parameter 'example'. Using default of " << customParameter2 << "\n"; } // get custom vType parameter SUMOReal customParameter3 = -1; if (v.getVehicleType().getParameter().knowsParameter("example")) { try { customParameter3 = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("example", "-1").c_str()); } catch (...) { WRITE_WARNING("Invalid value '" + v.getVehicleType().getParameter().getParameter("example", "-1") + "'for vType parameter 'example'"); } } else { std::cout << "vehicle '" << v.getID() << "' does not supply vType parameter 'example'. Using default of " << customParameter3 << "\n"; } MSDevice_Example* device = new MSDevice_Example(v, "example_" + v.getID(), oc.getFloat("device.example.parameter"), customParameter2, customParameter3); into.push_back(device); } }
void MSDevice_Battery::buildVehicleDevices(SUMOVehicle& v, std::vector<MSDevice*>& into) { if (!equippedByDefaultAssignmentOptions(OptionsCont::getOptions(), "battery", v)) { return; } // Declare default parameters SUMOReal new_ActBatKap = 0; SUMOReal new_MaxBatKap = 0; SUMOReal new_PowerMax = 100; SUMOReal new_Mass = 1000; SUMOReal new_FrontSurfaceArea = 2; SUMOReal new_AirDragCoefficient = 0.4; SUMOReal new_InternalMomentOfInertia = 10; SUMOReal new_RadialDragCoefficient = 1; SUMOReal new_RollDragCoefficient = 0.5; SUMOReal new_ConstantPowerIntake = 10; SUMOReal new_PropulsionEfficiency = 0.5; SUMOReal new_RecuperationEfficiency = 0; SUMOReal new_LastAngle = 0; SUMOReal new_LastEnergy = 0; // MaxBatKap new_MaxBatKap = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("maximumBatteryCapacity", "0").c_str()); // ActBatKap if (v.getParameter().getParameter("actualBatteryCapacity", "-") == "-") { new_ActBatKap = new_MaxBatKap / 2.0; } else { new_ActBatKap = TplConvert::_2SUMOReal(v.getParameter().getParameter("actualBatteryCapacity", "0").c_str()); } // Power new_PowerMax = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("maximumPower", "100").c_str()); // Mass new_Mass = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("vehicleMass", "1000").c_str()); // FrontSurfaceArea new_FrontSurfaceArea = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("frontSurfaceArea", "2").c_str()); // AirDragCoefficient new_AirDragCoefficient = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("airDragCoefficient", "0.4").c_str()); // InternalMomentOfInertia new_InternalMomentOfInertia = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("internalMomentOfInertia", "10").c_str()); // Radial Drag Coefficient new_RadialDragCoefficient = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("radialDragCoefficient", "1").c_str()); // RollDragCoefficient new_RollDragCoefficient = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("rollDragCoefficient", "0.5").c_str()); // ConstantPowerIntake new_ConstantPowerIntake = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("constantPowerIntake", "10").c_str()); // PropulsionEfficiency new_PropulsionEfficiency = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("propulsionEfficiency", "0.5").c_str()); // RecuperationEfficiency new_RecuperationEfficiency = TplConvert::_2SUMOReal(v.getVehicleType().getParameter().getParameter("recuperationEfficiency", "0").c_str()); // constructor MSDevice_Battery* device = new MSDevice_Battery(v, "battery_" + v.getID(), new_ActBatKap, new_MaxBatKap, new_PowerMax, new_Mass, new_FrontSurfaceArea, new_AirDragCoefficient, new_InternalMomentOfInertia, new_RadialDragCoefficient, new_RollDragCoefficient, new_ConstantPowerIntake, new_PropulsionEfficiency, new_RecuperationEfficiency, new_LastAngle, new_LastEnergy); into.push_back(device); }