网站大量收购独家精品文档,联系QQ:2885784924

智能设计方法 第5章 遗传算法基础.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

#计算城市之间的距离矩阵defcompute_distance_matrix(cities):

num_cities=len(cities)

distance_matrix=np.zeros((num_cities,num_cities))

foriinrange(num_cities):

forjinrange(num_cities):

distance_matrix[i][j]=np.linalg.norm(cities[i]-cities[j])

returndistance_matrix

#适应度函数:计算路径长度#计算城市之间的距离矩阵deffitness(path,distance_matrix):

total_distance=0

foriinrange(len(path)-1):

total_distance+=distance_matrix[path[i]][path[i+1]]

total_distance+=distance_matrix[path[-1]][path[0]]#回到起点

returntotal_distance

#初始化种群

definitialize_population(population_size,num_cities):population=[]population=[]for_inrange(population_size):01individual=list(range(num_cities))02random.shuffle(individual)03population.append(individual)04returnpopulationreturnpopulation接下来,我们定义选择、交叉和变异操作:

#选择操作:轮盘赌选择

defselection(population,fitness_values):

total_fitness=sum(fitness_values)

probabilities=[fitness_value/total_fitnessforfitness_valueinfitness_values]

selected_indices=np.random.choice(len(population),size=len(population),p=probabilities)returnpopulationreturn[population[i]foriinselected_indices]

#交叉操作:部分映射交叉(PMX)

defcrossover(parent1,parent2):

size=len(parent1)

child1,child2=[None]*size,[None]*size

#选择交叉点

start,end=sorted(random.sample(range(size),2))#复制交叉段#复制交叉段child1[start:end]=parent1[start:end]1child2[start:end]=parent2[start:end]2#处理未映射的部分3foriinrange(size):4ifistartori=end:5index=(i+end)%size6whileparent1[index]inchild1[start:end]:7index=parent2.index(parent1[index])8child1[i]=parent1[index]9#复制交叉段index=(i+end)%size1whileparent2[index]inchild2[start:end]:2index=parent1.index(parent2[index])3child2[i]=parent2[index]4returnchild1,child25#变异操作:交换变异6defmutation(individual):7size=len(individual)8indices=random.sample(range(size),2)9#复制交叉段individual[indices[0]],individual[indices[1]]=individual[indices[1]],individual[

文档评论(0)

dllkxy + 关注
实名认证
内容提供者

本文库主要涉及建筑、教育等资料,有问题可以联系解决哦

版权声明书
用户编号:5213302032000001

1亿VIP精品文档

相关文档