python实现一个遗传算法
Python 实现 一个 遗传算法
2023-09-27 14:21:14 时间
###################
import random # 染色体长度 CHROMO_LENGTH = 20 # 种群大小 POP_SIZE = 50 # 交叉概率 CROSS_RATE = 0.8 # 变异概率 MUTATE_RATE = 0.01 # 最大迭代次数 N_GENERATIONS = 200 # 适应度函数 def fitness_function(chromosome): return sum(chromosome) # 创建初始种群 def create_population(): population = [] for i in range(POP_SIZE): chromosome = [random.randint(0, 1) for _ in range(CHROMO_LENGTH)] population.append(chromosome) return population # 选择函数 def select(population, fitness): fitness_sum = sum(fitness) p = [f / fitness_sum for f in fitness] index = random.choices(range(POP_SIZE), p=p) return population[index[0]] # 交叉函数 def crossover(parent1, parent2): if random.random() < CROSS_RATE: crossover_point = random.randint(0, CHROMO_LENGTH) offspring1 = parent1[:crossover_point] + parent2[crossover_point:] offspring2 = parent2[:crossover_point] + parent1[crossover_point:] else: offspring1, offspring2 = parent1, parent2 return offspring1, offspring2 # 变异函数 def mutate(chromosome): for i in range(CHROMO_LENGTH): if random.random() < MUTATE_RATE: chromosome[i] = 1 - chromosome[i] return chromosome # 遗传算法主函数 def genetic_algorithm(): population = create_population() for generation in range(N_GENERATIONS): fitness = [fitness_function(chromosome) for chromosome in population] new_population = [] for _ in range(POP_SIZE // 2): parent1 = select(population, fitness) parent2 = select(population, fitness) offspring1, offspring2 = crossover(parent1, parent2) offspring1 = mutate(offspring1) offspring2 = mutate(offspring2) new_population.append(offspring1) new_population.append(offspring2) population = new_population return max(population, key=fitness_function) if __name__ == '__main__': print(genetic_algorithm())
##############
###################
相关文章
- 飘逸的python - 实现一个pretty函数美丽的输出嵌套字典
- 32了转行python,我真的还有救吗?
- Python 成为最受欢迎的语言靠实力吗?
- 利用Python进行科研数据分析可视化需要做些什么准备
- Python实现一个简单的图片爬虫
- wav转txt格式的代码实现(c,python)
- 线性插值法的原理和python代码实现
- python实现冒泡排序
- 《Python高手之路》——1.4 编码风格与自动检查
- 《Python数据可视化编程实战》——1.5 在Windows上安装matplotlib
- 基于Python实现网络地址转换(NAT)实验【100010468】
- Python for循环内部实现的一个sample
- 用python实现的的手写数字识别器
- GPU教程之开始在 Python 中快速使用 GPU 进行数据科学项目(教程含源码)
- python教程之如何将srt转为文本
- python error: TypeError: cannot serialize '_io.TextIOWrapper' object
- tensorflow保存模型和加载模型的方法(Python和Android)
- python之time模块:获取当前时间
- Python 框架 之 Django 绑定 MySql ,MVT 实现简单一个简单的浏览器(内附详细步骤)
- Python 基础 之 python 协程知识点整理,并实现一个简单 gevent 的协程并发图片下载的应用
- Python 基础 之 python 线程知识点整理,并实现一个简单多线程 udp 聊天应用
- 【Python】用Python的“结巴”模块进行分词
- 树进行广度优先遍历(BFS),深度优先遍历(DFS),Python迭代法实现
- Python之关于量化投资实现代码--根据策略提出的代码--还未完善
- 【Python】多线程实现多任务节省工作时长,去卷其他的事
- Python实现性能测试(locust)