Thanks for the thoughtful discussion, - Adding MSMoveReminder::notifyIdle sounds reasonable but l'll have to discuss this with @behrisch who designed the MoveReminder architecture and may have further ideas about it. - I would call the new method MSVehicle::workOnIdleReminders (I analogy to workOnMoveReminders) because it might be used for other things besides emissions (https://github.com/eclipse/sumo/issues/2233) - I think it would be ok to let parking vehicles keep their moveReminders and let MeanData handle notifyIdle. This would be consistent with vehicles that stop directly on the road. - You do not need to wory about performance impact from emission coloring because the overhead of that check is minimial in comparisson to the emission calculation. The simulation runs in it's own thread anyway. However, I would separate the GUI stuff out into a separate pull request - having NOTIFICATION_PARKING_REROUTE as the last part of the enum does not hurt because it is never a reason for leaveLane. (though it should probably be moved within the enum for consistency)
best regards, Jakob Am Di., 25. Feb. 2020 um 22:53 Uhr schrieb The div <d...@thoda.uk>: > Hi again, > On a first look at the other kind of emission outputs: > > trip information - I tried the following approach and it seems to behave: > a) added MSDevice_Emissions::notifyIdle(SUMOTrafficObject& veh) + > (virtual method in MSMoveReminders) which calls > myEmissions.addScaled > b) added MSVehicle::addIdleEmissions() which iterates over the > move reminders invoking notifyIdle > c) invoke MSVehicle::addIdleEmissions() from > MSVehicleTransfer::checkInsertions when the insertion fails > > Color vehicles by emission: > The current code does not recognise that the vehicle is not on the net - > so a parked or stopped vehicle never has zero emissions > - can be corrected by changing the rellevant cases in > GUIVehicle::getColorValue to the equivalent of: > case 14: > if ( isOnRoad() || isTryingToEnterNet() ) > return getCO2Emissions(); > else > return 0.; > > but I might be nervous about a performance impact for large > simulations? > > > Edge/Lane emission aggregations > I can't see a clean way to do these - the parked vehicle has lost the > MSMeanData_Emissions::MSLaneMeanDataValues MSMoveReminder > adding this back then handling lane re-entry would be a horrible > kludge. > > Arguably the Edge/Lane emissions should not have the parking related > emissions anyway - it feels like the correct approach would be to add a > specific MSMoveReminder for parking emissions - then add it when the > vehicle is parked and remove when re-entering the lane? > > > Any thoughts welcome! > > fyi: > Whilst looking at this I noted that the definition of enum > Notification in MSMoveReminder.h has NOTIFICATION_PARKING_REROUTE > appended to the enum. > however the enum has a comment, ("All notifications below must result in > the vehicle not being on the net..."), that suggests > NOTIFICATION_PARKING_REROUTE is in the wrong place? > > cheers > div > -------- Original Message -------- > > On 23 Feb 2020, 21:14, Jakob Erdmann < namdre.s...@gmail.com> wrote: > > > The approach sounds reasonable. However, it won't cover all kinds of > emission outputs: > https://sumo.dlr.de/docs/Models/Emissions.html#outputs > > cheers, > Jakob > > > _______________________________________________ > sumo-dev mailing list > sumo-dev@eclipse.org > To change your delivery options, retrieve your password, or unsubscribe > from this list, visit > https://www.eclipse.org/mailman/listinfo/sumo-dev >
_______________________________________________ sumo-dev mailing list sumo-dev@eclipse.org To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/sumo-dev