def renormalize_beliefs_multiproc(belief_space, normalization_factor):
    belief_space.num_idxs_with_belief_above_threshold = 0
    slicing_indices = generate_slicing_indices(belief_space.beliefs)
    with Parallel(n_jobs=multiprocessing.cpu_count(),
                  verbose=5,
                  max_nbytes=PARALLEL_MAX_NBYTES) as parallel:
        max_belief = -1
        max_eles = []
        num_idxs_with_belief_above_threshold = 0
        return_tuples = parallel(
            delayed(belief_space.renormalize_beliefs_common)
            (normalization_factor, slicing_indices[i - 1], slicing_indices[i])
            for i in range(1, len(slicing_indices)))
        for return_tuple in return_tuples:
            returned_max_eles, returned_max_belief, returned_beliefs, returned_num_idxs_with_belief_above_threshold, starting_index, ending_index = (
                return_tuple)
            # copy beliefs from results
            belief_space.beliefs[
                starting_index:ending_index] = returned_beliefs
            num_idxs_with_belief_above_threshold += (
                returned_num_idxs_with_belief_above_threshold)
            # find max chains
            if returned_max_belief > max_belief:
                max_eles = returned_max_eles
                max_belief = returned_max_belief
        # find actual max in tuple returned

        return max_eles, max_belief, num_idxs_with_belief_above_threshold
Exemple #2
0
def update_bottom_up_beliefs_multiproc(
    top_down_bottom_up_structure_belief_space_wrapper, attribute_order, trial_name,
):
    slicing_indices = generate_slicing_indices(
        top_down_bottom_up_structure_belief_space_wrapper.bottom_up_belief_space.beliefs
    )
    with Parallel(
        n_jobs=multiprocessing.cpu_count(), verbose=5, max_nbytes=PARALLEL_MAX_NBYTES
    ) as parallel:
        return_tuples = parallel(
            delayed(
                top_down_bottom_up_structure_belief_space_wrapper.update_bottom_up_beliefs_common
            )(attribute_order, trial_name, slicing_indices[i - 1], slicing_indices[i])
            for i in range(1, len(slicing_indices))
        )
        for return_tuple in return_tuples:
            returned_beliefs, starting_index, ending_index = return_tuple
            # copy beliefs from results
            top_down_bottom_up_structure_belief_space_wrapper.bottom_up_belief_space.beliefs[
                starting_index:ending_index
            ] = returned_beliefs

        return (
            top_down_bottom_up_structure_belief_space_wrapper.bottom_up_belief_space.beliefs
        )
Exemple #3
0
def instantiate_schemas_multiproc(
    abstract_schema_space,
    causal_chain_structure_space,
    instantiation_index_mappings,
    solutions_executed,
    excluded_chain_idxs,
    n_chains_in_schema,
):
    slicing_indices = generate_slicing_indices(
        abstract_schema_space.structure_space)
    instantiated_schemas = []
    instantiated_schema_beliefs = []
    with Parallel(n_jobs=multiprocessing.cpu_count(),
                  verbose=5,
                  max_nbytes=PARALLEL_MAX_NBYTES) as parallel:
        return_tuples = parallel(
            delayed(abstract_schema_space.instantiate_schemas_common)(
                causal_chain_structure_space,
                instantiation_index_mappings,
                solutions_executed,
                excluded_chain_idxs,
                n_chains_in_schema,
                slicing_indices[i - 1],
                slicing_indices[i],
            ) for i in range(1, len(slicing_indices)))
        for return_tuple in return_tuples:
            returned_schemas, returned_beliefs, starting_index, ending_index = (
                return_tuple)
            # copy beliefs from results
            instantiated_schemas.extend(returned_schemas)
            instantiated_schema_beliefs.extend(returned_beliefs)

        return instantiated_schemas, instantiated_schema_beliefs
def prune_chains_from_initial_observation_multiproc(chain_pruner,
                                                    causal_chain_space,
                                                    position_dict, trial_count,
                                                    attempt_count):
    slicing_indices = generate_slicing_indices(
        causal_chain_space.structure_space.causal_chains)
    chain_idxs_pruned = set()
    with Parallel(n_jobs=multiprocessing.cpu_count(),
                  verbose=5,
                  max_nbytes=PARALLEL_MAX_NBYTES) as parallel:
        chain_space_tuples = parallel(
            delayed(chain_pruner.prune_chains_from_initial_observation_common)(
                causal_chain_space,
                position_dict,
                trial_count,
                attempt_count,
                slicing_indices[i - 1],
                slicing_indices[i],
            ) for i in range(1, len(slicing_indices)))
        for chain_space_tuple in chain_space_tuples:
            returned_beliefs, returned_chain_idxs_pruned, starting_index, ending_index = (
                chain_space_tuple)
            causal_chain_space.bottom_up_belief_space.beliefs[
                starting_index:ending_index] = returned_beliefs
            chain_idxs_pruned.update(returned_chain_idxs_pruned)

        return causal_chain_space.bottom_up_belief_space.beliefs, chain_idxs_pruned
def sum_beliefs_multiproc(belief_space):
    slicing_indices = generate_slicing_indices(belief_space.beliefs)
    with Parallel(n_jobs=multiprocessing.cpu_count(),
                  verbose=5,
                  max_nbytes=PARALLEL_MAX_NBYTES) as parallel:
        sums = parallel(
            delayed(belief_space.sum_beliefs_common)(slicing_indices[i - 1],
                                                     slicing_indices[i])
            for i in range(1, len(slicing_indices)))
        return sum(sums)
def set_num_idxs_with_belief_above_threshold_multiproc(belief_space):
    slicing_indices = generate_slicing_indices(belief_space)
    with Parallel(n_jobs=multiprocessing.cpu_count(),
                  verbose=5,
                  max_nbytes=PARALLEL_MAX_NBYTES) as parallel:
        summations = parallel(
            delayed(belief_space.
                    compute_num_idxs_with_belief_above_threshold_common)(
                        slicing_indices[i - 1], slicing_indices[i])
            for i in range(1, len(slicing_indices)))
        summation = sum(summations)
        return summation
def set_uniform_belief_for_idx_with_belief_above_threshold_multiproc(
    belief_space,
    threshold,
):
    slicing_indices = generate_slicing_indices(belief_space.beliefs)
    with Parallel(n_jobs=multiprocessing.cpu_count(),
                  verbose=5,
                  max_nbytes=PARALLEL_MAX_NBYTES) as parallel:
        returned_tuples = parallel(
            delayed(
                belief_space.
                set_uniform_belief_for_idx_with_belief_above_threshold_common)(
                    slicing_indices[i - 1],
                    slicing_indices[i],
                    threshold,
                ) for i in range(1, len(slicing_indices)))
        for returned_tuple in returned_tuples:
            returned_beliefs, starting_index, ending_index = returned_tuple
            belief_space.beliefs[
                starting_index:ending_index] = returned_beliefs
    return belief_space.beliefs