Ejemplo n.º 1
0
    def mutate(self, list_of_individuals):
        ### Currently only works on a material-basis
        #print("MUTATING!!!")
        if self.options['mutation_type'] == 'bitwise':
            #print("BITWISE!", len(list_of_individuals))
            for ind_count, individual in enumerate(list_of_individuals):
                #print("MUTATING:", ind_count)
                original_material_matrix = copy.deepcopy(
                    individual.material_matrix)
                individual.material_matrix = self.single_bit_mutation(
                    original_material_matrix)

                if self.options['verify_fuel_mass_after_mutation']:
                    ### Checking if new child meets fuel # requirement
                    fuel_count = individual.count_material(1)
                    # try_count = 0
                    while (
                        (fuel_count > self.options['maximum_fuel_elements']) or
                        (fuel_count < self.options['minimum_fuel_elements'])):
                        individual.material_matrix = self.single_bit_mutation(
                            original_material_matrix)
                        fuel_count = individual.count_material(1)
                        # print("mutation fuel count:", fuel_count)
                        # try_count  += 1
                    # print("fixed mutation in:", try_count, "tries")

        return list_of_individuals
Ejemplo n.º 2
0
    def write_options_funct(self, output_file, individual):
        write_string = ""
        for write_option in self.options['output_writeout_values']:
            if write_option == 'generation':
                write_string += str(self.generation) + ","
            if write_option == 'individual_count':
                write_string += str(individual.ind_count) + ","
            if write_option == 'keff':
                write_string += str(individual.keff) + ","
            if write_option == 'materials':
                write_string += str(individual.make_material_string_csv())
            if write_option == 'input_name':
                try:
                    write_string += str(individual.scale_input_filename) + ','
                except:
                    write_string += "N/A,"
            if write_option == 'number_of_fuel':
                write_string += str(individual.count_material(1)) + ','
            if write_option == 'write_out_parents':
                write_string += str(individual.parent_string) + ','
            if write_option == 'write_out_average_diversity_score':
                if self.options['choose_parent_based_on_bitwise_diversity'] == True:
                    try:
                        average_tds = individual.total_diversity_score / (self.options['number_of_parents'] - 1)
                        write_string += str(average_tds) + ','
                    except:
                        write_string += "N/A,"

        return write_string
Ejemplo n.º 3
0
    def mutate(self):
        ### Currently only works on a material-basis
        if self.options['mutation_type'] == 'bitwise':
            for ind_count, individual in enumerate(self.individuals):
                ### Will not mutate parents/elite population
                if ind_count < self.options['number_of_parents']:
                    continue

                original_material_matrix = copy.deepcopy(individual.material_matrix)
                individual.material_matrix = self.single_bit_mutation(original_material_matrix)

                if self.options['verify_fuel_mass_after_mutation']:
                    ### Checking if new child meets fuel # requirement
                    fuel_count = individual.count_material(1)
                    # try_count = 0
                    while ((fuel_count > self.options['maximum_fuel_elements']) or (
                            fuel_count < self.options['minimum_fuel_elements'])):
                        individual.material_matrix = self.single_bit_mutation(original_material_matrix)
                        fuel_count = individual.count_material(1)
Ejemplo n.º 4
0
 def write_options_funct(self, output_file, individual):
     write_string = ""
     for write_option in self.options['output_writeout_values']:
         if "#" in write_option:
             write_option_split = write_option.split("#")
             write_option = write_option_split[0]
         if write_option == 'generation':
             write_string += str(self.generation) + ","
         if write_option == 'individual_count':
             write_string += str(individual.ind_count) + ","
         if write_option == 'keff':
             write_string += str(individual.keff) + ","
         if write_option == 'front_rank':
             try:
                 write_string += str(individual.front_rank) + ","
             except:
                 write_string += "N/A,"
         if write_option == 'crowding_distance':
             try:
                 write_string += str(individual.crowding_distance) + ","
             except:
                 write_string += "N/A,"
         if write_option == 'total_flux':
             try:
                 write_string += str(individual.total_flux) + ","
             except:
                 write_string += "N/A,"
         if write_option == 'representativity':
             try:
                 write_string += str(individual.representativity) + ","
             except:
                 write_string += "N/A,"
         if write_option == 'materials':
             write_string += str(individual.make_material_string_csv())
         if write_option == 'input_name':
             try:
                 write_string += str(individual.input_file_string) + ','
             except:
                 write_string += "N/A,"
         if write_option == 'number_of_fuel':
             write_string += str(individual.count_material(1)) + ','
         if write_option == 'write_out_parents':
             write_string += str(individual.parent_string) + ','
         if write_option == 'write_out_average_diversity_score':
             if self.options[
                     'choose_parent_based_on_bitwise_diversity'] == True:
                 try:
                     average_tds = individual.total_diversity_score / (
                         self.options['number_of_parents'] - 1)
                     write_string += str(average_tds) + ','
                 except:
                     write_string += "N/A,"
             else:
                 write_string += "N/A,"
     return write_string
Ejemplo n.º 5
0
 def enforce_fuel_count(self):
     for individual in self.individuals:
         fuel_count = individual.count_material(1)
         if fuel_count != self.options['enforced_fuel_count_value']:
             individual.fix_material_count(1, self.options['enforced_fuel_count_value'])