精华内容
下载资源
问答
  • MATLAB GA工具箱

    2016-05-11 15:48:41
    MATLAB遗传算法工具
  • matlab GA-pls建立模型

    2018-07-28 11:47:51
    matlab GA-pls建立模型 ga进行优化 然后进行偏最小二乘建模
  • 多目标函数求解明显难度提升了好几个数量级,其核心问题在于出现了pareto解。我们需要权衡各个目标函数之间的利弊,选择合适算法来求解。
  • matlab ga 函数的最好适应度是什么

    matlab ga 函数的最好适应度是什么

    找到一个问答
    https://www.ilovematlab.cn/thread-527538-1-1.html

    请问 matlab 的 ga 工具箱的 最佳个体图 要怎么画

    http://muchong.com/html/201702/11032942.html

    如何用matlab的文本命令如何画出目标函数的收敛曲线和优化变量的取值图

    终于找到画最佳个体的了

    options=gaoptimset(options,'PlotFcns',{@gaplotbestf,@gaplotbestindiv})
    
    

    王万良 人工智能导论 实验6

    学习一下这个文档
    https://wenku.baidu.com/view/79116aea25d3240c844769eae009581b6bd9bda5.html?fr=search-1-wk_sea_esX-income8&fixfr=Q0LBWFQy7wucpnbovYBdDw%3D%3D

    https://www.kdocs.cn/l/crNnLGdtQCAI
    [金山文档] 遗传算法作业.docx

    代码

    % ga max
    
    clear ,clc,close all
    % 这是求最小值时候的函数
    %  fun=@(x1,x2)6.452*(x1+0.125*x2)*(cos(x1)-cos(2*x2))*(cos(x1)-cos(2*x2))/sqrt(0.8+(x1-4.2)*(x1-4.2)+2*(x2-7)*(x2-7))+3.226*x2;
    %  fun=@(x1,x2)20+x1.^2+x2.^2-10*(cos(2*pi*x1)+cos(2*pi*x2))
    %  matlab pi
    %  https://jingyan.baidu.com/article/6079ad0ec9a15228ff86db35.html
    % 这是求最大值时候的函数
    fun=@(x1,x2)-6.452*(x1+0.125*x2)*(cos(x1)-cos(2*x2))*(cos(x1)-cos(2*x2))/sqrt(0.8+(x1-4.2)*(x1-4.2)+2*(x2-7)*(x2-7))-3.226*x2;
    objfun=@(x)fun(x(1),x(2));
    n=2;
    A=[];
    b=[];
    Aeq=[];
    beq=[];
    lb=[0 0];
    % lb=[0.6 -inf];
    % 说明 x>=0.6 ,y没有说明, 也要写,说明y>=-inf
    ub=[10 10];
    
    %lb=[-5 -5];
    % ub=[5 5];
    
    confun=[];
    % opts=[];
    % options=[];
    % 20
    % 100
    options=gaoptimset('PopulationSize',20,'PopInitRange',[0;10])
    
    options=gaoptimset(options,'PlotFcns',{@gaplotbestf,@gaplotbestindiv},'TolFun',1e-15)
    options=gaoptimset(options,'EliteCount',1, 'CrossoverFraction',0.85)
    options=gaoptimset(options,'Generation',80)
    
    
    % 1
    % options=gaoptimset(options,'FitnessScalingFcn',@fitscalingrank)
    % options=gaoptimset(options,'SelectionFcn',@selectionroulette,'CrossoverFcn',@crossoversinglepoint)
    % options=gaoptimset(options,'MutationFcn',@mutationuniform)
    
    % 2
    % options=gaoptimset(options,'FitnessScalingFcn',@fitscalingrank)
    % options=gaoptimset(options,'SelectionFcn',@selectionroulette,'CrossoverFcn',@crossovertwopoint)
    % options=gaoptimset(options,'MutationFcn',@mutationuniform)
    
    % 3
    % options=gaoptimset(options,'FitnessScalingFcn',@fitscalingprop)
    % options=gaoptimset(options,'SelectionFcn',@selectiontournament,'CrossoverFcn',@crossovertwopoint)
    % options=gaoptimset(options,'MutationFcn',@mutationuniform)
    
    % 4
    options=gaoptimset(options,'FitnessScalingFcn',@fitscalingrank)
    options=gaoptimset(options,'SelectionFcn',@selectionroulette,'CrossoverFcn',@crossoversinglepoint)
    options=gaoptimset(options,'MutationFcn',@mutationgaussian)
    
    % ,'MaxTime',2
    % options=gaoptimset(options,'FitnessLimit',80,'MaxTime',2)
    
    % 'PlotFcns',{@gaplotbestf,@gaplotbestindiv}
    % 'plotfcns',@gaplotbestf
    
    % options.TolFun=1e-15
    % options.plotfcns=@gaplotbestf
    % https://www.ilovematlab.cn/thread-527538-1-1.html
    % https://zhidao.baidu.com/question/402074868.html
    % https://www.bilibili.com/video/BV1JA411T7wg?from=search&seid=13339881514253748349
    % options = gaoptimset();
    % options.Generations = 10000;
    %最大迭代数设为2000
    % https://www.cnblogs.com/xiaff/p/5345475.html
    [x,fval]=ga(objfun,n,A,b,Aeq,beq,lb,ub,confun,options);
    % ga 的 Initial Population
    % ga options 设置
    % ga 输出的适应度
    
    

    ga_min

    clear ,clc,close all
    % 这是求最小值时候的函数
    %  fun=@(x1,x2)6.452*(x1+0.125*x2)*(cos(x1)-cos(2*x2))*(cos(x1)-cos(2*x2))/sqrt(0.8+(x1-4.2)*(x1-4.2)+2*(x2-7)*(x2-7))+3.226*x2;
     fun=@(x1,x2)20+x1.^2+x2.^2-10*(cos(2*pi*x1)+cos(2*pi*x2))
    %  matlab pi
    %  https://jingyan.baidu.com/article/6079ad0ec9a15228ff86db35.html
    % 这是求最大值时候的函数
    % fun=@(x1,x2)-6.452*(x1+0.125*x2)*(cos(x1)-cos(2*x2))*(cos(x1)-cos(2*x2))/sqrt(0.8+(x1-4.2)*(x1-4.2)+2*(x2-7)*(x2-7))-3.226*x2;
    objfun=@(x)fun(x(1),x(2));
    n=2;
    A=[];
    b=[];
    Aeq=[];
    beq=[];
    %lb=[0 0];
    % lb=[0.6 -inf];
    % 说明 x>=0.6 ,y没有说明, 也要写,说明y>=-inf
    %ub=[10 10];
    
    lb=[-5 -5];
    ub=[5 5];
    
    confun=[];
    % opts=[];
    % options=[];
    % [0;10])
    % 1;1.1
    % [1;100]
    options=gaoptimset('PopulationSize',20,'PopInitRange',[1;2])
    
    options=gaoptimset(options,'PlotFcns',{@gaplotbestf,@gaplotdistance},'TolFun',1e-15)
    options=gaoptimset(options,'EliteCount',1, 'CrossoverFraction',0.8)
    % 0.85
    options=gaoptimset(options,'Generation',80)
    % 'Generation',  80
    
    
    
    % https://www.bilibili.com/video/BV1JA411T7wg?from=search&seid=13339881514253748349
    % options = gaoptimset();
    % options.Generations = 10000;
    %最大迭代数设为2000
    % https://www.cnblogs.com/xiaff/p/5345475.html
    [x,fval]=ga(objfun,n,A,b,Aeq,beq,lb,ub,confun,options);
    
    
    

    以下为了搜索引擎搜索到 建议不看

    实验五 遗传算法实验I 一、实验目的:
    熟悉和掌握遗传算法的原理、流程和编码策略,并利用遗传求解函数优化问题,理解求解流程并测试主要参数对结果的影响。 二、实验原理:
    遗传算法的基本思想正是基于模仿生物界遗传学的遗传过程。它把问题的参数用基因代表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染色体的个体组成的群体。这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和产生后代。后代随机化地继承了父代的最好特征,并也在生存环境的控制支配下继续这一过程.群体的染色体都将逐渐适应环境,不断进化,最后收敛到一族最适应环境的类似个体,即得到问题最优的解。
    三、实验条件: Matlab 7.X 的遗传算法工具箱。 四、实验内容: 1.用遗传算法求解下列函数的最大值,设定求解精度到15位小数。

    1)给出适应度函数的M文件(Matlab中要求适应度函数最小化)。
    2)设计及选择上述问题的编码、选择操作、交叉操作、变异操作以及控制参数等,填入表1,并画出最佳适应度(Best
    fitness)和最佳个体(Best individual)图。 表1 遗传算法参数的选择 编码 编码方式(population
    type) 种群参数 种群规模(population size) 初始种群的个体取值范围(Initial Population)
    选择操作 个体选择概率分配策略(对应Fitness scaling) 个体选择方法(Selecton function)
    最佳个体保存 优良个体保存数量(Elite count) 交叉操作 交叉概率(Crossover fraction) 交叉方式
    变异操作 变异方式 停止参数 最大迭代步数(Generations) 停滞代数(Stall generations)

       		 3)设置不同的种群规模,例如,求得相应的最佳适应度,并给出算法的运行时间,分析种群规模对算法性能的影响。 4)选择不同的选择操作、交叉操作和变异操作,并独立运行算法10次,完成下表2,然后分析比较采用不同的选择策略、交叉策略和变异策略的算法运行结果。
    

    表2不同的选择策略、交叉策略和变异策略的算法运行结果 选择操作 个体选择概率分配 Rank(排序) √
    Proportional(比率) √ √ √ 个体选择 Roulette(轮盘赌选择) √ √ √
    Tournament(竞标赛选择) √ 交叉操作 单点交叉 √ √ √ √ 两点交叉
    变异操作 Uniform(均匀变异) √ √ √ Gaussian(高斯变异) √ 最好适应度 最差适应度
    平均适应度 2.用遗传算法求解下面一个Rastrigin函数的最小值,设定求解精度到15位小数。

    1)给出适应度函数的M文件(Matlab中要求适应度函数最小化)。
    2)设计上述问题的编码、选择操作、交叉操作、变异操作以及控制参数等,填入表3,并画出最佳适应度(Best
    fitness)和最佳个体(Best individual)图。 表3 遗传算法参数的选择 编码 编码方式(population
    type) 种群参数 种群规模(population size) 初始种群的个体取值范围(Initial Population)
    选择操作 个体选择概率分配策略(对应Fitness scaling) 个体选择方法(Selecton function)
    最佳个体保存 优良个体保存数量(Elite count) 交叉操作 交叉概率(Crossover fraction) 交叉方式
    变异操作 变异方式 停止参数 最大迭代步数(Generations) 停滞代数(Stall generations)

    3)设置种群的不同初始范围,例如[1;1.1]、[1;100]和[1;2],画出相应的最佳适应度值(Best
    fitness)和平均距离(Distance)图,比较分析初始范围及种群多样性对遗传算法性能的影响。
    4)设置不同的交叉概率,画出无变异的交叉和无交叉的变异时最佳适应度值和和平均距离图,分析交叉和变异操作对算法性能的影响。 五、实验报告要求:
    1.画出遗传算法的算法流程图。 2.根据实验内容,给出相应结果。
    3. 总结遗传算法的特点,并说明适应度函数在遗传算法中的作用。

    展开全文
  • GA算法实现(matlab

    2019-06-19 15:49:07
    python代码随处可见,利用python进行相关的操作和实现时每一个python入门者必不可少的内容,这里利用python 的相关知识,简单的进行了实验,希望对大家有所帮助
  • 此代码实现了 MATLAB 遗传算法 (GA) 函数,用于优化具有连续设计变量的基准 10 杆桁架问题。 有关此问题的更多详细信息以及不同优化方法的结果之间的比较,请参见以下论文: 1-频率约束桁架设计的多班教学优化2-...
  • 能够用来求解部分关利用遗传算法的优化模型。。
  • % ga函数 options = gaoptimset('Generations', 200,... %设置迭代次数 'PopulationSize', 50,... % 设置种群大小 'UseParallel', true,... % 是否并行 'Vectorized', 'on'); % 指定函数是否向量化 [bestchrom,~,...
  • 一、简介 1 BP神经网络预测原理简介 BP 神经网络是一种多层前馈神经网络,常用的为输入层-单隐含层-输出层的三层结构,如下图所示。 BP神经网络训练的主要思想:输入的信号特征数据先映射到隐含层(激活函数实现)...

    一、遗传算法简介

    1 引言
    在这里插入图片描述
    在这里插入图片描述
    2 遗传算法理论
    2.1 遗传算法的生物学基础
    在这里插入图片描述
    在这里插入图片描述
    2.2 遗传算法的理论基础
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2.3 遗传算法的基本概念
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    2.4 标准的遗传算法
    在这里插入图片描述
    在这里插入图片描述
    2.5 遗传算法的特点
    在这里插入图片描述
    在这里插入图片描述
    2.6 遗传算法的改进方向
    在这里插入图片描述
    3 遗传算法流程
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    4 关键参数说明
    在这里插入图片描述

    二、BP神经网络简介

    1 BP神经网络预测原理简介
    BP 神经网络是一种多层前馈神经网络,常用的为输入层-单隐含层-输出层的三层结构,如下图所示。
    在这里插入图片描述
    BP神经网络训练的主要思想:输入的信号特征数据先映射到隐含层(激活函数实现),再映射到输出层(默认采用线性传递函数),得到期望输出值。将期望输出值和实际测量值做比较,计算误差函数J,再将误差反向传播,通过梯度下降等算法来调节BP网络的权值和阈值。重复该过程,直到满足设定的目标误差或者最大迭代次数等终止准则,停止训练。

    通过下面的例子来理解每一层的作用。

    1)输入层:相当于人的五官,五官获取外部信息,对应神经网络模型input端口接收输入数据的过程。
    2)隐含层:对应人的大脑,大脑对五官传递来的数据进行分析和思考,神经网络的隐含层hidden Layer对输入层传来的数据x进行映射,简单理解为一个公式hiddenLayer_output=F(w*x+b)。其中,w、b叫做权重、阈值参数,F()为映射规则,也叫激活函数,hiddenLayer_output是隐含层对于传来的数据映射的输出值。换句话说,隐含层对于输入的影响因素数据x进行了映射,产生了映射值。
    3)输出层:可以对应为人的四肢,大脑对五官传来的信息经过思考(隐含层映射)之后,再控制四肢执行动作(向外部作出响应)。类似地,BP神经网络的输出层对hiddenLayer_output再次进行映射,outputLayer_output=w *hiddenLayer_output+b。其中,w、b为权重、阈值参数,outputLayer_output是神经网络输出层的输出值(也叫仿真值、预测值)(理解为,人脑对外的执行动作,比如婴儿拍打桌子)。
    4)梯度下降算法:通过计算outputLayer_output和神经网络模型传入的y值之间的偏差,使用算法来相应调整权重和阈值等参数。这个过程,可以理解为婴儿拍打桌子,打偏了,根据偏离的距离远近,来调整身体使得再次挥动的胳膊不断靠近桌子,最终打中。

    BP神经网络所实现的功能作用

    “能尽数天星,便能尽知棋势”。围棋体现着大自然的道法,而在AlphaGo击败人类围棋冠军,则是使用算法来寻求围棋的道,实现人机对战。BP神经网络训练的结果:得到多维数据x与y之间存在的规律,即实现由x来映射逼近y。而BP训练出来得到的模型是否可靠,表现为对其他未经过训练的数据,输入到BP中,是否能输出较为准确的预测值。对此,在BP神经网络训练之后,还需要再给指标因素x1到训练好的bp network中,得到相应的BP输出值(预测值)predict1,通过作图等,计算Mse,Mape,R方等指标,来对比predict1和y1的接近程度,就可以知道模型是否预测准确。这是BP模型的测试过程,即预测过程。

    小结 BP神经网络实现了:a). 根据训练集数据,训练得到一个模型,b). 对模型的可靠性与准确性进行测试集(不同于训练样本数据)预测,和实际值对比,检验预测的精度。c). 只给输入,得到预测值(可理解为测试集的数据丢了实测值,本质一样,给输入到BP中,得到输出)。由于该情况无输出,纯预测,无法检验精度是否合格,写论文时无太大意义而不必实现该情况的步骤。

    2 遗传算法GA优化BP神经网络原理

    在BP神经网络训练的过程中,通过前向传播数据与误差反向传递,使用算法来更新权重阈值。一方面,在该过程中,第一次前向传播过程的权重和阈值该如何确定,即如何初始化权重和阈值。深度学习的方法是采用随机化方法得到初始的权值与阈值参数。另一方面,选定了初始参数后,梯度下降算法将初始参数值作为起点,进行参数优化与更新。

    在优化算法的发展中,有两类:确定性算法与启发式算法。确定性算法指使用数学方法求最优问题,找到的结果与求导的初始点有关,一般为确定值。启发式算法则是灵感源于自然界生物进化的规律,主要思想为迭代逼近最优,优化的结果为满足工程精度要求的可变值(无限接近理论最优值)。

    在上述过程中,作为一种确定性算法,梯度下降算法的收敛性是得到了证明的,但收敛值并非一定是全局最优,与初始的参数值(梯度下降算法的起点)有关。由于随机初始的参数未必是最优的起点(指既训练准确,又预测可靠),因此训练的模型可靠性和稳定性受到了初始随机参数的很大影响。作为启发式算法,遗传算法GA具体很好的全局搜索能力,引入GA用来解决此问题。

    主要思想 将参数作为问题的决策变量,模型的精度作为问题的目标函数。遗传算法GA优化BP神经网络的算法流程图如下:
    在这里插入图片描述

    3 GA-BP模型建立
    3.1 模型与数据介绍
    下面以MATLAB官方提供的化学传感器的数据集为例,进行建模。
    数据介绍:采集某个化学实验过程的数据,将8个传感器的采样数据作为输入(x),第9个传感器的采样数据作为输出(y)。
    数据格式如下:
    在这里插入图片描述
    读取数据:

    %% 读取读取
    data=xlsread('数据.xlsx','Sheet1','A1:I498'); %%使用xlsread函数读取EXCEL中对应范围的数据即可  
    
    %输入输出数据
    input=data(:,1:end-1);    %data的第一列-倒数第二列为特征指标
    output=data(:,end);  %data的最后面一列为输出的指标值
    
    N=length(output);   %全部样本数目
    testNum=100;   %设定测试样本数目
    trainNum=N-testNum;    %计算训练样本数目
    
    

    3.2 GA与BP参数设置
    1) BP参数设置

    对权重和阈值有关的参数进行说明:
    a). 输入层和输出层节点使用size函数直接获取。函数用法:[M,N]=size(A),M为A的行数,N为A的列数。size(A,2)得到的是第二个参数N,即列数。此数据中,输入8个维度指标,输出的为1个维度指标。即输入层节点为8,输出层节点为1。

    inputnum=size(input,2);   %输入层神经元节点个数
    outputnum=size(output,2);  %输出层神经元节点个数
    
    

    b). 隐含层节点的确定过程,使用循环来遍历范围内的隐含层节点与训练误差情况。因为要找最小的误差,所以初始化训练误差时,将MSE设置较大的数字,用于在循环中确定最佳的隐含层节点。

    %确定隐含层节点个数
    %采用经验公式hiddennum=sqrt(m+n)+a,m为输入层节点个数,n为输出层节点个数,a一般取为1-10之间的整数
    MSE=1e+5; %初始化最小误差
    for hiddennum=fix(sqrt(inputnum+outputnum))+1:fix(sqrt(inputnum+outputnum))+10
    

    c). 其他BP参数,学习速率,训练次数,训练的目标误差等

    % 网络参数
        net.trainParam.epochs=1000;         % 训练次数
        net.trainParam.lr=0.01;             % 学习速率
        net.trainParam.goal=0.000001;       % 训练目标最小误差
    
    

    2)遗传算法GA参数设置

    %初始化ga参数
    PopulationSize_Data=30;   %初始种群规模
    MaxGenerations_Data=50;   %最大进化代数
    CrossoverFraction_Data=0.8;  %交叉概率
    MigrationFraction_Data=0.2;   %变异概率
    
    

    3.3 遗传算法优化BP的设计
    1)优化变量的设计
    使用遗传算法求解优化问题时,对于决策变量(优化变量)有三种编码方式:二进制编码,向量形式编码,矩阵形式编码。

    由于权重和阈值分别以m×n维的矩阵,向量形式存在与BP神经网络结构(net)中。为方便对每个元素都进行优化,先将元素分别取出,然后按取的顺序放入到向量(染色体)中,完成编码。权重和阈值的经验范围为[-1,1],可适当将寻优的范围放宽,取[-3,3]。
    优化变量(元素)个数的计算如下:

    nvars=inputnum*hiddennum_best+hiddennum_best+hiddennum_best*outputnum+outputnum;    %变量维度
    lb=repmat(-3,nvars,1);    %自变量下限 %repmat得到一个nvars×1维的向量,每个元素的值都为-3,即优化变量下限
    ub=repmat(3,nvars,1);   %自变量上限
    
    

    2)适应度函数的设计
    采用以下公式计算适应度值。
    在这里插入图片描述
    式中,TraingingSet,TestingSet,分别为训练集和测试集的样本。因为预测精度越高,说明误差越低,所以公式设计为求解最小的均方误差。使用遗传算法后,适应度函数值越小,表明训练越准确,且兼顾模型的预测精度更好。
    3)算法设计
    将遗传算法视为一个“黑箱”优化器。在确定了优化的变量与目标适应度函数后,只需要经过该“黑箱”,即可输出最小的误差(精度最好值)和最优解变量,再把变量赋给BP神经网络的权值矩阵与阈值向量的相应位置,进行优化后的BP训练与测试即可。说明:在遗传算法的“黑箱”求解器中进行的算法操作为:选择、交叉与变异。

    二、部分源代码

    在这里插入图片描述

    **代码附件说明:**
    a) .mian.m为主程序,含BP预测与GA优化BP预测两个部分的实现。在程序外部数据EXCEL中换自己数据集,MATLAB程序中设定相应的数据范围即可运行得到结果。代码使用中文注释清楚。
    b). 数据集为EXCEL格式的数据,换数据时,在MATLAB程序中设定相应的EXCEL数据读取范围即可。
    c). 采用经验公式使用循环来确定隐含层节点数目,对输入层、隐含层和输出层的神经元节点数都提供了过程。
    
    **代码使用步骤:**
    数据介绍:代码采用深度学习中常用的化学传感器的数据集样本进行实现。数据格式为EXCEL。直接套数据运行。输入的影响指标个数不限,单输出。
    a). 在程序外部数据EXCEL文件中换上自己数据集;
    
    b). 双击点开main.m主程序文件,读取EXCEL的方式如下:
    ```c
    % 读取读取
    data=xlsread('数据.xlsx','Sheet1','A1:I498'); %%使用xlsread函数读取EXCEL中对应范围的数据即可  
    
    %输入输出数据
    input=data(:,1:end-1);    %data的第一列-倒数第二列为特征指标
    output=data(:,end);  %data的最后面一列为输出的指标值
    

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、matlab版本及参考文献

    1 matlab版本
    2014a

    2 参考文献
    《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

    展开全文
  • 解压文件夹'mk'并运行test1.m,它通过K emans算法将10,000个二维数据的随机样本聚类为5个簇。 ************* 清除; 胆固醇; % x 是 cluser gropr 的质心向量。 x(1),x(2) 坐标第一个... [x F]=ga(@clust1,2*k,options)
  • GAmatlab源程序

    2018-04-11 20:55:59
    遗传算法(Genetic Algorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法。遗传算法是从代表问题可能潜在的解集的一个种群(population...
  • GA遗传算法matlab程序

    2018-12-11 14:03:13
    基于ATO的列车速度曲线优化,用matlab遗传算法实现。适合初学者。
  • 遗传算法(四)MATLAB GA工具箱使用 附解TSP问题

    万次阅读 多人点赞 2017-09-08 19:36:00
    MATLAB遗传算法工具箱
     
    

    基本使用

    1. 直接参见函数ga

    函数原型:[x fval] = ga(@fitnessfun, nvars, options)

    x是使fitnessfun函数取最小值使的自变量值。nvars为自变量的数目即x向量中包含的元素个数,option可暂时不填。

    [x, f] = ga(@cos, 1);

    即得到一段简单的遗传算法代码,其作用为求解某函数的最小值。

    如何调参

    x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,IntCon,options)
    • A, b,Aep, beq, LB, UB为线性约束项,即满足如下约束:

    AxbAeqxbeqLBxUB

    • nonlcon为非线性约束nonlenear constraints。其中运用了矢量化约束(Vectorized Constraints)的方法。nonlcon是一个返回两个参数的函数句柄,可以是当前路径下的一个函数文件@functionfile。其具有如下原型:
        [c ceq] = nonlcon(x)

    其约束为 c0 , ceq=0 。举个例子(来自MATLAB help,直接截图):
    具有三个变量的规划中,有非线性约束:

    constraints

    则其向量化约束函数nonlcon可以写为:
    conscode

    • IntCon:自变量向量正整数的下标,从1到nvars.

    • options: 比较复杂,感兴趣的读者可以去查一下帮助文档。在这里举例用几个比较常用的option:

    选项功能
    CrossoverFraction交叉的概率0-1的小数
    EliteCount用于精英原则,
    每次遗传中一定会活下来的个体的个数
    正整数
    FitnessLimit适应度的范围标量/ {-Inf}
    Generations迭代遗传的次数正整数
    InitialPopulation初始种群可以用上一次遗传生成的种群
    作为下一次GA的初始种群

    option中的功能要通过gaoptimset('param1',value1,'param2',value2,...)的形式调用

    再调用一个简单的GA代码作结:

    [x, f] = ga(@cos, 1, [], [], [], [], 0, 2 * pi, [], gaoptimset('CrossoverFraction', 0.3))

    示例,解组合优化

    1. 解TSP

    由于MATLAB提供了很好的遗传算法接口,故对于用户来说只需要将问题抽象化,再进行编码、解码、计算适应度即可。

    问题例子可以参考上一篇文章: 遗传算法(三)解TSP问题

    这里直接给出适应度计算函数,包含编码和解码:

    function Fitness = GA_TSPfun(chrom)
    %% Create City
    NumCity = 9;
    Fitness = 0;
    Dist =[0 2.8946 6.5107 5.5845 5.2429 5.8733 4.4377 2.7627 6.5644;
     2.8946 0 4.3313 5.1381 5.7211 3.1830 2.3729 5.2763 5.0574;
     6.5107 4.3313 0 3.6548 5.2943 1.8590 2.0889 9.2412 8.3103;
     5.5845 5.1381 3.6548 0 1.7362 4.8792 3.3486 8.190210.1465;
     5.2429 5.7211 5.2943 1.7362 0 6.2723 4.5224 7.531710.7633;
     5.8733 3.1830 1.8590 4.8792 6.2723 0 1.8705 8.4338 6.4969;
     4.4377 2.3729 2.0889 3.3486 4.5224 1.8705 0 7.1555 6.9906;
     2.7627 5.2763 9.2412 8.1902 7.5317 8.4338 7.1555 0 7.1508;
     6.5644 5.0574 8.310310.146510.7633 6.4969 6.9906 7.15080];
    
    %% Decode:
    order = [];
    city = 1 : NumCity;
    for j = 1 : NumCity 
        order = [order, city(1+rem( chrom(j)-1, length(city)))];
        city(1 + rem(chrom(j)-1, length(city))) = [];
    end
    for i = 1 : NumCity
        city1 = order(i);
        city2 = order(1 + rem(i, NumCity));
        Fitness = Fitness + Dist((city1-1)*NumCity + city2);
    end
    end

    经验证发现,同样的TSP问题,MATLAB的GAtools得出的解大多为31.7, 33左右,逼近最优解。但是前一篇中作者自己编写的遗传算法程序,得出的平均结果为40左右。可见自己写的代码爬山能力还不够强,挖个坑,以后再研究一下。

    展开全文
  • K-means聚类,FCM-matlab实现,GA特征提取-matlab-sonar,Iris,sonar,不需要额外拓展包,下载即可运行,自写可直接。
  • GA-BP算法的MATLAB程序

    2019-05-05 12:03:57
    遗传算法GA改进的BP神经网络算法的MATLAB程序,绝对很有用
  • 初识遗传算法之MatlabGA工具箱

    万次阅读 多人点赞 2017-08-05 22:48:56
    MatlabGA优化工具箱。例1在这里,就用2017年重庆高考数学最后一道题来开刀了。当然,只是算一个大概,大概……理论证明嘛,无非就是各种不等式去试……1. 默认求 min f(x,y)。2. 非线性约束条件按规范写。不等式 g...

    Matlab有GA优化工具箱。


    例1

    在这里,就用2017年重庆高考数学最后一道题来开刀了。




    当然,只是算一个大概,大概……

    理论证明嘛,无非就是各种不等式去试……




    1. 默认求 min f(x,y)。

    2. 非线性约束条件按规范写。

    不等式 g(x,y) >= 0;

    等式 h(x,y) = 0;

    e.g. x^2 + y^2 = 2 要写为 x^2 + y^2 - 2


    2元数量值函数。




    NonCon

    function [c, ceq] = NonCon( x )
    c = []; % 非线性不等式约束条件为空
    ceq = x(1)^3 + x(2)^3 - 2; % 非线性等式约束条件
    end
    

    FitFun1


    function y = FitFun1(x)
    % x可以是一个向量,FitFun()是一个一(多)元数量值函数
    y = (x(1)+x(2))*(x(1)^5+x(2)^5); % 第1问
    % y = -(x(1)+x(2)); % 第2问
    end

    结果如下

    ----------------------------
    Optimization running.
    Objective function value: 4.018996707929087
    Optimization terminated: average change in the fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.


    不过我在想,有的时候就算是算出来一个结果,比如pi, exp, 又怎样,难道造飞机、大炮的时候,这个数值我写个pi?还不是近似…只是说,这种存在性证明,收敛性证明为数值计算提供了基础,弄个“数”出来,将就用吧。

    在找到理论方法前,难道就不造飞机、大炮了吗?有总比没有强吧,有什么问题再说。不要被现有的工具和固定的模式束缚了。牛顿那个时候还没有微积分呢,还不是自己造的。欧洲的理论创新很强,美国是实践创新很厉害。中国呢?美团、滴滴、共享单车,烧钱倒是很厉害。

    展开全文
  • 完整代码,可直接运行
  • 基于Matlab GA工具箱的优化与应用
  • Matlab遗传算法优化BP网络-GAbp.zip 新人发帖,请多支持:handshake 所含文件: Figure39.jpg bppfault.m运行结果: Figure40.jpg
  • GA+SVM的MATLAB程序

    2018-05-29 16:36:23
    Matlab遗传算法优化SVM的参数算范例子,主要调C、gamma
  • 采用GA工具箱 设置:Number of variables:5 Constraints: Linear equalities: Aeq:A beq:10 Bounds: Lower: 0 Upper:10 Start后提示输出参数太多 如何解决?</p>
  • 遗传算法matlab初始化代码Python 上的简单遗传算法 这个项目展示了python中的遗传算法过程 为什么是Python? 因为我喜欢它 讨厌Python? 这是你的问题:P 要求 pip install numpy 算法说明 遗传算法流程图 1.初始化...
  • 深度学习算法的matlab程序,注释详细,包括回归算法:BP神经网络、支持向量机;寻优算法:遗传算法、粒子群、模拟退火。部分算法不直接调用matlab工具箱,便于使用者的学习以及算法改进研究。良心资料,为他人学习...
  • 可以运行的GA 算法 ,matlab 编写 ,资源优化,可以运行的GA 算法 ,matlab 编写 ,资源优化,
  • 用遗传算法改进BP神经网络对鸢尾花数据集进行分类
  • 这里使用到的是MATLAB自带的GA工具箱,即GADS工具箱。 遗传工具箱共有四大版本,分别是 英国Sheffield《genetic arithmetic toolbox》(GATBX遗传算法工具箱) 中国陈益《simple genetic algorithms laboratory...
  • 基于遗传粒子群混合算法的matlab源码,用于优化无线传感网络中的路由。
  • MATLAB中的遗传算法优化的BP神经网络算法代码并附有实例
  • 重点对遗传算法和MATLAB自带的GA工具箱
  • MATLAB中遗传算法系统详细讲解,包学会,matlab自带的工具箱或者代码的遗传算法均有,欢迎大家来学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,555
精华内容 1,422
关键字:

matlab的ga

matlab 订阅