当前位置: 首页 > news >正文

python 遗传算法精简版

精简版遗传算法,算法中仅采用变异算子而没有使用交叉算子,但是进化依然很有效

 

 

from string import ascii_lowercase
from random import choice, random

'''精简版遗传算法,算法中仅采用变异算子而没有使用交叉算子,但是进化依然很有效'''

target  = list("welcome to http://www.cnhup.com")
charset = ascii_lowercase + ' .:/'
parent  = [choice(charset) for _ in range(len(target))]
minmutaterate  = .09
C = range(100)

perfectfitness = len(target)
def fitness(trial):
    return sum(t==h for t,h in zip(trial, target))

def mutaterate(parent):
    return 1.0-(1.0*(perfectfitness - fitness(parent)) / perfectfitness * (1.0 - minmutaterate))

def mutate(parent, rate):
    return [(ch if random() <= rate else choice(charset)) for ch in parent]

def log(iterations,rate,parent):
    print("#%-4i, rate: %4.3f, fitness: %4.1f%%, '%s'" %
         (iterations, rate, fitness(parent)*100./perfectfitness, ''.join(parent)))

iterations = 0
while parent != target:
    rate =  mutaterate(parent)
    iterations += 1
    if iterations % 10 == 0: log(iterations,rate,parent)
    copies = [ mutate(parent, rate) for _ in C ]  + [parent]
    parent = max(copies, key=fitness)
    
print()
log(iterations, rate, parent)

 

相关文章:

  • B-树和B+树区别
  • 红黑树
  • 负载均衡之基于L3/4负载
  • 跳表
  • 关于CookieUtile的相关代码
  • iOS_15_通过代码自己定义cell_微博UI
  • 排序
  • 哈希冲突解决方法
  • Activiti的引擎与引擎配置对象
  • dfs和bfs
  • ajax done和always区别
  • 数据库三大范式
  • 一个最小化的SpringBoot项目
  • char 和 varchar 的区别?
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • JavaScript 如何正确处理 Unicode 编码问题!
  • Android Studio:GIT提交项目到远程仓库
  • ES学习笔记(12)--Symbol
  • flask接收请求并推入栈
  • Fundebug计费标准解释:事件数是如何定义的?
  • HTML-表单
  • JavaScript对象详解
  • Redis 懒删除(lazy free)简史
  • 闭包,sync使用细节
  • 构建工具 - 收藏集 - 掘金
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 使用docker-compose进行多节点部署
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ionic入门之数据绑定显示-1
  • Prometheus VS InfluxDB
  • 移动端高清、多屏适配方案
  • #git 撤消对文件的更改
  • #pragma once与条件编译
  • $jQuery 重写Alert样式方法
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (2015)JS ES6 必知的十个 特性
  • (26)4.7 字符函数和字符串函数
  • (4.10~4.16)
  • (C++17) optional的使用
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • (转)重识new
  • (转载)OpenStack Hacker养成指南
  • .Net Memory Profiler的使用举例
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .net快速开发框架源码分享
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @在php中起什么作用?
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现