遗传算法

遗传算法与MATLAB

。_饼干妹妹 提交于 2020-03-10 13:28:47
遗传算法与MATLAB (一)遗传算法:遗传算法是模拟达尔文生物进化论的自然选择和遗传机理的生物进化过程的计算模型,是一种模拟自然进化过程搜索最优解的方法。 (二)应用层面:遗传算法存在自身缺陷性,如搜索的最优解并不是我们想要的,该算法是逼近最优解,所以常用来研究各种非线性、多变量、多目标、复杂的自适应系统问题(涵盖类:实验数据处理,图像处理,数值拟合等)。 (三)遗传算法的六大基本特征 (1)智能式搜索:目标函数是基础 (2)渐进式优化:利用、复制、交换、突变等操作,使下一代结果优于上一代 (3)全局最优解:利用交换和突变操作产生的新个体,使得搜索得到的优化结果逼近全局最优解 (4)黑箱式结构:只考虑输入和输出关系的黑箱式结构 (5)通用性强:不要求明确的数学表达式,框架式算法 (6)并行式运算:每次迭代都是对种群的所有个体进行运算,搜索速度快,效率高 (四)基本过程(如下图) (1)编码、随机产生的初始种群 (2)个体评价、确定是否输出 (2)选择操作 (3)随机交叉运算 (4)随机变异运算 (5)转向个体评价,开始循环 (五)编码:遗传算法的工作对象是字符串 (六)适应度:衡量个体优劣的尺度,由适应度来决定个体的繁殖数量、是否存活、适应度是驱动遗传算法的动力 (七)复制:复制算子将优良的个体在下一代予以繁殖,体现了“适者生存”自然选择原则。复制的数量是按适应度的大小来决定的。

实数编码的遗传算法与MATLAB

久未见 提交于 2020-03-10 10:52:53
实数编码的遗传算法与MATLAB (一)函数示例 Z = x.^2-10*cos ( 2*pi*x ) +10+y.^2-10*cos ( 2*pi*y ) +10 (二)MATLAB的实现 1)GAss(主函数) clc clear x = -5.12:0.01:5.12 ; y = -5.12:0.01:5.12 ; [ X,Y ] = meshgrid ( x,y ) ; Z = X.^2-10*cos ( 2*pi*X ) +10+Y.^2-10*cos ( 2*pi*Y ) +10 ; mesh ( X,Y,Z ) %%%%%%%%%%%%%%%初始化种群%%%%%%%%%%% N = 50 ; dim = 2 ; B = 5.12 ; Pc = 0.75 ; pm = 0.3 Po = -B+rand ( N,2 ) *2*B ; %%%%%%%%%%%%函数评价%%%%%%%%%%%%%%% for it = 1:10 for i = 1:N fit ( i ) = GAmb ( Po ( i,1 ) ,Po ( i,2 )) ; end [ ymax,ind1 ] = max ( fit ) ; figure ( 1 ) set ( gca, 'nextplot' , 'replace' ) ; mesh ( X,Y,Z ) hold on plot3 ( Po (

GA遗传算法解决经典TSP问题

て烟熏妆下的殇ゞ 提交于 2020-03-09 00:12:49
遗传算法 遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(genetic operators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。 下面以TSP为例编写程序

遗传算法

强颜欢笑 提交于 2020-03-06 05:16:34
00 目录 遗传算法定义 生物学术语 问题导入 大体实现 具体细节 代码实现 01 什么是遗传算法? 1.1 遗传算法的科学定义 遗传算法(Genetic Algorithm, GA)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。 其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,不需要确定的规则就能自动获取和指导优化的搜索空间,自适应地调整搜索方向。 遗传算法以一种群体中的所有个体为对象,并利用随机化技术指导对一个被编码的参数空间进行高效搜索。其中,选择、交叉和变异构成了遗传算法的遗传操作;参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容。 1.2 遗传算法的执行过程(参照百度百科) 遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(chromosome)带有特征的实体。 染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此

遗传算法求解高维函数(含MATLAB代码)

别来无恙 提交于 2020-02-17 06:35:51
本文代码出自网络上一位大神,年久失源,若代码原作者申明版权,请联系我进行删除! 高维函数属于NP问题,目前无标准方程可解。 用于求解“非劣解”逼近“最优解”的办法有很多,现在介绍“群智能算法”求解“高维函数”: 示例算法:遗传算法 待优化函数:f(x)=10 sin(5 x)+7*abs(x-5)+10) 【暂时先放MATLAB主程序代码,具体的算法分析会慢慢补充。 【需要MATLAB完整代码的去文章顶部的链接里面拿。 function genetic_algorithm_main ( ) clear ; clc ; popsize = 100 ; % 种群大小 chromlength = 10 ; % (染色体长度)二进制编码长度 pc = 0.6 ; % 交叉概率 pm = 0.001 ; % 变异概率 pop = initpop ( popsize , chromlength ) ; % 初始化种群 for i = 1 : 100 % 计算适应度值(函数值) % 函数“cal_objvalue里面就存着需要解的高维函数 : objvalue = 10 * sin ( 5 * x ) + 7 * abs ( x - 5 ) + 10 ; ” objvalue = cal_objvalue ( pop ) ; % 得到目标函数值objvalue fitvalue =

遗传算法在TSP问题中的应用

生来就可爱ヽ(ⅴ<●) 提交于 2020-02-14 21:59:35
遗传算法在TSP问题中的应用 什么是TSP问题? TSP问题是典型的组合优化问题,其也是遗传算法界中最为经典的优化问题之一。在遗算法成熟之前也一直困扰着科研人员,TSP问题又称为名旅行商问题,其定义为设有N个城市,推销员要从某一个城市前往另外N-1个城市,每个城市能去的次数有且仅有一次,最终回到出发的城市,要寻找的便是该推销人员走过的最短路径,也可以理解为给N个数目的城市附上一个加权完全图,每个城市都用一个顶点代替,每两个顶点之间一条无向加权边[2]。最终求解此无向加权完全图的最小哈米尔顿回路。 研究意义? TSP问题不仅仅是解决了TSP问题,其可以延伸到了许多其他问题当中,如下城市市区下水管道的铺设路径,物流公司物流配送货物等实际与生活息息相关的问题,这些问题的求解方法都可以应用于很多现实生活中的组合优化问题,是都是相当经典的组合问题,遗传算法是一种全局随机搜索的算法,对于解决各种组合优化问题都有着十分有效的作用,因此用遗传算法来解决这两个经典组合优化问题(本人在毕业论文的另外一个组合优化问题是有关营销利润的,有兴趣的可以私聊或者评论)是一种不错的选择。 算法在TSP中的实际应用步骤 (1)设定N个城市,每个城市用一个自然数代替,每个城市之间的距离制定成加权数据,对所有定义的城市进行随机编码,TSP问题中的编码,科研人员往往采用的时二进制字符编码和实数编码; (2)确定好各类参数

接下来的目标

☆樱花仙子☆ 提交于 2020-02-13 14:14:31
  把遗传算法运用到游戏架构里的想法失败了,但这种探索仍然具有意义。   接下来的事情,需要继续完善以前所做的调度器模型,尽量把它拆分成并行的模块。   在Sprite里引入完善的状态机机制。   需要学习的一个新的内容是矩阵,有“单元离散化后,最初的偏微分方程将变成某种形式的矩阵方程,它们把节点上的已知量(输入)和未知量(输出)联系起来,这样就可以逐个单元求解”希望能在这里对并行编程取得突破。另外游戏中涉及到地图的部分也需要这部分知识。 来源: https://www.cnblogs.com/GameCode/archive/2010/07/13/1776727.html

MATLAB数学建模:智能优化算法-遗传算法

让人想犯罪 __ 提交于 2020-02-07 02:55:58
遗传算法 遗传算法是模拟自然界生物进化机制进行迭代优化的算法. 它通过模拟"适者生存, 优胜劣汰" 的法则, 在所有可能的解决方法中找出最符合该问题所要求的条件的解决办法. 文章目录 遗传算法 1. 基本原理 1.1 选择 1.2 交叉 1.3 变异 1.4 终止条件 2. 程序设计 1. 基本原理 在遗传算法中, 通过编码组成初始群体后, 遗传操作的任务就是通过对群体中的每个个体进行适应度评评估进而进行筛选, 从而实现"优胜劣汰"的"进化"过程. 从优化搜索的角度而言, 遗传操作可使问题的解一代代地优化, 从而逼近最优解. 遗传算法包含三个基本遗传算子(genetic operator): 选择, 交叉和变异. 需要注意的是, 虽然个体遗传算子的操作都是在随机扰动的情况下进行的, 但这种随机化操作和传统的随机搜索方法存在差别: 遗传操作所进行的是高效有向的搜索. 遗传操作的效果和上述三个遗传算子所取的操作概率, 编码方法, 群体大小, 初始群体和适应度函数的设定密切相关. 1.1 选择 我们称"从群体中选择优胜的个体, 淘汰劣质的个体"的操作为 选择 . 选择算子又称再生算子. 选择操作建立在群体中个体的适应度评估之上. 目前常用的选择算子有: 适应度比例法 , 随机遍历抽样法 , 局部选择法 . 轮盘赌选择法 是最简单最常用的选择法. 在该方法中,

利用遗传算法进行优化的一个例子

主宰稳场 提交于 2020-02-04 14:43:48
优化变量为自变量x(1)和x(2); 约束为[-1,+1]; 目标函数为三个函数值的最大值最小! 主函数: clear all fun = @max_f;%定义适度函数 nvars=2;%定义变量个数 A = []; b = []; Aeq = []; beq = []; lb = [-1 -1]; ub = [+1 +1]; %% Start with the default options options = gaoptimset; %% Modify options setting options = gaoptimset(options,'Generations', 20);%定义代的数量 options = gaoptimset(options,'Display', 'off'); options = gaoptimset(options,'PlotFcns', { @gaplotbestf @gaplotbestindiv });%显示最优适度函数和最优个体 [x,fval,exitflag,output,population,score] = ... ga(@max_f,nvars,[],[],[],[],lb,ub,[],[],options); 适应度函数: function f=max_f(x) y1=x(1)^2+x(2)^+2*x(1)+x(2)-4 y2

基于遗传算法的柔性车间调度问题的求解(Flexible Job-shop scheduling problem based on genetic algorithm)

喜夏-厌秋 提交于 2020-02-01 02:48:50
1、前言 距离上次研究传统车间调度问题(Job-shop scheduling problem,JSP ),大约有一个月左右了,这期间研究了一下柔性作业车间调度(Flexible Job-shop scheduling problem,FJSP),并利用MATLAB实现了基于遗传算法的FJSP问题求解。在此与大家分享一下,有问题欢迎评论留言,共同交流学习,完整代码见 基于遗传算法的FJSP问题求解 (备注:该源码在原来的 作业车间调度算法 基础上修改,部分命名未及时修改,不影响代码质量)。 2、柔性车间调度问题描述 柔性作业车间调度问题是传统Job-Shop 调度问题的扩展。在传统的 Job-Shop 调度问题中,工件的每道工序只能在一台确定的机床上加工。而在柔性作业车间调度问题中,每道工序可以在多台机床上加工,并且在不同的机床上加工所需时间不同。柔性作业车间调度问题减少了机器约束,扩大了可行解的搜索范围,增加了问题的复杂性。 柔性作业车间调度问题的描述如下:一个加工系统有 m 台机器,要加工 n种工件。每个工件包含一道或多道工序,工件的工序顺序是预先确定的;每道工序可以在多台不同的机床上加工,工序的加工时间随机床的性能不同而变化。调度目标是为每道工序选择最合适的机器、确定每台机器上各工件工序的最佳加工顺序及开工时间,使系统的某些性能指标达到最优。此外