虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

生成算法

  • 遗传算法的MATLAB代码

    遗传算法为群体优化算法,也就是从多个初始解开始进行优化,每个解称为一个染色体,各染色体之间通过竞争、合作、单独变异,不断进化。 优化时先要将实际问题转换到遗传空间,就是把实际问题的解用染色体表示,称为编码,反过程为解码,因为优化后要进行评价,所以要返回问题空间,故要进行解码。SGA采用二进制编码,染色体就是二进制位串,每一位可称为一个基因;解码时应注意将染色体解码到问题可行域内。 遗传算法模拟“适者生存,优胜劣汰”的进化机制,染色体适应生存环境的能力用适应度函数衡量。对于优化问题,适应度函数由目标函数变换而来。一般遗传算法求解最大值问题,如果是最小值问题,则通过取倒数或者加负号处理。SGA要求适应度函数>0,对于<0的问题,要通过加一个足够大的正数来解决。这样,适应度函数值大的染色体生存能力强。 遗传算法有三个进化算子:选择(复制)、交叉和变异。 SGA中,选择采用轮盘赌方法,也就是将染色体分布在一个圆盘上,每个染色体占据一定的扇形区域,扇形区域的面积大小和染色体的适应度大小成正比。如果轮盘中心装一个可以转动的指针的话,旋转指针,指针停下来时会指向某一个区域,则该区域对应的染色体被选中。显然适应度高的染色体由于所占的扇形区域大,因此被选中的几率高,可能被选中多次,而适应度低的可能一次也选不中,从而被淘汰。算法实现时采用随机数方法,先将每个染色体的适应度除以所有染色体适应度的和,再累加,使他们根据适应度的大小分布于0-1之间,适应度大的占的区域大,然后随机生成一个0-1之间的随机数,随机数落到哪个区域,对应的染色体就被选中。重复操作,选出群体规模规定数目的染色体。这个操作就是“优胜劣汰,适者生存”,但没有产生新个体。 交叉模拟有性繁殖,由两个染色体共同作用产生后代,SGA采用单点交叉。由于SGA为二进制编码,所以染色体为二进制位串,随机生成一个小于位串长度的随机整数,交换两个染色体该点后的那部分位串。参与交叉的染色体是轮盘赌选出来的个体,并且还要根据选择概率来确定是否进行交叉(生成0-1之间随机数,看随机数是否小于规定的交叉概率),否则直接进入变异操作。这个操作是产生新个体的主要方法,不过基因都来自父辈个体。 变异采用位点变异,对于二进制位串,0变为1,1变为0就是变异。采用概率确定变异位,对每一位生成一个0-1之间的随机数,看是否小于规定的变异概率,小于的变异,否则保持原状。这个操作能够使个体不同于父辈而具有自己独立的特征基因,主要用于跳出局部极值。 遗传算法认为生物由低级到高级进化,后代比前一代强,但实际操作中可能有退化现象,所以采用最佳个体保留法,也就是曾经出现的最好个体,一定要保证生存下来,使后代至少不差于前一代。大致有两种类型,一种是把出现的最优个体单独保存,最后输出,不影响原来的进化过程;一种是将最优个体保存入子群,也进行选择、交叉、变异,这样能充分利用模式,但也可能导致过早收敛。 由于是基本遗传算法,所以优化能力一般,解决简单问题尚可,高维、复杂问题就需要进行改进了。 下面为代码。函数最大值为3905.9262,此时两个参数均为-2.0480,有时会出现局部极值,此时一个参数为-2.0480,一个为2.0480。算法中变异概率pm=0.05,交叉概率pc=0.8。如果不采用最优模式保留,结果会更丰富些,也就是算法最后不一定收敛于极值点,当然局部收敛现象也会有所减少,但最终寻得的解不一定是本次执行中曾找到过的最好解。

    标签: 遗传算法

    上传时间: 2015-06-04

    上传用户:芃溱溱123

  • opencv 生成视差图

    通过立体匹配生成视差图 采用GC算法 算法时间比较慢 但效果很好

    标签: opencv 视差图

    上传时间: 2016-05-08

    上传用户:huangxk619

  • 2013遗传算法工具箱

    % 生成训练样本集 clear all; clc; P=[110 0.807 240 0.2 15 1 18 2 1.5; 110 2.865 240 0.1 15 2 12 1 2; 110 2.59 240 0.1 12 4 24 1 1.5; 220 0.6 240 0.3 12 3 18 2 1; 220 3 240 0.3 25 3 21 1 1.5; 110 1.562 240 0.3 15 3 18 1 1.5; 110 0.547 240 0.3 15 1 9 2 1.5]; 0 1.318 300 0.1 15 2 18 1 2]; T=[54248 162787 168380 314797; 28614 63958 69637 82898; 86002 402710 644415 328084; 230802 445102 362823 335913; 60257 127892 76753 73541; 34615 93532 80762 110049; 56783 172907 164548 144040]; @907 117437 120368 130179]; m=max(max(P)); n=max(max(T)); P=P'/m; T=T'/n; %-------------------------------------------------------------------------% pr(1:9,1)=0; %输入矢量的取值范围矩阵 pr(1:9,2)=1; bpnet=newff(pr,[12 4],{'logsig', 'logsig'}, 'traingdx', 'learngdm'); %建立BP神经网络, 12个隐层神经元,4个输出神经元 %tranferFcn属性 'logsig' 隐层采用Sigmoid传输函数 %tranferFcn属性 'logsig' 输出层采用Sigmoid传输函数 %trainFcn属性 'traingdx' 自适应调整学习速率附加动量因子梯度下降反向传播算法训练函数 %learn属性 'learngdm' 附加动量因子的梯度下降学习函数  net.trainParam.epochs=1000;%允许最大训练步数2000步 net.trainParam.goal=0.001; %训练目标最小误差0.001 net.trainParam.show=10; %每间隔100步显示一次训练结果 net.trainParam.lr=0.05; %学习速率0.05 bpnet=train(bpnet,P,T); %------------------------------------------------------------------------- p=[110 1.318 300 0.1 15 2 18 1 2]; p=p'/m; r=sim(bpnet,p); R=r'*n; display(R);

    标签: 2013 算法 工具箱

    上传时间: 2016-05-28

    上传用户:shanqiu

  • 机器学习-ID3算法

    机器学习ID3算法的简单实现, ID3算法是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。

    标签: ID3 机器学习 算法

    上传时间: 2017-05-11

    上传用户:zheng417

  • 直接比较常用排序算法C++

    (1)随机生成一组待排序数据,个数不少于100个; (2)比较各种排序算法对同一组数据排序所需要的关键字比较次数和关键字移动次数,至少使用5组数据进行比较; (3)对比较结果进行简单分析。

    标签: 比较 排序算法

    上传时间: 2018-01-09

    上传用户:poseiding

  • 这是用python实现的简单MLP算法

    这是用python实现的简单MLP算法,其中数据是随机生成的

    标签: python MLP 算法

    上传时间: 2018-05-03

    上传用户:852712

  • matlab数学建模算法全收录 超清书签版

    matlab数学建模算法全收录 超清书签版

    标签: matlab 数学建模 收录 算法

    上传时间: 2013-05-15

    上传用户:eeworm

  • 视频图像格式转换芯片的算法研究

    视频图像格式转换芯片的算法研究

    标签: 视频图像 格式转换 芯片 算法研究

    上传时间: 2013-05-25

    上传用户:eeworm

  • CAXA制造工程师实体造型生成曲面的数控加工进退刀方法的探讨

    CAXA制造工程师实体造型生成曲面的数控加工进退刀方法的探讨

    标签: 制造 工程师 实体 数控加工

    上传时间: 2013-07-01

    上传用户:eeworm

  • CAXA制造工程师实体造型生成曲面的数控加工进退刀方法

    CAXA制造工程师实体造型生成曲面的数控加工进退刀方法

    标签: CAXA 制造 工程师 实体

    上传时间: 2013-04-15

    上传用户:eeworm