def run_trial(self, trial_id=0):
        """Run a single trial of the simulation

        Parameters
        ----------
        trial_id : int
        """
        # Set-up trial environment and graph
        self.env = NetworkEnvironment(self.G.copy(), initial_time=0, **self.environment_params)
        # self.G = self.initial_topology.copy()
        # self.trial_params = deepcopy(self.global_params)

        # Set up agents on nodes
        print('Setting up agents...')
        self.setup_network_agents()

        # Set up environmental agent
        if self.environment_agent_type:
            env_agent = self.environment_agent_type(environment=self.env)

        # Set up logging
        logging_interval = self.logging_interval
        logger = BaseLoggingAgent(environment=self.env, dir_path=self.dir_path, logging_interval=logging_interval)

        # Run trial
        self.env.run(until=self.until)

        # Save output as pickled objects
        logger.save_trial_state_history(trial_id=trial_id)