python遗传算法计算实例_遗传算法python简单例子(详解)

# -*-coding:utf-8 -*- #目标求解sin(x)最大值 import random import math import matplotlib.pyplot as plt #初始化种群 生成chromosome_length大小的population_size个个体的种群 def species_origin(population_size,chromosome_length): population=[[]] #one dimension represent a individual for i in range(population_size): temporary=[] #染色体暂存器 for j in range(chromosome_length): temporary.append(random.randint(0,1)) #随机产生一个染色体,由二进制数组成 population.append(temporary) #将染色体添加到种群中 return population[1:] # 将种群返回,种群是个二维数组,个体和染色体两维 #从二进制到十进制 #编码 input:种群,染色体长度 def translation(population,chromosome_length): temporary=[] for i in range(len(population)): total=0 for j in range(chromosome_length): total+=population[i][j]*(math.pow(2,j)) #从第一个基因开始,每位对2求幂,再求和 # 如:0101 转成十进制为:1 * 20 + 0 * 21 + 1 * 22 + 0 * 23 = 1 + 0 + 4 + 0 = 5 temporary.append(total) #一个染色体编码完成,由一个二进制数编码为一个十进制数 return temporary # 返回种群中所有个体编码完成后的十进制数 #from protein to function,according to its functoin value #a protein realize its function according its structure # 目标函数相当于环境 对染色体进行筛选,这里是sin(x) def function(population,chromosome_length,max_value): temporary=[] function1=[] temporary=translation(population,chromosome_length) # 暂存种群中的所有的染色体(十进制) for i in range(len(temporary)): x=temporary[i]*max_value/(math.pow(2,chromosome_length)-1) # function1.append(math.sin(x)) #这里将sin(x)作为目标函数 return function1 #定义适应度 def fitness(function1): fitness1=[] min_fitness=mf=0 for i in range(len(function1)): if(function1[i]+mf>0): temporary=mf+function1[i] else: temporary=0.0 # 如果适应度小于0,则定为0 fitness1.append(temporary) #将适应度添加到列表中 return fitness1 #计算适应度和 def sum(fitness1): total=0 for i in range(len(fitness1)): total+=fitness1[i] return total #计算适应度斐伯纳且列表 def cumsum(fitness1): for i in range(len(fitness1)-2,-1,-1): # range(start,stop,[step]) # 倒计数 total=0 j=0 while(j<=i): total+=fitness1[j] j+=1 fitness1[i]=total fitness1[len(fitness1)-1]=1 #3.选择种群中个体适应度最大的个体 def selection(population,fitness1): new_fitness=[] #单个公式暂存器 total_fitness=sum(fitness1) #将所有的适应度求和 for i in range(len(fitness1)): new_fitness.append(fitness1[i]/total_fitness) #将所有个体的适应度正则化 cumsum(new_fitness) # ms=[] #存活的种群 population_length=pop_len=len(population) #求出种群长度 #根据随机数确定哪几个能存活 for i in range(pop_len): ms.append(random.random()) # 产生种群个数的随机值 ms.sort() # 存活的种群排序 fitin=0 newin=0 new_population=new_pop=population #轮盘赌方式 while newinbestfitness): bestfitness=fitness1[i] bestindividual=population[i] return [bestindividual,bestfitness] population_size=500 max_value=10 # ?这个值是干什么的 chromosome_length=10 pc=0.6 pm=0.01 results=[[]] fitness1=[] fitmean=[] population=pop=species_origin(population_size,chromosome_length) #生成一个初始的种群 for i in range(population_size): function1=function(population,chromosome_length,max_value) fitness1=fitness(function1) best_individual,best_fitness=best(population,fitness1) results.append([best_fitness,b2d(best_individual,max_value,chromosome_length)]) #将最好的个体和最好的适应度保存,并将最好的个体转成十进制 selection(population,fitness1) crossover(population,pc) mutation(population,pm) results=results[1:] results.sort() X=[] Y=[] for i in range(500): X.append(i) Y.append(results[i][0]) plt.plot(X,Y) plt.show()

1527598167309962.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521039.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

四个变量的图表怎么做_品牌策划方案怎么做?5步图文帮你绘制专业策划图表...

品牌策划方案是指通过对目标对象、竞争对手等相关数据的收集及详细分析&#xff0c;创造性地提出的区别于其他竞争者&#xff0c;能够体现自身特色的名称或符号&#xff0c;用以识别某款产品。品牌策划方案需要策划人具备以下能力&#xff1a;高瞻远瞩&#xff0c;看得到品牌的…

阿里云开放国内首个云端数据库测试平台,云已成为数据库新标准;华为5G随行WiFi发布;科大讯飞推出 AI 专用语音芯片系列……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

AWD-LSTM为什么这么棒?

AWD-LSTM是目前最优秀的语言模型之一。在众多的顶会论文中&#xff0c;对字级模型的研究都采用了AWD-LSTMs&#xff0c;并且它在字符级模型中的表现也同样出色。 本文回顾了论文——Regularizing and Optimizing LSTM Language Models &#xff0c;在介绍AWD-LSTM模型的同时并…

使用Navicat Premium 12 连接远程Oracle数据库

文章目录1. Nacicat premium 12.1.11下载2. 点击【连接】-【ORACLE】3. 输入连接信息异常解决方案1. Nacicat premium 12.1.11下载 Nacicat premium 12.1.11破解版 32/64位 2. 点击【连接】-【ORACLE】 3. 输入连接信息 #连接信息如下&#xff1a; Hostname: 192.168.1.101 …

NLP深度学习:近期趋势概述(一)

在最近发表的论文中&#xff0c;Young及其同事汇总了基于深度学习的自然语言处理&#xff08;NLP&#xff09;系统和应用程序的一些最新趋势。本文的重点介绍是对各种NLP任务&#xff08;如视觉问答&#xff08;QA&#xff09;和机器翻译&#xff09;最新技术&#xff08;SOTA&…

matlab meshgrid函数_从零开始的matlab学习笔记——(28)立体图切面与三视图

matlab应用——求极限&#xff0c;求导&#xff0c;求积分&#xff0c;解方程&#xff0c;概率统计&#xff0c;函数绘图&#xff0c;三维图像&#xff0c;拟合函数&#xff0c;动态图....更多内容尽在个人专栏&#xff1a;matlab学习这一节我们说一说立体图的切面问题slice函数…

NLP深度学习:近期趋势概述(二)

递归神经网络&#xff08;RNN&#xff09; RNN是专门用于处理顺序信息的神经网络的方法。RNN将计算应用于以先前计算结果为条件的输入序列。这些序列通常由固定大小的标记向量表示&#xff0c;他们被顺序送至循环单元。下图说明了一个简单的RNN框架。 RNN的主要优势在于能够记…

使用IntelliJ IDEA 2019.3.2 x64 远程连接oracle数据库

登录验证第2种方式&#xff1a; 点击【Database】-【Data Source】-【Oracle】 输入连接信息&#xff0c;点击【Test Connection】-【OK】 Hostname: 192.168.1.101 Port: 1521 Sid: helowin Username: system Password: oracle 注释&#xff1a;第一次应该会下载客户端依赖&…

起底中国 IT 发展 20 年!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 马超责编 | 阿秃刚开始撰写此文时恰逢我结婚10周年纪念日&#xff0c;暮然回首&#xff0c;我突然发现第一款浏览器Worldwideweb出现在1990年&#xff0c;Java与Python都诞生于1994年&#xff0c;甚至被沿用至今的Visual st…

TableStore发布多元索引功能,打造统一的在线数据平台

什么是NoSQL “NoSQL”一词最早出现在1998年&#xff0c;距今刚好二十年。站在今天回头看的话&#xff0c;很少有人能想到在关系型数据库成熟发展了三十年&#xff0c;已经在数据存储领域占据了不可动摇的的地位后&#xff0c;NoSQL数据库尽然还可以快速地异军突起&#xff0c…

阿里是如何“宠”员工的?除了福利,还有这满屏黑科技

分散在世界各地的六万阿里员工是如何快速协同工作的&#xff1f; 在2018年杭州云栖大会现场&#xff0c;一块近4米宽的企业信息化大屏上&#xff0c;展示了全球阿里员工1天的云上办公与连接情况。 目前阿里巴巴的办公网络与音视频会议已经覆盖全球33个国家和地区&#xff0c;其…

里用gam使用_第一次使用Roam一头雾水?

有感于自己使用Chrome插件&#xff0c;自己看了官方文档也是一头雾水的状态&#xff0c;想到自己使用的Roam Research&#xff0c;用了好几个月也是不断摸索的&#xff0c;记录下使用Roam Research方法供新手们参考。工具的使用是简单的&#xff0c;但是看着详尽的工具文档和使…

使用PLSQL 远程连接oracle数据库

文章目录一、软件下载准备1. 下载PLSQL客户端2. 下载instantclient 客户端3. 将解压instantclient复制到PLSQL目录下面二、配置oracle监听2.1. 首先进入oracle内部2.2. 找到这个文件的目录2.3. 将tnsnames.ora文件从容器内部复制到宿主机上2.4. 再从linux服务器上将文件下载到w…

面试官:知道你的接口QPS是多少么?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 孤独烟责编 | 阿秃引言大家好&#xff0c;我是渣渣烟。我又来水文章了。这篇文章我个人感觉含金量不是太大&#xff0c;大概5分钟左右就能看完&#xff01;其实大家都知道&#xff0c;我不爱写这种操作型的文章&#xff0c;…

Module 让 Terraform 使用更简单

众所周知&#xff0c;Terraform 是一个开源的自动化的资源编排工具&#xff0c;支持多家云服务提供商。阿里云作为第三大云服务提供商&#xff0c;terraform-alicloud-provider 已经支持了超过 90 多个 Resource 和 Data Source&#xff0c;覆盖20多个服务和产品&#xff0c;吸…

android java 实体类 object变量 保存_Java中的实体类--Serializable接口、transient 关键字...

在java中&#xff0c;实体类是一个非常重要的概念&#xff0c;我们可以在实体类中封装对象、设置其属性和方法等。关于实体类&#xff0c;也经常涉及到适配器模式、装饰者模式等设计模式。那么在实际代码开发中&#xff0c;关于实体类的注意事项有哪些呢&#xff1f;1. Seriali…

杭州云栖大会阿里云放大招,8K远程医疗会诊引关注

大家每天都会照镜子&#xff0c;镜子里的一切都清清楚楚&#xff0c;足可乱真&#xff0c;可是你想过有一天看视频直播就像照镜子么&#xff1f; 这不&#xff0c;在云栖大会的C馆里&#xff0c;8K超高清直播体验馆前异常火爆&#xff0c;在这里&#xff0c;很多参会者都围着有…

「2019 嵌入式智能国际大会」 399 元超值学生票来啦,帮你豪省 2600 元!

2019 嵌入式智能国际大会即将来袭&#xff01;购票官网&#xff1a;https://dwz.cn/z1jHouwE物联网是继计算机、互联网和移动通信之后的又一次信息产业的革命性发展&#xff0c;在互联网和移动互联网高速发展的时代&#xff0c;几乎所有行业都有数据联网的需求。无论是国外的科…

【杭州云栖】飞天技术汇大视频专场:全民视频时代下的创新技术之路

2018杭州•云栖大会在9月19日如期召开&#xff0c;在四天时间内将举行2场主论坛、170多场前沿峰会。在9月19日上午的飞天技术汇-大视频专场中&#xff0c;多位阿里云技术专家、合作伙伴、客户为现场观众分享了各自领域的多媒体研发成果&#xff0c;进行多款重磅产品的发布&…

Centos7 使用Docker 安装Oracle精简版本

文章目录一、Docker1. 在线安装Docker2. 启动docker3. 使用docker拉取Oracle镜像4. 看拉取的oracle镜像5. 创建守护式oracle容器并启动容器6. 查看正在运行的容器二、oracle容器配置篇2.1. 进入oracle容器的控制台2.2. 切换root用户配置环境变量2.3. 设置系统及用户密码三、登录…