遗传算法实验报告

合集下载

实验六:遗传算法求解TSP问题实验2篇

实验六:遗传算法求解TSP问题实验2篇

实验六:遗传算法求解TSP问题实验2篇第一篇:遗传算法的原理与实现1. 引言旅行商问题(TSP问题)是一个典型的组合优化问题,它要求在给定一组城市和每对城市之间的距离后,找到一条路径,使得旅行商能够在所有城市中恰好访问一次并回到起点,并且总旅行距离最短。

遗传算法作为一种生物启发式算法,在解决TSP问题中具有一定的优势。

本实验将运用遗传算法求解TSP问题,以此来探讨和研究遗传算法在优化问题上的应用。

2. 遗传算法的基本原理遗传算法是模拟自然界生物进化过程的一种优化算法。

其基本原理可以概括为:选择、交叉和变异。

(1)选择:根据问题的目标函数,以适应度函数来评估个体的优劣程度,并按照适应度值进行选择,优秀的个体被保留下来用于下一代。

(2)交叉:从选出的个体中随机选择两个个体,进行基因的交换,以产生新的个体。

交叉算子的选择及实现方式会对算法效果产生很大的影响。

(3)变异:对新生成的个体进行基因的变异操作,以保证算法的搜索能够足够广泛、全面。

通过选择、交叉和变异操作,不断迭代生成新一代的个体,遗传算法能够逐步优化解,并最终找到问题的全局最优解。

3. 实验设计与实施(1)问题定义:给定一组城市和每对城市之间的距离数据,要求找到一条路径,访问所有城市一次并回到起点,使得旅行距离最短。

(2)数据集准备:选择适当规模的城市数据集,包括城市坐标和每对城市之间的距离,用于验证遗传算法的性能。

(3)遗传算法的实现:根据遗传算法的基本原理,设计相应的选择、交叉和变异操作,确定适应度函数的定义,以及选择和优化参数的设置。

(4)实验流程:a. 初始化种群:随机生成初始种群,每个个体表示一种解(路径)。

b. 计算适应度:根据适应度函数,计算每个个体的适应度值。

c. 选择操作:根据适应度值选择一定数量的个体,作为下一代的父代。

d. 交叉操作:对父代进行交叉操作,生成新的个体。

e. 变异操作:对新生成的个体进行变异操作,以增加搜索的多样性。

实验六:遗传算法求解TSP问题实验3篇

实验六:遗传算法求解TSP问题实验3篇

实验六:遗传算法求解TSP问题实验3篇以下是关于遗传算法求解TSP问题的实验报告,分为三个部分,总计超过3000字。

一、实验背景与原理1.1 实验背景旅行商问题(Traveling Salesman Problem,TSP)是组合优化中的经典问题。

给定一组城市和每两个城市之间的距离,求解访问每个城市一次并返回出发城市的最短路径。

TSP 问题具有很高的研究价值,广泛应用于物流、交通运输、路径规划等领域。

1.2 遗传算法原理遗传算法(Genetic Algorithm,GA)是一种模拟自然选择和遗传机制的搜索算法。

它通过选择、交叉和变异操作生成新一代解,逐步优化问题的解。

遗传算法具有全局搜索能力强、适用于多种优化问题等优点。

二、实验设计与实现2.1 实验设计本实验使用遗传算法求解TSP问题,主要包括以下步骤:(1)初始化种群:随机生成一定数量的个体(路径),每个个体代表一条访问城市的路径。

(2)计算适应度:根据路径长度计算每个个体的适应度,适应度越高,路径越短。

(3)选择操作:根据适应度选择优秀的个体进入下一代。

(4)交叉操作:随机选择两个个体进行交叉,生成新的个体。

(5)变异操作:对交叉后的个体进行变异,增加解的多样性。

(6)更新种群:将新生成的个体替换掉上一代适应度较低的个体。

(7)迭代:重复步骤(2)至(6),直至满足终止条件。

2.2 实验实现本实验使用Python语言实现遗传算法求解TSP问题。

以下为实现过程中的关键代码:(1)初始化种群```pythondef initialize_population(city_num, population_size): population = []for _ in range(population_size):individual = list(range(city_num))random.shuffle(individual)population.append(individual)return population```(2)计算适应度```pythondef calculate_fitness(population, distance_matrix): fitness = []for individual in population:path_length =sum([distance_matrix[individual[i]][individual[i+1]] for i in range(len(individual) 1)])fitness.append(1 / path_length)return fitness```(3)选择操作```pythondef selection(population, fitness, population_size): selected_population = []fitness_sum = sum(fitness)fitness_probability = [f / fitness_sum for f in fitness]for _ in range(population_size):individual = random.choices(population, fitness_probability)[0]selected_population.append(individual)return selected_population```(4)交叉操作```pythondef crossover(parent1, parent2):index1 = random.randint(0, len(parent1) 2)index2 = random.randint(index1 + 1, len(parent1) 1)child1 = parent1[:index1] +parent2[index1:index2] + parent1[index2:]child2 = parent2[:index1] +parent1[index1:index2] + parent2[index2:]return child1, child2```(5)变异操作```pythondef mutation(individual, mutation_rate):for i in range(len(individual)):if random.random() < mutation_rate:j = random.randint(0, len(individual) 1) individual[i], individual[j] = individual[j], individual[i]return individual```(6)更新种群```pythondef update_population(parent_population, child_population, fitness):fitness_sum = sum(fitness)fitness_probability = [f / fitness_sum for f in fitness]new_population =random.choices(parent_population + child_population, fitness_probability, k=len(parent_population)) return new_population```(7)迭代```pythondef genetic_algorithm(city_num, population_size, crossover_rate, mutation_rate, max_iterations): distance_matrix =create_distance_matrix(city_num)population = initialize_population(city_num, population_size)for _ in range(max_iterations):fitness = calculate_fitness(population, distance_matrix)selected_population = selection(population, fitness, population_size)parent_population = []child_population = []for i in range(0, population_size, 2):parent1, parent2 = selected_population[i], selected_population[i+1]child1, child2 = crossover(parent1, parent2)child1 = mutation(child1, mutation_rate)child2 = mutation(child2, mutation_rate)parent_population.extend([parent1, parent2]) child_population.extend([child1, child2])population =update_population(parent_population, child_population, fitness)best_individual =population[fitness.index(max(fitness))]best_path_length =sum([distance_matrix[best_individual[i]][best_individual[i +1]] for i in range(len(best_individual) 1)])return best_individual, best_path_length```三、实验结果与分析3.1 实验结果本实验选取了10个城市进行测试,遗传算法参数设置如下:种群大小:50交叉率:0.8变异率:0.1最大迭代次数:100实验得到的最佳路径长度为:1953.53.2 实验分析(1)参数设置对算法性能的影响种群大小:种群大小会影响算法的搜索能力和收敛速度。

人工智能 遗传算法实验报告

人工智能 遗传算法实验报告

人工智能试验陈述学号:姓名:试验名称:遗传算法试验日期: 2016.1.5【试验名称】遗传算法【试验目标】控制遗传算法的基起源基础理,熟习遗传算法的运行机制,学会用遗传算法来求解问题.【试验道理】遗传算法(Genetic Algorithm)是模仿达尔文生物进化论的天然选择和遗传学机理的生物进化进程的盘算模子,是一种经由过程模仿天然进化进程搜刮最优解的办法.遗传算法是从代表问题可能潜在的解集的一个种群开端的,而一个种群则由经由基因编码的必定命目标个别构成.每个个别现实上是染色体带有特点的实体.在一开端须要实现从表示型到基因型的映射即编码工作.因为模仿基因编码的工作很庞杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生计和优越劣汰的道理,逐代演变产生出越来越好的近似解,在每一代,依据问题域中个别的顺应度大小选择个别,并借助于天然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群.这个进程将导致种群像天然进化一样的后生代种群比前代加倍顺应于情况,末代种群中的最优个别经由解码,可以作为问题近似最优解.遗传算法程度流程图为:【试验内容】标题:已知f(x)=x*sin(x)+1,xÎ[0,2p],求f(x)的最大值和最小值.数据构造:struct poptype{double gene[length];//染色体double realnumber;//对应的实数xdouble fitness;//顺应度double rfitness;//相对顺应度double cfitness;//累计顺应度};struct poptype population[popsize+1];//最后一位存放max/minstruct poptype newpopulation[popsize+1];//染色体编码:[0,2]x π∈,变量长度为 2 π,取小数点后6位,因为2262322*102;π<<是以,染色体由23位字节的二进制矢量暗示,则X 与二进制串(<b 22 b 21…… b 0>)2之间的映射如下:()22222102010bb ......b 2'i i i b x =⎛⎫=•= ⎪⎝⎭∑;232'21x x π=- 顺应度函数: 因为请求f(x)的最值,所以顺应度函数即可为f(x).但为了确保在轮赌法选择过中,每个个别都有被选中的可能性,是以须要将所有顺应度调剂为大于0的值.是以,设计求最大值的顺应度函数如下:将最小问题转化为求-f(x)的最大值,同理,设计最小值的顺应度函数如下:种群大小:本试验默以为50,再进行种群初始化.试验参数:重要有迭代数,交叉概率,变异概率这三个参数.一般交叉概率在0.6-0.9规模内,变异概率在0.01-0.1规模内.可以经由过程手动输入进行调试.重要代码如下:void initialize()//种群初始化{srand(time(NULL));int i,j;for(i=0;i<popsize;i++)for(j=0;j<23;j++)population[i].gene[j]=rand()%2;void transform()//染色体转化为实数x{int i,j;for(i=0;i<=popsize+1;i++){population[i].realnumber=0;for(j=0;j<23;j++)population[i].realnumber+=population[i].gene[j]*pow(2 ,j);population[i].realnumber=population[i].realnumber*2*p i/(pow(2,23)-1);}}void cal_fitness()//盘算顺应度{int i;for(i=0;i<popsize;i++)population[i].fitness=population[i].realnumber*sin(po pulation[i].realnumber)+6;}void select()//选择操纵{int mem,i,j,k;double sum=0;double p;for (mem=0;mem<popsize;mem++)sum+=population[mem].fitness;for (mem=0;mem<popsize; mem++)population[mem].rfitness=population[mem].fitness/sum;population[0].cfitness=population[0].rfitness;for (mem=1;mem<popsize;mem++)population[mem].cfitness=population[mem-1].cfitness+population[mem].rfitness;for (i=0;i<popsize;i++){ //轮赌法选择机制p=rand()%1000/1000.0;if (p<population[0].cfitness)newpopulation[i]=population[0];else{for (j=0;j<popsize;j++)if(p>=population[j].cfitness&&p<population[j+1].cfitness)newpopulation[i]=population[j+1];}}for (i=0;i<popsize;i++)//复制给下一代population[i]=newpopulation[i];}void cross()//交叉操纵{int i, mem, one;int first = 0;double x;for(mem=0;mem<popsize;mem++){x = rand()%1000/1000.0;if (x<pcross){++first;if (first%2==0)Xover(one,mem);//个别间染色体进行交叉函数else one=mem;}}}void mutate()//变异操纵{int i, j,t;double x;for (i=0;i<popsize;i++)for(j=0;j<length;j++){x=rand()%1000/1000.0;if (x<pvariation){if(population[i].gene[j])population[i].gene[j]=0; else population[i].gene[j]=1;}}}void cal_max()//盘算最大值{int i;double max,sum=0;int max_m;max=population[0].fitness;for(i=0;i<popsize-1;i++){if(population[i].fitness>population[i+1].fitness)if(population[i].fitness>=max){max=population[i].fitness;max_m=i;}else if(population[i+1].fitness>=max){max=population[i+1].fitness;max_m=i + 1;}}if(max>population[popsize].fitness){iteration=0;for (i=0;i<length;i++)population[popsize].gene[i]=population[max_m].gene[i]; population[popsize].fitness=population[max_m].fitness; }for (i=0;i<length;i++)sum=population[popsize].gene[i]-population[max_m].gene[i];if(sum==0)iteration++;transform();printf("%f,%f,%f,%f\n",population[popsize].fitness,po pulation[popsize+1].fitness,population[popsize].realnumbe r,population[popsize+1].realnumber);}【试验成果】。

人工智能遗传算法实验报告

人工智能遗传算法实验报告

人工智能实验报告学号:姓名:实验名称:遗传算法实验日期:2016.1.5【实验名称】遗传算法【实验目的】掌握遗传算法的基本原理,熟悉遗传算法的运行机制,学会用遗传算法来求解问题。

【实验原理】遗传算法( Genetic Algorithm )是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。

每个个体实际上是染色体带有特征的实体。

在一开始需要实现从表现型到基因型的映射即编码工作。

由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。

这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。

遗传算法程度流程图为:【实验名称】遗传算法【实验目的】掌握遗传算法的基本原理,熟悉遗传算法的运行机制,学会用遗传算法来求解问题。

【实验原理】遗传算法( Genetic Algorithm )是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。

遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。

每个个体实际上是染色体带有特征的实体。

在一开始需要实现从表现型到基因型的映射即编码工作。

由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。

关于遗传算法的实验报告

关于遗传算法的实验报告
Na.BSgenerAt ion:Nd. Blgfeneration:
No.829DRBratlDn:
Hd・93g«nBratiuo■
No.8^gtner*tton:
No. SEgtnei'At ion:
He,S6gtneration:
Nd.S7g&negation:Hu . USifencrAt ±un:
HlaiHim UUBl L UH1UUU1L0L
X=2 .tJBtib21
p=2.btL4?9y
I he
No. 82
genepation:
ei0101anooei1eelsaol101
x=2.Q88621
p=2.81479?
I he
No. 83
jeneration:
01310101ao@l103109011Q1
x^2.688613
81479?
1 he
No.
jeneration:
Bl&1BlW1OUei1H01UUO1 twi
X=Z .tlBHblB
^=2-B147y»
lhe
No.Vt
jeneration:
Ml U1 uitdl HUtll 1(*)1
x=2.MHHblH
The
No.91
gfenei?at ion:
I he
Nu .)6
genericion:
81 Bl 8101080丄18S109O1JL丄0
x-2.688621
^-2.814791
I he
No.?7
jeneratlorn:
sisiei01ao@iiop丄Oso1丄1日
x=2.B88621

遗传算法求函数最大值实验报告

遗传算法求函数最大值实验报告

遗传算法求函数最大值实验报告遗传算法是一种模拟自然界进化过程的优化算法,它通过模拟生物进化过程中的遗传、交叉和变异等机制,逐步优化解空间中的个体,以找到问题的最优解。

在本次实验中,我们利用遗传算法来求解一个函数的最大值。

下面我们将详细介绍实验的过程和结果。

首先,我们选择了一个简单的函数作为实验对象,即f(x) = x^2,在x的范围为[-10, 10]。

我们的目标是找到使函数值最大的x。

首先,我们需要定义遗传算法中的基本元素,包括编码方式、适应度函数、选择策略、交叉和变异操作等。

在本实验中,我们选择二进制编码方式,将x的范围[-10, 10]离散化为10位的二进制编码。

适应度函数即为f(x) = x^2,它表示个体的适应度。

选择策略采用轮盘赌选择算法,交叉操作采用单点交叉,变异操作采用随机位变异。

接下来,我们需要初始化种群,并迭代进行交叉和变异操作,直到满足终止条件。

在每一代中,我们根据适应度函数对种群中的个体进行评估,并根据选择策略选择父代个体进行交叉和变异操作。

通过交叉和变异操作,产生新的子代个体,并替代原有种群中的个体。

在本次实验中,我们设置了100个个体的种群,并进行了100代的迭代。

实验结果显示,经过多次迭代,算法逐渐优化到了最优解。

最终找到了使函数值最大的x,即x=10,对应的函数值为100。

总结起来,本次实验利用遗传算法求解函数的最大值,展示了遗传算法在优化问题中的应用。

通过适当选择编码方式、适应度函数和操作策略,我们可以有效地找到问题的最优解。

在后续的研究中,我们可以进一步探索遗传算法在更复杂问题上的应用,并通过改进算法的参数和操作策略来提高算法的性能。

遗传算法实验报告

遗传算法实验报告

遗传算法实验报告遗传算法实验报告引言:遗传算法是一种模拟生物进化过程的优化算法,通过模拟自然选择、遗传变异和交叉等操作,逐步优化问题的解。

本实验旨在探究遗传算法在解决优化问题中的应用,并通过实验验证其效果。

一、实验背景遗传算法最早由美国科学家约翰·霍兰德于20世纪60年代提出,其灵感来源于达尔文的进化论。

遗传算法通过基因编码、适应度评估、选择、交叉和变异等操作,模拟了进化过程中的遗传和变异,从而找到问题的最优解。

二、实验目的本实验旨在通过遗传算法解决一个经典的优化问题,验证其在解决实际问题中的有效性。

同时,对遗传算法的参数设置和操作过程进行调整和优化,以提高算法的性能。

三、实验步骤1. 问题定义:选择一个经典的优化问题,例如旅行商问题(TSP)或背包问题。

2. 解空间建模:将问题的解表示为染色体,设计基因编码方式。

3. 适应度函数定义:根据问题的特点,设计一个能够评估染色体解的适应度函数。

4. 初始化种群:随机生成一组初始染色体,作为种群。

5. 选择操作:根据适应度函数,选择一部分较优秀的染色体作为父代。

6. 交叉操作:通过交叉操作,生成新的子代染色体。

7. 变异操作:对子代染色体进行变异操作,引入新的基因变异。

8. 适应度评估:计算新的子代染色体的适应度。

9. 父代替换:根据适应度函数,选择一部分较优秀的子代染色体替换掉父代染色体。

10. 终止条件判断:判断是否满足终止条件,若满足则结束算法,否则返回步骤5。

11. 输出结果:输出最优解及其适应度值。

四、实验结果与分析通过实验,我们得到了一组优化问题的最优解,并计算出其适应度值。

通过观察实验结果,我们可以发现遗传算法在解决优化问题中的有效性。

同时,我们还可以通过调整遗传算法的参数和操作过程,进一步提高算法的性能。

五、实验总结通过本次实验,我们深入了解了遗传算法的原理和应用。

遗传算法作为一种优化算法,具有较强的适应性和鲁棒性,在解决实际问题中具有广泛的应用前景。

遗传算法实验报告

遗传算法实验报告

人工智能实验报告遗传算法实验报告一、问题描述对遗传算法的选择操作,设种群规模为4,个体用二进制编码,适应度函数,x的取值区间为[0,30]。

若遗传操作规定如下:(1)选择概率为100%,选择算法为轮盘赌算法;(2)交叉概率为1,交叉算法为单点交叉,交叉顺序按个体在种群中的顺序;(3)变异几率为0请编写程序,求取函数在区间[0,30]的最大值。

二、方法原理遗传算法:遗传算法是借鉴生物界自然选择和群体进化机制形成的一种全局寻优算法。

与传统的优化算法相比,遗传算法具有如下优点:不是从单个点,而是从多个点构成的群体开始搜索;在搜索最优解过程中,只需要由目标函数值转换得来的适应值信息,而不需要导数等其它辅助信息;搜索过程不易陷入局部最优点。

目前,该算法已渗透到许多领域,并成为解决各领域复杂问题的有力工具。

在遗传算法中,将问题空间中的决策变量通过一定编码方法表示成遗传空间的一个个体,它是一个基因型串结构数据;同时,将目标函数值转换成适应值,它用来评价个体的优劣,并作为遗传操作的依据。

遗传操作包括三个算子:选择、交叉和变异。

选择用来实施适者生存的原则,即把当前群体中的个体按与适应值成比例的概率复制到新的群体中,构成交配池(当前代与下一代之间的中间群体)。

选择算子的作用效果是提高了群体的平均适应值。

由于选择算子没有产生新个体,所以群体中最好个体的适应值不会因选择操作而有所改进。

交叉算子可以产生新的个体,它首先使从交配池中的个体随机配对,然后将两两配对的个体按某种方式相互交换部分基因。

变异是对个体的某一个或某一些基因值按某一较小概率进行改变。

从产生新个体的能力方面来说,交叉算子是产生新个体的主要方法,它决定了遗传算法的全局搜索能力;而变异算子只是产生新个体的辅助方法,但也必不可少,因为它决定了遗传算法的局部搜索能力。

交叉和变异相配合,共同完成对搜索空间的全局和局部搜索。

三、实现过程(1)编码:使用二进制编码,随机产生一个初始种群。

遗传算法实验报告

遗传算法实验报告

遗传算法实验报告遗传算法实验报告引言:遗传算法是一种模拟自然选择和遗传机制的优化算法,它通过模拟基因的变异和交叉来寻找问题的最优解。

本实验旨在通过编写遗传算法程序,探索其在求解优化问题中的应用。

一、实验背景遗传算法最初是为了模拟达尔文的进化论而提出的。

通过模拟自然界中的进化过程,遗传算法可以逐步优化解空间,找到问题的最优解。

遗传算法适用于各种优化问题,如旅行商问题、背包问题等。

二、实验目的本实验旨在通过编写遗传算法程序,研究其在求解优化问题中的效果。

具体目标如下:1. 熟悉遗传算法的基本原理和流程;2. 实现一个简单的遗传算法程序;3. 运用该程序求解一个具体的优化问题。

三、实验步骤1. 确定问题:选择一个具体的优化问题,如旅行商问题;2. 设计编码方式:将问题转化为遗传算法可以处理的编码形式,如二进制编码;3. 初始化种群:随机生成一定数量的个体作为初始种群;4. 评估适应度:根据问题的目标函数,计算每个个体的适应度;5. 选择操作:根据适应度选择优秀的个体作为父代,采用轮盘赌等方法进行选6. 交叉操作:对选出的父代进行交叉操作,生成新的个体;7. 变异操作:对新个体进行变异操作,引入随机性;8. 更新种群:将原种群和新生成的个体合并,更新种群;9. 判断终止条件:判断是否满足终止条件,如达到最大迭代次数或找到最优解;10. 输出结果:输出找到的最优解。

四、实验结果本实验选择旅行商问题作为优化问题进行求解。

旅行商问题是一个经典的组合优化问题,目标是找到一条最短路径,使得旅行商可以依次访问一系列城市并回到起点。

经过多次实验,得到了如下结果:- 初始种群大小为100个个体;- 迭代次数为1000次;- 交叉概率为0.8,变异概率为0.01;- 最优解为路径长度为1000的路径。

五、实验分析通过对遗传算法的实验结果进行分析,可以得出以下结论:1. 遗传算法能够在一定程度上寻找到问题的最优解,但并不能保证一定找到全局最优解;2. 实验中的参数设置对算法的性能有很大影响,不同的参数设置可能导致不同的结果;3. 遗传算法适用于解决各种优化问题,但对于复杂问题可能需要更多的优化和六、实验总结通过本次实验,我们深入了解了遗传算法的原理和应用。

技术报告_遗传算法

技术报告_遗传算法

遗传算法1.概述遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。

每个个体实际上是染色体(chromosome)带有特征的实体。

染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。

因此,在一开始需要实现从表现型到基因型的映射即编码工作。

由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。

这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。

1.1产生与背景生物只有经过许多世代的不断进化(evolution,演化),才能更好地完成生存与繁衍的任务。

遗传算法也遵循同样的方式,需要随着时间的推移不断成长、演化,最后才能收敛,得到针对某类特定问题的一个或多个解。

了解一些有关有生命的机体如何演化的知识,对理解遗传算法的演化机制是是有帮助的。

从本质上说,任何生物机体不过就是一大堆细胞的集合。

每个细胞都包含若干组相同的DNA链,人们一般称之为染色体(chromosome)。

染色体中包含的DNA分为两股,这两股DNA 链以螺旋状绞合在一起,这就是我们所熟悉的DNA双螺旋结构模型。

图 1.1 DNA双螺旋结构单个染色体是由称作基因(gene)的更小结构模块组成,而基因则又由称作核苷酸(nucleotide)的物质组成。

用于函数优化的遗传算法的报告

用于函数优化的遗传算法的报告

八个常用的测试函数
二维球形函数: f ( x , y ) x y , 5.12 x 5.12 De Jong函数: f ( x , y ) 100( y x ) ( x 1) x , y [ 2.048, 2.048] Goldstein--price函数: f ( x , y ) [1 ( x y 1) (1 9 1 4 x 3 y 1 4 x 6 xy 3 x )]
2 4 6 2 4 5
2 2 6
f 4 ( x , y ) ( x y 11) ( x y 7) x , y [ 6, 6]
2 2 2
5
5
7
i 1
i 1
2
2
8
6 x y 10
2 2
15
2012-7-20
运行结果
函数 最优值 最差值 平均值 实际最优值 0 0 3 f1(x) f2(x) f3(x) -1.2207e-008 2.2631e-006 3 1.2207e-005 1.9232e-004 3.0001 6.6530e-006 8.9500e-005 3
f4(x)
f5(x) f6(x) f7(x) f8(x)
6.8081e-008
-1.0316 -0.1848 -186.7308 -2.1188
2.2219e-005
-1.0309 -0.1848 -186.7012 -2.1188
8.5730e-006
-1.0143 -0.1848 -186.7291 -2.1188
F (1) F ( 2 ) F ( i 1) ada_sum * rand F(1) F ( 2 ) F ( i )

TSP的遗传算法程序实验报告

TSP的遗传算法程序实验报告

TSP的遗传算法程序一、实验原理遗传算法的流程如图所示:二、程序的主要思想使用C语言实现TSP的遗传算法根据遗传算法的原理,自定义所需的初始染色体长度、初始群体大小、最大的迭代次数、交叉概率以及变异概率。

初始时生成与染色体长度相同个数的城市,为每个城市随机生成平面坐标,将城市的初始生成的顺序作为初始的路径,即第一条染色体。

计算路径中相邻城市之间的距离,并进行保存。

将生成的城市再进行多次的重新排列,得到多条不同的路径,将这些路径作为初始群体里的染色体,计算每条路径的长度。

通过自定义的适应度函数计算染色体的适应度,通过交叉、变异生成新的种群。

对新种群继续迭代操作,直到达到初始定义的迭代次数,获得最终的路径及路径图。

三、程序的主要步骤①染色体初始化的子函数1)void initialize()2){int k,j,minx,miny,maxx,maxy;3)initdata();4)minx=0;5)miny=0;6)maxx=0;maxy=0;7)for(k=0;k<lchrom;k++)8){x[k]=rand();9)if(x[k]>maxx)maxx=x[k];10)if(x[k]<minx)minx=x[k];11)y[k]=rand();12)if(y[k]>maxy)maxy=y[k];13)if(y[k]<miny)miny=y[k];14)}15)if((maxx-minx)>(maxy-miny))16){maxxy=maxx-minx;}17)else {maxxy=maxy-miny;}18)maxdd=0.0;19)for(k=0;k<lchrom;k++)20)for(j=0;j<lchrom;j++)21){dd[k*lchrom+j]=hypot(x[k]-x[j],y[k]-y[j]);22)if(maxdd<dd[k*lchrom+j])maxdd=dd[k*lchrom+j];23)}24)refpd=dd[lchrom-1];25)for(k=0;k<lchrom;k++)26)refpd=refpd+dd[k*lchrom+k+2];27)for(j=0;j<lchrom;j++)28)dd[j*lchrom+j]=4.0*maxdd;29)ff=(0.765*maxxy*pow(lchrom,0.5));30)minpp=0;31)min=dd[lchrom-1];32)for(j=0;j<lchrom-1;j++)33){if(dd[lchrom*j+lchrom-1]<min)34){min=dd[lchrom*j+lchrom-1];35)minpp=j;36)}37)}38)initpop();39)statistics(oldpop);40)initreport();41)}7) for(k=0;k<lchrom;k++)8) {x[k]=rand();9) if(x[k]>maxx)maxx=x[k];10)if(x[k]<minx)minx=x[k];11)y[k]=rand();12)if(y[k]>maxy)maxy=y[k]13)if(y[k]<miny)miny=y[k];14)}此段程序是初始化多个城市的坐标值(x,y),其中(x[k],y[k])代表第k+1个城市的坐标值,也相当于初始染色体的第k+1个基因值。

遗传算法实验报告

遗传算法实验报告

实验一利用遗传算法求 Rosenbrock 函数的极大值实验目的:1 进一步加深对遗传算法理论的理解2 读懂遗传算法求极值的程序3 掌握二进制编码的实现方法实验内容:已知Rosenbrock 函数:对Rosenbrock 函数极大值遗传算法仿真程序进行学习及分析。

实验要求:1 阅读下面的程序,找到该程序的“编码、解码” 及“复制、交换、变异” 的程序段;2 指出该程序中“种群大小”“终止进化代数”“交换概率”“变异概率” 各参数的值分别为多少。

种群大小:100;终止进化代数:200;交换概:0.8;变异概:0.13 通过改变“群体大小、终止进化代数、交叉概率、变异概率”,分析各参数对优化效果的影响。

4 记录程序运行结果。

将种群大小改为120,终止进化代数改为80,交换概率改为0.7,变异概率改为0.15得到如下结果最优结果为Max_Value =3905.9实验二求函数的极小值实验目的:1 掌握遗传算法求极小值的程序2 掌握多变量极值问题的编码实现方法3 掌握遗传算法的三个基本算子程序实现实验内容:已知含三自变量函数如下:利用遗传算法求函数的极小值。

实验要求:1 以实验一程序为基础,修改相应程序段,实现上述函数最小值计算;2 记录程序运行结果3 多次运行程序,结果是否相同?为什么?第一次Min_Value =0.00087第二次Min_Value =0.0013多次运行结果不一样是由于在优化的过程中在某一代会出现不同的走向,因此每次实验结果会不一样。

图1第一次运行结果图2 第二次运行结果实验三 基于遗传算法求解 TSP 问题实验目的:1 理解 TSP 问题的含义2 掌握遗传算法求解 TSP 问题的编码方法3 学会选取合适的适应度函数4 根据已给的程序, 理解三个遗传算子的实现方法实验内容:TSP 问题是典型的优化问题, 遗传算法是解决优化问题的有效方法。

根据已给的遗传算法程序, 求解当城市数量分别为 8 和 30 时, 得到的最优路径。

遗传算法实验报告

遗传算法实验报告

遗传算法实验报告一、实验目的遗传算法是一种基于自然选择和遗传机制的优化算法,本次实验的主要目的是深入理解遗传算法的原理和工作机制,并通过实际编程实现来解决特定的优化问题,观察其性能和效果。

二、实验原理遗传算法模拟了生物进化的过程,通过对一组潜在的解决方案(称为个体或染色体)进行选择、交叉和变异操作,逐步迭代优化,以找到最优或近似最优的解。

在遗传算法中,每个个体都由一组基因表示,这些基因对应于问题的参数。

适应度函数用于评估每个个体的优劣程度,适应度高的个体更有可能被选择进行繁殖,产生下一代个体。

选择操作通常基于个体的适应度比例,适应度高的个体有更高的概率被选中。

交叉操作将两个父代个体的基因部分组合,生成新的子代个体。

变异操作则以一定的概率随机改变个体的某些基因,以增加种群的多样性。

三、实验环境本次实验使用 Python 编程语言,主要依赖的库有 numpy 用于数组操作,matplotlib 用于结果可视化。

四、实验步骤1、问题定义确定要优化的问题,例如求解函数的最大值或最小值,或者在给定约束条件下寻找最优的参数组合。

定义适应度函数,用于衡量每个个体的优劣。

2、编码方案确定如何将问题的解编码为染色体的形式。

常见的编码方式有二进制编码、实数编码等。

3、初始化种群随机生成一定数量的初始个体,组成初始种群。

4、选择操作根据个体的适应度计算选择概率,使用轮盘赌选择或其他选择方法选择父代个体。

5、交叉操作对选中的父代个体进行交叉,生成子代个体。

6、变异操作以一定的概率对个体的基因进行变异。

7、迭代更新重复进行选择、交叉和变异操作,生成新的种群,直到满足终止条件(如达到最大迭代次数或找到满意的解)。

8、结果分析对最终得到的最优个体进行解码,得到问题的解。

分析遗传算法的性能,如收敛速度、解的质量等。

五、实验结果与分析以求解函数 f(x) = x^2 在区间 0, 10 上的最大值为例,进行了遗传算法的实验。

1、适应度函数定义适应度函数直接采用目标函数 f(x) = x^2 ,即适应度越高,函数值越大。

关于遗传算法的实验报告

关于遗传算法的实验报告

关于遗传算法的实验报告一、实验目的:理解和掌握遗传算法的应用及意义,能用一门自己擅长的语言实现遗传算法的基本功能,在此基础上进一步理解和巩固对遗传算法的重要,以便在今后的学习和工作中能有效的运用和借鉴!需要指出的是遗传算法并不是能保证所得到的就是最佳的答案但通过一定的方法可以将误差控制在一定的范围内!二、实验原理和题目:1.遗传算法是一种基于空间搜索的算法,它通过自然选择、遗传、变异等操作以及达尔文的适者生存的理论,模拟自然进化过程来寻找所求问题的答案。

其求解过程是个最优化的过程。

一般遗传算法的主要步骤如下:(1)随机产生一个确定长度的特征字符串组成的初始种群。

(2)对该字符串种群迭代地执行下面的步骤a和步骤b,直到满足停止准则为止:a计算种群中每个个体字符串的适应值;b应用复制、交叉和变异等遗传算子产生下一代种群。

(3)把在后代中表现的最好的个体字符串指定为遗传算法的执行结果,即为问题的一个解。

2.通过编码、设置种群、设置适应度函数、遗传操作、解码产生需要的解。

f(x)=x*sin(x)+1,x∈[0,2π],求解f(x)的最大值和最小值。

三、实验条件硬件:微型计算机。

语言:本实验选用的为C++语言。

四、实验内容:建造针对f(x)的遗传算法程序,然后进行运行求解。

五、实验步骤:1. 确定基本功能:本实验是实现f(x)的最大值和最小值的求解。

2. 对f(x)进行编码:用一个二进制矢量表示一个染色体,由染色体来代表变量x的实数值,这里精度取小数点后6位数,变量x的域长为2π,整个区间被分为2π*1000000个等长的区间。

由于2π*1000000在23位二进制数的表示范围呢,所以,编码长度为23位。

3. 设计适应度函数:由于要求f(x)的最值,所以适应度函数可根据f(x)做适当的改变。

最大值:f(x)=x*sin(x)+5;最小值:f(x)=1/(x*sin(x)+5 );4. 针对f(x)的设计并且实现遗传算法程序:遗传操作主要包括复制、交叉和变异。

遗传算法实验

遗传算法实验

实验四遗传算法实验一、实验目的:熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响。

二、实验原理:旅行商问题,即TSP问题(TravelingSalesmanProblem)是数学领域中著名问题之一。

假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。

路径的选择目标是要求得的路径路程为所有路径之中的最小值。

TSP问题是一个组合优化问题。

该问题可以被证明具有NPC计算复杂性。

因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。

遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程。

它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体。

这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。

后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。

群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。

要求利用遗传算法求解TSP问题的最短路径。

三、实验内容及要求1、参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。

2、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。

3、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。

4、上交源代码。

四、实验结果(根据实验报告要求)1、画出遗传算法求解TSP问题的流程图。

2、分析遗传算法求解不同规模的TSP问题的算法性能。

(1)遗传算法执行方式说明:适应度值计算方法:当前路线的路径长度个体选择概率分配方法:适应度比例方法选择个体方法:轮盘赌选择交叉类型:PMX交叉变异类型:两点互换变异(2)实验模拟结果:城市个数历欢最好适应度历次最差适应度运行时间/血688.854388.3543379910146.009154.679352515210.027250.067429720278.942366.18L644025392.002■168,03630430513.155567.738704735627.6336S4.323855240745.577735,756927245727.03S25.06810434图2图1由图1和图2可知,遗传算法执行时间随着TSP问题规模的增大而增大,并且大致为线性增长。

遗传算法试验报告

遗传算法试验报告

智能优化计算课程试验报告实验要求:用遗传算法解决下面函数的极小值问题:遗传算法的具体实施策略不限,最好用MATLAB,上交内容包括源程序和运行结果实验内容:目标函数是一个含有30维变量的复杂型超越函数,决定使用MA TLAB7.0下的遗传函数工具箱来寻找函数最小值。

一.函数编辑在m文件下编辑目标函数:function y =fun(x);y = zeros(size(x,1),1); %产生一个列向量,(种群数)*1,作为预留解空间[xSize, Dim] = size(x); %xSize:种群数; Dim:变量x的维数indices = repmat(1:Dim, xSize, 1); %生成函数中i的空间矩阵,(种群数)*(变量维数)y = sum(((x.^2) / 4000)')' - prod(cos(x ./ sqrt(indices))')' + 1; %函数表达式,此处均采用矩阵点乘的形式二.遗传算法参数设置通过gatool(遗传算法工具箱)设置参数,运行程序,选择合适参数。

Number of variables(变量维数):30Population size:100Initial range:[-600;600]Selection function (选择函数): tournament(锦标赛); tournament size:2Mutation function (变异函数): Uniform(); Rate:0.05Crossover function: Intermediate; Ratio: 0.05Generrations: 5000; Stall generations: Inf; Stall time limite: InfFitness function is vectorized: on其余均为工具箱默认参数。

三.运行程序将设置好参数的算法程序运行30次运行,最佳运行结果为:3.4937e-010x1~x30取值:1.0e-004 *-0.0097 0.0017 0.0587 -0.0250 0.0765 0.0391 -0.0824 0.0653 -0.0539 -0.3470 -0.1078 0.4388 0.0223 0.0363 0.0003 0.0228 -0.0481 -0.4491 -0.5006 -0.2514 0.0608 -0.1022 0.3454 0.11460.0768 -0.0203 0.0910 -0.0571 0.0065 -0.138450010001500200025003000350040004500500005001000GenerationF i t n e s s v a l ue Best: 3.4999e-010 Mean: 15.0886010203040506070809010005001000Fitness of Each Individual四.保存遗传算法程序将在工具箱中编辑好的算法导出为m 函数并保存:function [X,FVAL,REASON,OUTPUT,POPULATION,SCORES] = untitled%% This is an auto generated M file to do optimization with the Genetic Algorithm and % Direct Search Toolbox. Use GAOPTIMSET for default GA options structure.%%Fitness functionfitnessFunction = @fun;%%Number of Variablesnvars = 30;%Start with default optionsoptions = gaoptimset;%%Modify some parametersoptions = gaoptimset(options,'PopInitRange' ,[-600 ; 600 ]);options = gaoptimset(options,'PopulationSize' ,100);options = gaoptimset(options,'Generations' ,5000);options = gaoptimset(options,'StallGenLimit' ,Inf);options = gaoptimset(options,'StallTimeLimit' ,Inf);options = gaoptimset(options,'PlotInterval' ,30);options = gaoptimset(options,'SelectionFcn' ,{ @selectiontournament 2 }); options = gaoptimset(options,'CrossoverFcn' ,{ @crossoverintermediate 0.05 }); options = gaoptimset(options,'MutationFcn' ,{ @mutationuniform 0.05 });options = gaoptimset(options,'Display' ,'off');options = gaoptimset(options,'PlotFcns' ,{ @gaplotbestf });options = gaoptimset(options,'Vectorized' ,'on');%%Run GA[X,FVAL,REASON,OUTPUT,POPULATION,SCORES] = ga(fitnessFunction,nvars,options);以上结果亦可在m文件中直接运行获得。

遗传算法实验

遗传算法实验

实验四遗传算法实验一、实验目的:熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解TSP问题的流程并测试主要参数对结果的影响。

二、实验原理:旅行商问题,即TSP问题(Traveling Salesman Problem)是数学领域中著名问题之一。

假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。

路径的选择目标是要求得的路径路程为所有路径之中的最小值。

TSP问题是一个组合优化问题。

该问题可以被证明具有NPC计算复杂性。

因此,任何能使该问题的求解得以简化的方法,都将受到高度的评价和关注。

遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程。

它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体。

这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。

后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程。

群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。

要求利用遗传算法求解TSP问题的最短路径。

三、实验内容及要求1、参考实验系统给出的遗传算法核心代码,用遗传算法求解TSP的优化问题,分析遗传算法求解不同规模TSP问题的算法性能。

2、对于同一个TSP问题,分析种群规模、交叉概率和变异概率对算法结果的影响。

3、增加1种变异策略和1种个体选择概率分配策略,比较求解同一TSP问题时不同变异策略及不同个体选择分配策略对算法结果的影响。

4、上交源代码。

四、实验结果(根据实验报告要求)1、画出遗传算法求解TSP问题的流程图。

问题确定表示问题解的染色体(编码)初始化种群计算每个个体的适应值满足终止条件根据适应值选择输出最优解交叉变异2、分析遗传算法求解不同规模的TSP问题的算法性能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 二进制编码函数优化
一、实验目的
利用一种基于二进制编码的优化方法的基本原理和操作步骤求解最优化问题,了解整个利用二进制编码的过程,选择,交叉,变异等等。

使适应性函数值逐步逼近最优解,并进行在Visual C++ 6.0进行仿真,编译。

二、实验仪器
机械楼计算机中心计算机
三、实验内容及步骤
采用二进制编码方式优化如下测试函数: (1) De Jong 函数F1:
极小点f 1(0, 0, 0)=0。

(2) De Jong 函数F2:
极小点f 2(1,1) = 0。

(3) De Jong 函数F3:
对于]0.5,12.5[--∈i x 区域内的每一个点,它都取全局极小值30),,,,(543213-=x x x x x f 。

要求:对每一个测试函数,分析不同的种群规模(20~100)、交叉概率(0.4~0.99)和变异概率(0.0001~0.1)对优化结果的影响,试确定最佳参数组合。

四、实验报告
(1)De Jong函数F1采用二进制编码方式优化结果的折线图如图1所示:其中迭代数为100代,结果基本逼近最真实值。

图1 De Jong函数F1二进制编码优化结果折线图
(2)De Jong函数F2采用二进制编码方式优化结果的折线图如图2所示:其中迭代数为100代。

图2 De Jong函数F2二进制编码优化结果折线图
(3)De Jong函数F3采用二进制编码方式优化结果的折线图如图3所示:其中迭代数为200代。

图3 De Jong函数F3二进制编码优化结果折线图
实验二 实数编码函数优化
一、实验目的
利用一种基于实数编码的优化方法的基本原理和操作步骤求解最优化问题,并分析不同的变异方式(均匀变异、非均匀变异、自适应变异)的优化结果有什么区别。

并进行在Visual C++ 6.0进行仿真,编译。

二、实验仪器
机械楼计算机中心计算机
三、实验内容及步骤
采用实数编码方式优化如下测试函数: ⑴De Jong 函数F1:
极小点f 1(0, 0, 0)=0。

⑵De Jong 函数F2:
极小点f 2(1,1) = 0。

⑶De Jong 函数F3:
对于]0.5,12.5[--∈i x 区域内的每一个点,它都取全局极小值30),,,,(543213-=x x x x x f 。

要求:对每一个测试函数,分析不同变异方式(均匀变异、非均匀变异、自适
结果)
四、实验报告
(1)De Jong函数F1采用实数编码方式(均匀变异方式)优化结果的折线图如图4所示:其中迭代数为100代。

图4 De Jong函数F1实数编码优化结果折线图
(1)De Jong函数F1采用实数编码方式(非均匀变异方式)优化结果的折线图如图5所示:其中迭代数为100代。

图5 De Jong函数F1实数编码优化结果折线图
(1)De Jong函数F1采用实数编码方式(自适应变异方式)优化结果的折线图如图6所示:其中迭代数为100代。

图6 De Jong函数F1实数编码优化结果折线图
(2)De Jong函数F2采用实数编码方式(均匀变异方式)优化结果的折线图如图7所示:其中迭代数为100代。

图7 De Jong函数F2实数编码优化结果折线图
(2)De Jong函数F2采用实数编码方式(非均匀变异方式)优化结果的折线图如图8所示:其中迭代数为100代。

图8 De Jong函数F2实数编码优化结果折线图
(2)De Jong函数F2采用实数编码方式(非均匀变异方式)优化结果的折线图如图9所示:其中迭代数为100代。

图9 De Jong函数F2实数编码优化结果折线图
(3)De Jong函数F3采用实数编码方式(非均匀变异方式)优化结果的折线图如图10所示:其中迭代数为100代。

图10 De Jong函数F3实数编码优化结果折线图
(3)De Jong函数F3采用实数编码方式(非均匀变异方式)优化结果的折线图如图11所示:其中迭代数为100代。

图11 De Jong函数F3实数编码优化结果折线图
(3)De Jong函数F3采用实数编码方式(非均匀变异方式)优化结果的折线图如图12所示:其中迭代数为100代。

图12 De Jong函数F3实数编码优化结果折线图
实验三排列方式编码优化旅行商问题
一、实验目的
利用遗传算法解决旅行商问题,采用部分映射交叉算子和互换变异算子,并进行在Visual C++ 6.0进行仿真,编译。

二、实验仪器
机械楼计算机中心计算机
三、实验内容及步骤
用遗传算法求解旅行商问题(给出若干个城市,以及任意两个城市之间的距离。

给定从某一个城市出发,确定旅行商行走路线,使得最后回到原点的路线长度最短),其中城市随处位置的横坐标与纵坐标如表3.1所示。

表3.1 城市序号及对应坐标位置
序号横坐标纵坐标序号横坐标纵坐标
1 216 420 16 310 291
2 497 657 17 215 782
3 360 170 18 315 192
4 860 346 19 327 121
5 115 638 20 443 30
6 564 390 21 37
7 335
7 775 569 22 287 128
8 651 483 23 957 37
9 225 60 24 620 871
10 245 926 25 818 310
11 821 383 26 550 401
12 991 511 27 298 36
13 842 486 28 572 787
14 463 394 29 41 892
15 84 545 30 555 855
要求采用部分映射交叉算子和互换变异算子。

分析不同参数组合对结果的影响。

四、实验报告
排列编码优化旅行商问题优化结果的折线图如图13所示:其中迭代数为500代。

图13 旅行商优化结果折线图。

相关文档
最新文档