def _run(self, context_index, simulation_id, group_pedestrians): self.time = 0.0 self.frames = 0 if group_pedestrians is not None and len(group_pedestrians) > 0: for group_member in group_pedestrians: '''should modify target position based on y''' (x, y) = group_member['position'] if y <= self.y_horizontal_line: del group_member['target'] group_member['target'] = self.target_upper else: del group_member['target'] group_member['target'] = self.target_below force_model.add_group_pedestrian(group_member) #pedestrian_id = group_member['pedestrian_id'] #friend_zone = group_member['friend_zone'] #print(str(pedestrian_id) + "-" + str(friend_zone)) self._init_drawing(simulation_id) finished = False try: while self._tick() and not finished: force_model.update_pedestrians() if self.drawing: self._draw() if (not self.frames % self.sample_frequency): self._plot_sample() if (not self.frames % self.frame_save_frequency): self._dump_frame(context_index, self.frames) self._revise_target() if (not self.frames % self.spawn_frequency): self._spawn_pedestrians(context_index) self.time += self.timestep self.frames += 1 if self._done(): finished = True except KeyboardInterrupt: pass if self.drawing: self._uninit_drawing()
def _run(self, context_index, simulation_id, group_pedestrians): self.time = 0.0 self.frames = 0 if group_pedestrians is not None and len(group_pedestrians) > 0: for group_member in group_pedestrians: force_model.add_group_pedestrian(group_member) #pedestrian_id = group_member['pedestrian_id'] #friend_zone = group_member['friend_zone'] #print(str(pedestrian_id) + "-" + str(friend_zone)) self._init_drawing(simulation_id) finished = False try: while self._tick() and not finished: force_model.update_pedestrians() if self.drawing: self._draw() if (not self.frames % self.sample_frequency): self._plot_sample() if (not self.frames % self.frame_save_frequency): self._dump_frame(context_index, self.frames) if (not self.frames % self.spawn_frequency): self._spawn_pedestrians(context_index) self.time += self.timestep self.frames += 1 if self._done(): finished = True except KeyboardInterrupt: pass if self.drawing: self._uninit_drawing()
def replay_frame(self, constant, index_simulation, time_replay, constant_target, constant_target_magnitude, in_group_a_strength, in_group_a_range, in_group_r_strength, in_group_r_range): frame = (time_replay / constants.frame_store_sample_frequency) * ( constants.frame_store_sample_frequency / constants.timestep) intframe = int(frame) #filename = str(constant) + "_" + str(index_simulation) + "_" + str(intframe) filename = "%s" % (str(in_group_r_strength) + "_" + str(in_group_a_strength) + "_" + str(constant) + "_" + str(index_simulation) + "_" + str(intframe)) index_simulation = index_simulation * 2 #filename = str(index_simulation) + "_" + str(intframe) frame_log_file = open( "%s.json" % os.path.join(constants.framecontext_dir, filename)) json_str = frame_log_file.read() currentframecontext = json.loads(json_str, cls=FrameContextLog_Decoder) pedestrian_list = currentframecontext.get_pedestrian_list() ''' set parameter ''' self.in_group_a_strength = in_group_a_strength self.in_group_a_range = in_group_a_range self.in_group_r_strength = in_group_r_strength self.in_group_r_range = in_group_r_range self.parameters['in_group_a_strength'] = in_group_a_strength self.parameters['in_group_a_range'] = in_group_a_range self.parameters['in_group_r_strength'] = in_group_r_strength self.parameters['in_group_r_range'] = in_group_r_range self.parameters['out_group_a_strength'] = self.parameters[ 'in_group_a_strength'] * (1 / constant) self.parameters['out_group_a_range'] = self.parameters[ 'in_group_a_range'] self.parameters['out_group_r_strength'] = self.parameters[ 'in_group_r_strength'] * constant self.parameters['out_group_r_range'] = self.parameters[ 'in_group_r_range'] self.parameters['target_a_strength'] = 22000000000 self.parameters['target_a_range'] = 435 self.parameters['constant_target'] = constant_target self.parameters[ 'constant_target_magnitude'] = constant_target_magnitude '''update position and target shift for pedestrian list ''' for pedestrian in pedestrian_list: position = (pedestrian['position'][0] - self.shift, pedestrian['position'][1]) # del pedestrian['position'] pedestrian['position'] = position target = (pedestrian['target'][0] - self.shift, pedestrian['target'][1]) # del pedestrian['target'] pedestrian['target'] = target simulation_id = "Replay frame" """ initialize social force model """ force_model.set_parameters(self.parameters) force_model.set_start_simulation_time(time_replay) self.time = time_replay self.frames = frame if pedestrian_list is not None and len(pedestrian_list) > 0: for group_member in pedestrian_list: '''should modify target position based on y''' (x, y) = group_member['position'] if y <= self.y_horizontal_line: del group_member['target'] group_member['target'] = self.target_upper else: del group_member['target'] group_member['target'] = self.target_below force_model.add_group_pedestrian(group_member) self._init_drawing(simulation_id) finished = False ###IMPORTANT PART FOR SHARED OBJECT constants.tracked_pedestrian_id = -1 """ initialize the real-time plot """ self.pedestrian_track = Pedestrian_Track(self.time) self.tracking_sample_frequency = int(constants.plot_sample_frequency / (2 * self.timestep)) count = 0 try: while self._tick() and not finished: force_model.update_pedestrians() self._draw() self._revise_target() if (not self.frames % self.spawn_frequency): self._spawn_pedestrians(index_simulation) #if not self.frames % self.tracking_sample_frequency: # self._plot_track_ped() self.show_canvas.create_image(count) #self.frames) count += 1 self.time += self.timestep self.frames += 1 if self._done(): finished = True except KeyboardInterrupt: pass self._uninit_drawing()