classDiagram
%% Base SUMO vehicle
class MSVehicle {
+getCarFollowModel()
+getLaneChangeModel()
}
%% Plexe extension
class PlexeVehicle {
-MSCFModel* active_cfmodel
-MSLaneChangeModel* active_lcmodel
+setActiveCFModel(name)
+setActiveLCModel(name)
+switchModelsAtRuntime()
}
MSVehicle <|-- PlexeVehicle
%% Car-following models
class MSCFModel
class MSCFModel_EIDM
class MSCFModel_Krauss
class MSCFModel_ACC
class MSCFModel_PLEXE_CC
MSCFModel <|-- MSCFModel_EIDM
MSCFModel <|-- MSCFModel_Krauss
MSCFModel <|-- MSCFModel_ACC
MSCFModel <|-- MSCFModel_PLEXE_CC
%% Lane change models
class MSLaneChangeModel
class LC2013 {
}
class PlexeLCModel {
+collectiveLaneChange()
+leaderChecksFollowers()
}
MSLaneChangeModel <|-- LC2013
MSLaneChangeModel <|-- PlexeLCModel
%% Associations
PlexeVehicle --> MSCFModel : active_cfmodel
PlexeVehicle --> MSLaneChangeModel : active_lcmodel