<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_simulations(self, parameter_list, data_folder):
 """ Run several simulations using a certain combination of parameters. Yields results as simulations are completed. Args: parameter_list (list):
 list of parameter combinations to simulate. data_folder (str):
 folder in which to save subfolders containing simulation output. """


        for idx, parameter in enumerate(parameter_list):

            current_result = {
                'params': {},
                'meta': {}
                }
            current_result['params'].update(parameter)

            command = [self.script_executable] + ['--%s=%s' % (param, value)
                                                  for param, value in
                                                  parameter.items()]

            # Run from dedicated temporary folder
            current_result['meta']['id'] = str(uuid.uuid4())
            temp_dir = os.path.join(data_folder, current_result['meta']['id'])
            os.makedirs(temp_dir)

            start = time.time()  # Time execution
            stdout_file_path = os.path.join(temp_dir, 'stdout')
            stderr_file_path = os.path.join(temp_dir, 'stderr')
            with open(stdout_file_path, 'w') as stdout_file, open(
                    stderr_file_path, 'w') as stderr_file:
                return_code = subprocess.call(command, cwd=temp_dir,
                                              env=self.environment,
                                              stdout=stdout_file,
                                              stderr=stderr_file)
            end = time.time()  # Time execution

            if return_code > 0:
                complete_command = [self.script]
                complete_command.extend(command[1:])
                complete_command = "python waf --run \"%s\"" % (
                    ' '.join(complete_command))

                with open(stdout_file_path, 'r') as stdout_file, open(
                        stderr_file_path, 'r') as stderr_file:
                    raise Exception(('Simulation exited with an error.\n'
                                     'Params: %s\n'
                                     '\nStderr: %s\n'
                                     'Stdout: %s\n'
                                     'Use this command to reproduce:\n'
                                     '%s'
                                     % (parameter, stderr_file.read(),
                                        stdout_file.read(), complete_command)))

            current_result['meta']['elapsed_time'] = end-start

            yield current_result