遗传算法 (GA) 是一种受进化论启发的优化算法。它被广泛用于解决各种优化问题,从机器学习到金融建模。
import random
import numpy as npclass GA:def __init__(self, population_size, num_iterations, crossover_rate, mutation_rate):self.population_size = population_sizeself.num_iterations = num_iterationsself.crossover_rate = crossover_rateself.mutation1) 交叉点child1 = np.concatenate((parent1[:crossover_point], parent2[crossover_point:]))child2 = np.concatenate((parent2[:crossover_point], parent1[crossover_point:]))new_population.extend([child1, child2])return new_populationdef mutation(self, population):对新种群进行变异操作for chromosome in population:for i in range(len(chromosome)):if random.random() < self.mutation_rate:chromosome[i] = 1 - chromosome[i] 位翻转def roulette_wheel_selection(self, population):轮盘赌选择法fitness_values = [self.fitness_function(chromosome) for chromosome in population]total_fitness = np.sum(fitness_values)probabilities = fitness_values / total_fitnessr = random.random()for i, probability in enumerate(probabilities):if r < probability:return population[i]def run(self):population = self.initialize_population()for i in range(self.num_iterations):parents = self.selection(population)new_population = self.crossover(parents)self.mutation(new_population)population = new_populationbest_chromosome = max(population, key=self.fitness_function)return best_chromosome测试遗传算法
ga = GA(population_size=100, num_iterations=100, crossover_rate=0.8, mutation_rate=0.1)
best_chromosome = ga.run()
print("最优染色体:", best_chromosome)
print("适应度值:", ga.fitness_function(best_chromosome))
本文地址:https://www.qianwe.com/article/1348.html