def reset(self): super(BoatRollingAverage, self).reset() self.buffer = CircularBuffer(size=self.meters_to_average) self.buffer.append(self.other_boat.pace) self.pace = BoatRollingAverage.DEFAULT_PACE self.current_distance = self.other_boat.distance self.next_update_at = self.current_distance self.next_update_pace_at = self.current_distance
class BoatRollingAverage(BoatConstant): DEFAULT_PACE = 220 def __init__(self, name, other_boat, meters_to_average=500, meters_between_pace_updates=10): super(BoatRollingAverage, self).__init__(name) self.other_boat = other_boat self.meters_to_average = meters_to_average self.meters_between_pace_updates = meters_between_pace_updates self.reset() def reset(self): super(BoatRollingAverage, self).reset() self.buffer = CircularBuffer(size=self.meters_to_average) self.buffer.append(self.other_boat.pace) self.pace = BoatRollingAverage.DEFAULT_PACE self.current_distance = self.other_boat.distance self.next_update_at = self.current_distance self.next_update_pace_at = self.current_distance def move(self, timeGone): # time to record another pace? if self.other_boat.distance > self.next_update_at: self.next_update_at += 1 self.buffer.append(self.other_boat.pace) log.debug("storing %s for dist %s" % (self.other_boat.pace, self.other_boat.distance)) # time update this boat's pace to the current rolling average? if self.other_boat.distance > self.next_update_pace_at: self.next_update_pace_at += self.meters_between_pace_updates newPace = int(self.buffer.average + 0.5) if newPace != self.pace and newPace != 0: log.debug("changing pace to %s" % newPace) self.changePace(newPace) super(BoatRollingAverage, self).move(timeGone)
class BoatRollingAverage(BoatConstant): DEFAULT_PACE = 220 def __init__(self, name, other_boat, meters_to_average=500, meters_between_pace_updates=10): super(BoatRollingAverage, self).__init__(name) self.other_boat = other_boat self.meters_to_average = meters_to_average self.meters_between_pace_updates=meters_between_pace_updates self.reset() def reset(self): super(BoatRollingAverage, self).reset() self.buffer = CircularBuffer(size=self.meters_to_average) self.buffer.append(self.other_boat.pace) self.pace = BoatRollingAverage.DEFAULT_PACE self.current_distance = self.other_boat.distance self.next_update_at = self.current_distance self.next_update_pace_at = self.current_distance def move(self, timeGone): # time to record another pace? if self.other_boat.distance > self.next_update_at: self.next_update_at += 1 self.buffer.append(self.other_boat.pace) log.debug("storing %s for dist %s"%(self.other_boat.pace, self.other_boat.distance)) # time update this boat's pace to the current rolling average? if self.other_boat.distance > self.next_update_pace_at: self.next_update_pace_at += self.meters_between_pace_updates newPace = int(self.buffer.average+0.5) if newPace != self.pace and newPace != 0: log.debug("changing pace to %s"%newPace) self.changePace(newPace) super(BoatRollingAverage, self).move(timeGone)