def __init__(self, lane_change_mode="no_lat_collide", model="LC2013", lc_strategic=1.0, lc_cooperative=1.0, lc_speed_gain=1.0, lc_keep_right=1.0, lc_look_ahead_left=2.0, lc_speed_gain_right=1.0, lc_sublane=1.0, lc_pushy=0, lc_pushy_gap=0.6, lc_assertive=1, lc_impatience=0, lc_time_to_impatience=float("inf"), lc_accel_lat=1.0, **kwargs): """Instantiate SumoLaneChangeParams.""" # check for deprecations (lcStrategic) if "lcStrategic" in kwargs: deprecation_warning(self, "lcStrategic", "lc_strategic") lc_strategic = kwargs["lcStrategic"] # check for deprecations (lcCooperative) if "lcCooperative" in kwargs: deprecation_warning(self, "lcCooperative", "lc_cooperative") lc_cooperative = kwargs["lcCooperative"] # check for deprecations (lcSpeedGain) if "lcSpeedGain" in kwargs: deprecation_warning(self, "lcSpeedGain", "lc_speed_gain") lc_speed_gain = kwargs["lcSpeedGain"] # check for deprecations (lcKeepRight) if "lcKeepRight" in kwargs: deprecation_warning(self, "lcKeepRight", "lc_keep_right") lc_keep_right = kwargs["lcKeepRight"] # check for deprecations (lcLookaheadLeft) if "lcLookaheadLeft" in kwargs: deprecation_warning(self, "lcLookaheadLeft", "lc_look_ahead_left") lc_look_ahead_left = kwargs["lcLookaheadLeft"] # check for deprecations (lcSpeedGainRight) if "lcSpeedGainRight" in kwargs: deprecation_warning(self, "lcSpeedGainRight", "lc_speed_gain_right") lc_speed_gain_right = kwargs["lcSpeedGainRight"] # check for deprecations (lcSublane) if "lcSublane" in kwargs: deprecation_warning(self, "lcSublane", "lc_sublane") lc_sublane = kwargs["lcSublane"] # check for deprecations (lcPushy) if "lcPushy" in kwargs: deprecation_warning(self, "lcPushy", "lc_pushy") lc_pushy = kwargs["lcPushy"] # check for deprecations (lcPushyGap) if "lcPushyGap" in kwargs: deprecation_warning(self, "lcPushyGap", "lc_pushy_gap") lc_pushy_gap = kwargs["lcPushyGap"] # check for deprecations (lcAssertive) if "lcAssertive" in kwargs: deprecation_warning(self, "lcAssertive", "lc_assertive") lc_assertive = kwargs["lcAssertive"] # check for deprecations (lcImpatience) if "lcImpatience" in kwargs: deprecation_warning(self, "lcImpatience", "lc_impatience") lc_impatience = kwargs["lcImpatience"] # check for deprecations (lcTimeToImpatience) if "lcTimeToImpatience" in kwargs: deprecation_warning(self, "lcTimeToImpatience", "lc_time_to_impatience") lc_time_to_impatience = kwargs["lcTimeToImpatience"] # check for deprecations (lcAccelLat) if "lcAccelLat" in kwargs: deprecation_warning(self, "lcAccelLat", "lc_accel_lat") lc_accel_lat = kwargs["lcAccelLat"] # check for valid model if model not in ["LC2013", "SL2015"]: logging.error("Invalid lane change model! Defaulting to LC2013") model = "LC2013" if model == "LC2013": self.controller_params = { "laneChangeModel": model, "lcStrategic": str(lc_strategic), "lcCooperative": str(lc_cooperative), "lcSpeedGain": str(lc_speed_gain), "lcKeepRight": str(lc_keep_right), # "lcLookaheadLeft": str(lcLookaheadLeft), # "lcSpeedGainRight": str(lcSpeedGainRight) } elif model == "SL2015": self.controller_params = { "laneChangeModel": model, "lcStrategic": str(lc_strategic), "lcCooperative": str(lc_cooperative), "lcSpeedGain": str(lc_speed_gain), "lcKeepRight": str(lc_keep_right), "lcLookaheadLeft": str(lc_look_ahead_left), "lcSpeedGainRight": str(lc_speed_gain_right), "lcSublane": str(lc_sublane), "lcPushy": str(lc_pushy), "lcPushyGap": str(lc_pushy_gap), "lcAssertive": str(lc_assertive), "lcImpatience": str(lc_impatience), "lcTimeToImpatience": str(lc_time_to_impatience), "lcAccelLat": str(lc_accel_lat) } # adjust the lane change mode value if isinstance(lane_change_mode, str) and lane_change_mode in LC_MODES: lane_change_mode = LC_MODES[lane_change_mode] elif not (isinstance(lane_change_mode, int) or isinstance(lane_change_mode, float)): logging.error("Setting lane change mode to default.") lane_change_mode = LC_MODES["no_lat_collide"] self.lane_change_mode = lane_change_mode
def add(self, veh_type, edge, name="flow", begin=1, end=2e6, vehs_per_hour=None, probability=None, **kwargs): r"""Specify a new inflow for a given type of vehicles and edge. Parameters ---------- veh_type : str type of vehicles entering the edge, must match one of the types set in the Vehicles class. edge : str starting edge for vehicles in this inflow. name : str, optional prefix for inflow vehicles begin : float, optional see Note end : float, optional see Note vehs_per_hour : float, optional see vehsPerHour in Note probability : float, optional see Note kwargs : dict, optional see Note Note ---- For information on the parameters start, end, vehs_per_hour, period, probability, number, as well as other vehicle type and routing parameters that may be added via \*\*kwargs, refer to: http://sumo.dlr.de/wiki/Definition_of_Vehicles,_Vehicle_Types,_and_Routes """ # check for deprecations (vehsPerHour) if "vehsPerHour" in kwargs: deprecation_warning(self, "vehsPerHour", "vehs_per_hour") vehs_per_hour = kwargs["vehsPerHour"] # delete since all parameters in kwargs are used again later del kwargs["vehsPerHour"] new_inflow = { "name": "%s_%d" % (name, self.num_flows), "vtype": veh_type, "edge": edge, "end": end } new_inflow.update(kwargs) if begin is not None: new_inflow["begin"] = begin if vehs_per_hour is not None: new_inflow["vehsPerHour"] = vehs_per_hour if probability is not None: new_inflow["probability"] = probability self.__flows.append(new_inflow) self.num_flows += 1
def __init__( self, speed_mode='right_of_way', accel=2.6, decel=4.5, sigma=0.5, tau=1.0, # past 1 at sim_step=0.1 you no longer see waves min_gap=2.5, max_speed=30, speed_factor=1.0, speed_dev=0.1, impatience=0.5, car_follow_model="IDM", **kwargs): """Instantiate SumoCarFollowingParams.""" # check for deprecations (minGap) if "minGap" in kwargs: deprecation_warning(self, "minGap", "min_gap") min_gap = kwargs["minGap"] # check for deprecations (maxSpeed) if "maxSpeed" in kwargs: deprecation_warning(self, "maxSpeed", "max_speed") max_speed = kwargs["maxSpeed"] # check for deprecations (speedFactor) if "speedFactor" in kwargs: deprecation_warning(self, "speedFactor", "speed_factor") speed_factor = kwargs["speedFactor"] # check for deprecations (speedDev) if "speedDev" in kwargs: deprecation_warning(self, "speedDev", "speed_dev") speed_dev = kwargs["speedDev"] # check for deprecations (carFollowModel) if "carFollowModel" in kwargs: deprecation_warning(self, "carFollowModel", "car_follow_model") car_follow_model = kwargs["carFollowModel"] # create a controller_params dict with all the specified parameters self.controller_params = { "accel": accel, "decel": decel, "sigma": sigma, "tau": tau, "minGap": min_gap, "maxSpeed": max_speed, "speedFactor": speed_factor, "speedDev": speed_dev, "impatience": impatience, "carFollowModel": car_follow_model, } # adjust the speed mode value if isinstance(speed_mode, str) and speed_mode in SPEED_MODES: speed_mode = SPEED_MODES[speed_mode] elif not (isinstance(speed_mode, int) or isinstance(speed_mode, float)): logging.error("Setting speed mode of to default.") speed_mode = SPEED_MODES["obey_safe_speed"] self.speed_mode = speed_mode
def __init__(self, lane_change_mode="no_lat_collide", model="LC2013", lc_strategic=1.0, lc_cooperative=1.0, lc_speed_gain=1.0, lc_keep_right=1.0, lc_look_ahead_left=2.0, lc_speed_gain_right=1.0, lc_sublane=1.0, lc_pushy=0, lc_pushy_gap=0.6, lc_assertive=1, lc_impatience=0, lc_time_to_impatience=float("inf"), lc_accel_lat=1.0, **kwargs): """Instantiate SumoLaneChangeParams. Attributes ---------- lane_change_mode : str or int, optional may be one of the following: * "no_lat_collide" (default): Human cars will not make lane changes, RL cars can lane change into any space, no matter how likely it is to crash * "strategic": Human cars make lane changes in accordance with SUMO to provide speed boosts * "aggressive": RL cars are not limited by sumo with regard to their lane-change actions, and can crash longitudinally * int values may be used to define custom lane change modes for the given vehicles, specified at: http://sumo.dlr.de/wiki/TraCI/Change_Vehicle_State#lane_change_mode_.280xb6.29 model: str, optional see laneChangeModel in Note lc_strategic: float, optional see lcStrategic in Note lc_cooperative: float, optional see lcCooperative in Note lc_speed_gain: float, optional see lcSpeedGain in Note lc_keep_right: float, optional see lcKeepRight in Note lc_look_ahead_left: float, optional see lcLookaheadLeft in Note lc_speed_gain_right: float, optional see lcSpeedGainRight in Note lc_sublane: float, optional see lcSublane in Note lc_pushy: float, optional see lcPushy in Note lc_pushy_gap: float, optional see lcPushyGap in Note lc_assertive: float, optional see lcAssertive in Note lc_impatience: float, optional see lcImpatience in Note lc_time_to_impatience: float, optional see lcTimeToImpatience in Note lc_accel_lat: float, optional see lcAccelLate in Note kwargs: dict used to handle deprecations Note ---- For a description of all params, see: http://sumo.dlr.de/wiki/Definition_of_Vehicles,_Vehicle_Types,_and_Routes """ # check for deprecations (lcStrategic) if "lcStrategic" in kwargs: deprecation_warning(self, "lcStrategic", "lc_strategic") lc_strategic = kwargs["lcStrategic"] # check for deprecations (lcCooperative) if "lcCooperative" in kwargs: deprecation_warning(self, "lcCooperative", "lc_cooperative") lc_cooperative = kwargs["lcCooperative"] # check for deprecations (lcSpeedGain) if "lcSpeedGain" in kwargs: deprecation_warning(self, "lcSpeedGain", "lc_speed_gain") lc_speed_gain = kwargs["lcSpeedGain"] # check for deprecations (lcKeepRight) if "lcKeepRight" in kwargs: deprecation_warning(self, "lcKeepRight", "lc_keep_right") lc_keep_right = kwargs["lcKeepRight"] # check for deprecations (lcLookaheadLeft) if "lcLookaheadLeft" in kwargs: deprecation_warning(self, "lcLookaheadLeft", "lc_look_ahead_left") lc_look_ahead_left = kwargs["lcLookaheadLeft"] # check for deprecations (lcSpeedGainRight) if "lcSpeedGainRight" in kwargs: deprecation_warning(self, "lcSpeedGainRight", "lc_speed_gain_right") lc_speed_gain_right = kwargs["lcSpeedGainRight"] # check for deprecations (lcSublane) if "lcSublane" in kwargs: deprecation_warning(self, "lcSublane", "lc_sublane") lc_sublane = kwargs["lcSublane"] # check for deprecations (lcPushy) if "lcPushy" in kwargs: deprecation_warning(self, "lcPushy", "lc_pushy") lc_pushy = kwargs["lcPushy"] # check for deprecations (lcPushyGap) if "lcPushyGap" in kwargs: deprecation_warning(self, "lcPushyGap", "lc_pushy_gap") lc_pushy_gap = kwargs["lcPushyGap"] # check for deprecations (lcAssertive) if "lcAssertive" in kwargs: deprecation_warning(self, "lcAssertive", "lc_assertive") lc_assertive = kwargs["lcAssertive"] # check for deprecations (lcImpatience) if "lcImpatience" in kwargs: deprecation_warning(self, "lcImpatience", "lc_impatience") lc_impatience = kwargs["lcImpatience"] # check for deprecations (lcTimeToImpatience) if "lcTimeToImpatience" in kwargs: deprecation_warning(self, "lcTimeToImpatience", "lc_time_to_impatience") lc_time_to_impatience = kwargs["lcTimeToImpatience"] # check for deprecations (lcAccelLat) if "lcAccelLat" in kwargs: deprecation_warning(self, "lcAccelLat", "lc_accel_lat") lc_accel_lat = kwargs["lcAccelLat"] # check for valid model if model not in ["LC2013", "SL2015"]: logging.error("Invalid lane change model! Defaulting to LC2013") model = "LC2013" if model == "LC2013": self.controller_params = { "laneChangeModel": model, "lcStrategic": str(lc_strategic), "lcCooperative": str(lc_cooperative), "lcSpeedGain": str(lc_speed_gain), "lcKeepRight": str(lc_keep_right), # "lcLookaheadLeft": str(lcLookaheadLeft), # "lcSpeedGainRight": str(lcSpeedGainRight) } elif model == "SL2015": self.controller_params = { "laneChangeModel": model, "lcStrategic": str(lc_strategic), "lcCooperative": str(lc_cooperative), "lcSpeedGain": str(lc_speed_gain), "lcKeepRight": str(lc_keep_right), "lcLookaheadLeft": str(lc_look_ahead_left), "lcSpeedGainRight": str(lc_speed_gain_right), "lcSublane": str(lc_sublane), "lcPushy": str(lc_pushy), "lcPushyGap": str(lc_pushy_gap), "lcAssertive": str(lc_assertive), "lcImpatience": str(lc_impatience), "lcTimeToImpatience": str(lc_time_to_impatience), "lcAccelLat": str(lc_accel_lat) } # adjust the lane change mode value if isinstance(lane_change_mode, str) and lane_change_mode in LC_MODES: lane_change_mode = LC_MODES[lane_change_mode] elif not (isinstance(lane_change_mode, int) or isinstance(lane_change_mode, float)): logging.error("Setting lane change mode to default.") lane_change_mode = LC_MODES["no_lat_collide"] self.lane_change_mode = lane_change_mode
def __init__( self, speed_mode='right_of_way', accel=1.0, decel=1.5, sigma=0.5, tau=1.0, # past 1 at sim_step=0.1 you no longer see waves min_gap=2.5, max_speed=30, speed_factor=1.0, speed_dev=0.1, impatience=0.5, car_follow_model="IDM", **kwargs): """Instantiate SumoCarFollowingParams. Attributes ---------- speed_mode : str or int, optional may be one of the following: * "right_of_way" (default): respect safe speed, right of way and brake hard at red lights if needed. DOES NOT respect max accel and decel which enables emergency stopping. Necessary to prevent custom models from crashing * "no_collide": Human and RL cars are preventing from reaching speeds that may cause crashes (also serves as a failsafe). Note: this may lead to collisions in complex networks * "aggressive": Human and RL cars are not limited by sumo with regard to their accelerations, and can crash longitudinally * "all_checks": all sumo safety checks are activated * int values may be used to define custom speed mode for the given vehicles, specified at: http://sumo.dlr.de/wiki/TraCI/Change_Vehicle_State#speed_mode_.280xb3.29 accel: float see Note decel: float see Note sigma: float see Note tau: float see Note min_gap: float see minGap Note max_speed: float see maxSpeed Note speed_factor: float see speedFactor Note speed_dev: float see speedDev in Note impatience: float see Note car_follow_model: str see carFollowModel in Note kwargs: dict used to handle deprecations Note ---- For a description of all params, see: http://sumo.dlr.de/wiki/Definition_of_Vehicles,_Vehicle_Types,_and_Routes """ # check for deprecations (minGap) if "minGap" in kwargs: deprecation_warning(self, "minGap", "min_gap") min_gap = kwargs["minGap"] # check for deprecations (maxSpeed) if "maxSpeed" in kwargs: deprecation_warning(self, "maxSpeed", "max_speed") max_speed = kwargs["maxSpeed"] # check for deprecations (speedFactor) if "speedFactor" in kwargs: deprecation_warning(self, "speedFactor", "speed_factor") speed_factor = kwargs["speedFactor"] # check for deprecations (speedDev) if "speedDev" in kwargs: deprecation_warning(self, "speedDev", "speed_dev") speed_dev = kwargs["speedDev"] # check for deprecations (carFollowModel) if "carFollowModel" in kwargs: deprecation_warning(self, "carFollowModel", "car_follow_model") car_follow_model = kwargs["carFollowModel"] # create a controller_params dict with all the specified parameters self.controller_params = { "accel": accel, "decel": decel, "sigma": sigma, "tau": tau, "minGap": min_gap, "maxSpeed": max_speed, "speedFactor": speed_factor, "speedDev": speed_dev, "impatience": impatience, "carFollowModel": car_follow_model, } # adjust the speed mode value if isinstance(speed_mode, str) and speed_mode in SPEED_MODES: speed_mode = SPEED_MODES[speed_mode] elif not (isinstance(speed_mode, int) or isinstance(speed_mode, float)): logging.error("Setting speed mode of to default.") speed_mode = SPEED_MODES["no_collide"] self.speed_mode = speed_mode
def __init__(self, model="LC2013", lc_strategic=1.0, lc_cooperative=1.0, lc_speed_gain=1.0, lc_keep_right=1.0, lc_look_ahead_left=2.0, lc_speed_gain_right=1.0, lc_sublane=1.0, lc_pushy=0, lc_pushy_gap=0.6, lc_assertive=1, lc_impatience=0, lc_time_to_impatience=float("inf"), lc_accel_lat=1.0, **kwargs): """Instantiate SumoLaneChangeParams. Attributes ---------- model: str, optional see laneChangeModel in Note lc_strategic: float, optional see lcStrategic in Note lc_cooperative: float, optional see lcCooperative in Note lc_speed_gain: float, optional see lcSpeedGain in Note lc_keep_right: float, optional see lcKeepRight in Note lc_look_ahead_left: float, optional see lcLookaheadLeft in Note lc_speed_gain_right: float, optional see lcSpeedGainRight in Note lc_sublane: float, optional see lcSublane in Note lc_pushy: float, optional see lcPushy in Note lc_pushy_gap: float, optional see lcPushyGap in Note lc_assertive: float, optional see lcAssertive in Note lc_impatience: float, optional see lcImpatience in Note lc_time_to_impatience: float, optional see lcTimeToImpatience in Note lc_accel_lat: float, optional see lcAccelLate in Note kwargs: dict used to handle deprecations Note ---- For a description of all params, see: http://sumo.dlr.de/wiki/Definition_of_Vehicles,_Vehicle_Types,_and_Routes """ # check for deprecations (lcStrategic) if "lcStrategic" in kwargs: deprecation_warning(self, "lcStrategic", "lc_strategic") lc_strategic = kwargs["lcStrategic"] # check for deprecations (lcCooperative) if "lcCooperative" in kwargs: deprecation_warning(self, "lcCooperative", "lc_cooperative") lc_cooperative = kwargs["lcCooperative"] # check for deprecations (lcSpeedGain) if "lcSpeedGain" in kwargs: deprecation_warning(self, "lcSpeedGain", "lc_speed_gain") lc_speed_gain = kwargs["lcSpeedGain"] # check for deprecations (lcKeepRight) if "lcKeepRight" in kwargs: deprecation_warning(self, "lcKeepRight", "lc_keep_right") lc_keep_right = kwargs["lcKeepRight"] # check for deprecations (lcLookaheadLeft) if "lcLookaheadLeft" in kwargs: deprecation_warning(self, "lcLookaheadLeft", "lc_look_ahead_left") lc_look_ahead_left = kwargs["lcLookaheadLeft"] # check for deprecations (lcSpeedGainRight) if "lcSpeedGainRight" in kwargs: deprecation_warning(self, "lcSpeedGainRight", "lc_speed_gain_right") lc_speed_gain_right = kwargs["lcSpeedGainRight"] # check for deprecations (lcSublane) if "lcSublane" in kwargs: deprecation_warning(self, "lcSublane", "lc_sublane") lc_sublane = kwargs["lcSublane"] # check for deprecations (lcPushy) if "lcPushy" in kwargs: deprecation_warning(self, "lcPushy", "lc_pushy") lc_pushy = kwargs["lcPushy"] # check for deprecations (lcPushyGap) if "lcPushyGap" in kwargs: deprecation_warning(self, "lcPushyGap", "lc_pushy_gap") lc_pushy_gap = kwargs["lcPushyGap"] # check for deprecations (lcAssertive) if "lcAssertive" in kwargs: deprecation_warning(self, "lcAssertive", "lc_assertive") lc_assertive = kwargs["lcAssertive"] # check for deprecations (lcImpatience) if "lcImpatience" in kwargs: deprecation_warning(self, "lcImpatience", "lc_impatience") lc_impatience = kwargs["lcImpatience"] # check for deprecations (lcTimeToImpatience) if "lcTimeToImpatience" in kwargs: deprecation_warning(self, "lcTimeToImpatience", "lc_time_to_impatience") lc_time_to_impatience = kwargs["lcTimeToImpatience"] # check for deprecations (lcAccelLat) if "lcAccelLat" in kwargs: deprecation_warning(self, "lcAccelLat", "lc_accel_lat") lc_accel_lat = kwargs["lcAccelLat"] # check for valid model if model not in ["LC2013", "SL2015"]: logging.error("Invalid lane change model! Defaulting to LC2013") model = "LC2013" if model == "LC2013": self.controller_params = { "laneChangeModel": model, "lcStrategic": str(lc_strategic), "lcCooperative": str(lc_cooperative), "lcSpeedGain": str(lc_speed_gain), "lcKeepRight": str(lc_keep_right), # "lcLookaheadLeft": str(lcLookaheadLeft), # "lcSpeedGainRight": str(lcSpeedGainRight) } elif model == "SL2015": self.controller_params = { "laneChangeModel": model, "lcStrategic": str(lc_strategic), "lcCooperative": str(lc_cooperative), "lcSpeedGain": str(lc_speed_gain), "lcKeepRight": str(lc_keep_right), "lcLookaheadLeft": str(lc_look_ahead_left), "lcSpeedGainRight": str(lc_speed_gain_right), "lcSublane": str(lc_sublane), "lcPushy": str(lc_pushy), "lcPushyGap": str(lc_pushy_gap), "lcAssertive": str(lc_assertive), "lcImpatience": str(lc_impatience), "lcTimeToImpatience": str(lc_time_to_impatience), "lcAccelLat": str(lc_accel_lat) }
def __init__( self, accel=1.0, decel=1.5, sigma=0.5, tau=1.0, # past 1 at sim_step=0.1 you no longer see waves min_gap=2.5, max_speed=30, speed_factor=1.0, speed_dev=0.1, impatience=0.5, car_follow_model="IDM", **kwargs): """Instantiate SumoCarFollowingParams. Attributes ---------- accel: float see Note decel: float see Note sigma: float see Note tau: float see Note min_gap: float see minGap Note max_speed: float see maxSpeed Note speed_factor: float see speedFactor Note speed_dev: float see speedDev in Note impatience: float see Note car_follow_model: str see carFollowModel in Note kwargs: dict used to handle deprecations Note ---- For a description of all params, see: http://sumo.dlr.de/wiki/Definition_of_Vehicles,_Vehicle_Types,_and_Routes """ # check for deprecations (minGap) if "minGap" in kwargs: deprecation_warning(self, "minGap", "min_gap") min_gap = kwargs["minGap"] # check for deprecations (maxSpeed) if "maxSpeed" in kwargs: deprecation_warning(self, "maxSpeed", "max_speed") max_speed = kwargs["maxSpeed"] # check for deprecations (speedFactor) if "speedFactor" in kwargs: deprecation_warning(self, "speedFactor", "speed_factor") speed_factor = kwargs["speedFactor"] # check for deprecations (speedDev) if "speedDev" in kwargs: deprecation_warning(self, "speedDev", "speed_dev") speed_dev = kwargs["speedDev"] # check for deprecations (carFollowModel) if "carFollowModel" in kwargs: deprecation_warning(self, "carFollowModel", "car_follow_model") car_follow_model = kwargs["carFollowModel"] # create a controller_params dict with all the specified parameters self.controller_params = { "accel": accel, "decel": decel, "sigma": sigma, "tau": tau, "minGap": min_gap, "maxSpeed": max_speed, "speedFactor": speed_factor, "speedDev": speed_dev, "impatience": impatience, "carFollowModel": car_follow_model, }
def deprecate(old, new): deprecation_warning(self, old, new) new_val = kwargs[old] del kwargs[old] return new_val