c语言推销员旅行问题遗传算法,基于遗传算法的旅行推销员
我试图用python和遗传算法来可视化和解决旅行销售人员的问题,我在youtube上关注Daniel Shiffman的一个编码挑战视频我不知道是否允许我在这里放一个链接,但这里是链接(https://www.youtube.com/watch?v=M3KTWnTrU_c&list=PLRqwX-V7Uu6ZiZxtDDRCi6uhfTH4FilpH&index=42)
所以问题是,我的遗传算法没有进化。它仅仅停留在第一代上。我想我无法写出创建下一代的代码,因为我缺乏python知识,下面是代码:import pygame
import random
import numpy as np
import sys
size=width,height=500,500
bgColor = (0,0,0)
screen = pygame.display.set_mode(size)
vertexArray = []
fitness = []
population = []
pygame.display.set_caption("Finding the Shortest path with Genetich Algorithm")
bestEver=[]
bestDistance = 999999
def shuffle(vertexArray):
np.random.shuffle(vertexArray)
def swap(a,i,j):
temp = a[i]
a[i]=a[j]
a[j]=temp
class Vertex:
def __init__(self,x,y):
self.color = (255,255,255)
self.x = x
self.y = y
def display(self):
pygame.draw.circle(screen,self.color,(self.x,self.y),4,4)
def getPosition(self):
return [self.x,self.y]
def __str__(self):
return str(self.x+", "+self.y)
def createVertexes(numOfVertexes):
for i in range(numOfVertexes):
vertexArray.append(Vertex(random.randint(0,width),random.randint(0,height)))
createVertexes(8)
def createPopulation():
for i in range(300):
population.append(vertexArray[:])
for j in range(100):
shuffle(population[i])
createPopulation()
def drawLines(vertexArray,color):
for i in range(vertexArray.__len__()-1):
pygame.draw.line(screen,color,vertexArray[i].getPosition(),vertexArray[i+1].getPosition(),1)
def calculateDistance(vertexArray):
dist = 0
for i in range(vertexArray.__len__()-1):
dist += np.linalg.norm(np.asarray(vertexArray[i+1].getPosition())-np.asarray(vertexArray[i].getPosition()))
return dist
def displayVertexes(vertexArray):
for i in range(vertexArray.__len__()):
vertexArray[i].display()
def calculateFitness():
global bestDistance
global bestEver
for i in range(population.__len__()-1):
d = calculateDistance(population[i])
if d
bestDistance = d
bestEver = population[i][:]
fitness.append(1/d)
def getProbability(fitness,population):
first = 0
sum = 0
for i in range(fitness.__len__() - 1):
sum += fitness[i]
r = random.uniform(0, sum)
for i in range(fitness.__len__() - 1):
if r<=fitness[i] and r>=first:
return population[i]
first = fitness[i]
return population[random.randint(0,2)]
def pickOne(population,fitness):
return getProbability(fitness,population)
def mutate(order):
indexA = random.randint(0,order.__len__()-1)
indexB = random.randint(0,order.__len__()-1)
swap(order,indexA,indexB)
def nextGeneration():
global population
newPopulation=[]
for i in range(population.__len__()-1):
order = pickOne(population,fitness)
mutate(order)
newPopulation.append(order)
population = newPopulation
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
screen.fill(bgColor)
displayVertexes(vertexArray)
calculateFitness()
print(fitness[2])
nextGeneration()
drawLines(bestEver,(255, 0, 0))
pygame.display.flip()
c语言推销员旅行问题遗传算法,基于遗传算法的旅行推销员相关推荐
- 组卷系统php遗传算法,基于遗传算法的智能组卷系统实现
考试作为教育测量学和教育统计学和的基本原理,不仅是对学生学习能力和知识水平的检验方式,也是对教师教育教学水平评价和体现的重要手段之一.如何更加客观公正地反映学生的学习状况,全面地掌握和评价教师的教学工 ...
- R语言基于遗传算法(Genetic Algorithm)进行特征筛选(feature selection)
R语言基于遗传算法(Genetic Algorithm)进行特征筛选(feature selection) 特征选择的目的 1.简化模型,使模型更易于理解:去除不相关的特征会降低学习任务的难度.并且可 ...
- 流水调度问题c语言,基于遗传算法的流水车间调度问题汇总.doc
基于遗传算法的流水车间调度问题汇总,车间调度及其遗传算法,遗传算法车间调度,流水车间调度问题,置换流水车间调度问题,流水车间调度,流水车间调度问题代码,流水车间调度算法,任务调度遗传算法源码,遗传算法 ...
- 基于遗传算法的南昌周边城市旅游规划研究(Python实现)
当前,国民生活水平得到大幅提升,人均汽车拥有量越来越多,自驾周边城市游也成为越来越多家庭节假日期间的选择,旅游路径规划成为研究热点.旅游路径规划问题是基于经典旅行商问题( TSP) 演变而来的,目前主 ...
- 基于遗传算法求解TSP问题(旅游路径规划,Python实现,超详细,可视化,结果分析)
ps:作者是很用心写的,如果觉得不错,请给作者一点鼓励噢!(点赞收藏评论噢) 基于遗传算法求解TSP问题 摘要 巡回旅行商问题(TSP)是组合优化中的经典问题.常见的TSP问题求解算法例如穷举法.贪心 ...
- 基于遗传算法实现自动组卷
转自 http://www.cnblogs.com/liulang/articles/1614311.html 1 遗传算法介绍 1.1 遗传算法概要 遗传算法是模拟达尔文的遗传选择和自然淘汰的生物 ...
- 基于遗传算法自动组卷的实现
1 遗传算法介绍 1.1 遗传算法概要 遗传算法是模拟达尔文的遗传选择和自然淘汰的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它是用来解决多约束条件下的最优问题. 遗传算法是 ...
- 基于遗传算法的高校自动排课管理系统java+ssh框架
博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 基于遗传算法的高校自动排课管理系统java+ssh框架 系统说明 <基于遗传 ...
- 基于遗传算法解决TSP问题(Matlab代码实现)
目录 1 概述 2 运行结果 3 Matlab代码实现 4 结语 5 参考文献 1 概述 旅行商问题是一个经典的路径规划问题,传统TSP假设客户位置和客户之间旅行时间是固定不变的,而在现实生活中交通状 ...
最新文章
- SQL:查询学习笔记
- Java 线上问题排查神器 Arthas 快速上手与原理浅谈
- 微课堂 | 腾讯产品经理刘涵宇:给产品经理和设计师的用户体验知识
- sap 分割评估_SAP那些事-实战篇-73-受托加工的几种方案探讨
- bootstrap 导航菜单 折叠位置_python测试开发django44.xadmin自定义菜单项
- 《JS权威指南学习总结--6.1原型》
- Java什么时候提高境界支持async/await写法啊?
- 一次完整的数据分析实战!仅用4步,效率吊打Excel和Python
- Docker 命令总结
- 【Gym - 101848D】XOR【多个数异或的典型问题】【费马小定理】
- e320/t420/w520等 qm67/hm65/hm67等 6系芯片组更新BIOS以安装三代酷睿cpu提升性能的想法
- 用什么样的姿势能拿到国际“AV”大赛的冠军?
- 使用python统计excel两文件数据,excel公式为countif
- VMWare 15虚拟机下载和安装说明兼容WIN10
- 【FFmpeg编码实战】(2)将YUV420P图片集编码成H.264视频文件(方法二)
- 闭关之 C++ Template 笔记(一):PartⅠ基本概念(一)
- 细节:如何轻松影响他人
- 数学-线性代数3(相关性、基、维数、四个基本子空间)
- 基于esp8266的Arduino网络时钟
- app如何添加广告位 uni_新手APP运营如何做广告位投放
热门文章
- 修改VisualSVN Server地址为指定的ip地址(亲测可用)
- 中专生爱上大学本科生(有罪吗)
- 【老生谈算法】matlab实现sift算法的图像匹配——sift算法
- CF 779 C Dishonest Sellers 贪心,排序
- 【玩转yolov5】之anchor匹配策略(build_targets)分析(1)
- 让你相见恨晚的10个Linux命令别名!
- C#GDI+简单绘图
- 网络传输之混合自动重传请求HARQ
- 相关性系数和显著性水平
- 高斯消元法java语言设计_高斯消元法(Gauss Elimination)【超详解模板】