精华内容
下载资源
问答
  • 随机扰动函数的使用

    千次阅读 2006-07-20 13:52:00
    有时我们需要对某种顺序作出随机打乱的效果,这时在MATLAB中的一个函数randperm就显得非常有用处。它的用法很简单,举个例子:如果想产生一个1到24的随机顺序,那么命令randperm(24)会告诉你一个:[24 8 21 15 2...
    有时我们需要对某种顺序作出随机打乱的效果,这时在MATLAB中的一个函数randperm就显得非常有用处。它的用法很简单,举个例子:如果想产生一个1到24的随机顺序,那么命令randperm(24)会告诉你一个:
    [24 8 21 15 2 22 16 19 10 7 4 3 11 14 6 12 23 9 5 20 18 13 17 1]
     
    展开全文
  • 采用含随机扰动项的非线性系统模型分析多机电力系统在随机扰动下的随机稳定性,利用It? 随机微分方程的相关理论分析了多机系统功角和角速度在Gauss随机小扰动下的均值稳定性和均方稳定性,并在MATLAB/Simulink中分别...
  • BA算法简介 ...跳出局部最优(扰动个体) 使得算法变得稳定 脉搏和响度修改,平衡局部与全局搜索 主要思想 流程图 function [bestMin, bestID] = ILSSIWBA() %A new bat algorithm based on i...

    BA算法简介

    http://www.omegaxyz.com/2019/02/12/ba-matlab/

    该论文修改

    作者在原有BA算法上进行3个修改

    1. 跳出局部最优(扰动个体)
    2. 使得算法变得稳定
    3. 脉搏和响度修改,平衡局部与全局搜索

    主要思想

    在这里插入图片描述

    流程图

    在这里插入图片描述

    function [bestMin, bestID] = ILSSIWBA()
    %A new bat algorithm based on iterative local search and stochastic inertia weight
     
    %omegaxyz.com QQ: 644327005
     
    clc;
    %% 经典BA参数设置
     
    t = 1; 
    maxT = 100; %最大迭代次数
    dim = 30; %问题的维度
    sizep = 50; %种群大小
    xmin = -0.5;
    xmax = 0.5; %位置向量的范围
     
    A = 0.6.*ones(sizep,1);    % 响度 (不变或者减小)
    r = zeros(sizep,1);      % 脉冲率 (不变或增加))
    Qmin = 0;         % 最小频率
    Qmax = 1;         % 最大频率
     
    %% 初始化
     
    Lb = xmin*ones(1,dim);
    Ub = xmax*ones(1,dim);
    pop = Lb+(Ub-Lb).*rand(sizep,dim); %种群初始化
    popv = zeros(sizep,dim);   % 速度
    Q = zeros(sizep,1);   % 频率
     
    pfitness = zeros(dim,1);
    for i = 1:sizep
        pfitness(i) = evaluate2(pop(i,:)); %评价
    end
    [bestMin, bestID]=min(pfitness);
    bestS = pop(bestID, :);
    bestArchive = zeros(maxT,1);
     
    %% 论文中的新策略参数
     
    umin = 0.4; %The second modification (SIW method)
    umax = 0.9;
    sigma = 0.2;
     
    R0 = 0.1; %The 3th modification
    Rupper = 0.7;
    A0 = 0.9;
    Alower = 0.6;
     
     
     
    %% 具体迭代过程
     
    while t <= maxT
        for i = 1:sizep
            Q(i)=Qmin+(Qmin-Qmax)*rand();
            w = umin +(umax-umin)*rand()+sigma*randn(); %The second modification (SIW method)
            popv(i,:)=w*popv(i,:)+(pop(i,:)-bestS)*Q(i); %The second modification (SIW method)
            Stemp = pop(i,:)+popv(i,:);
            % 脉冲率
             if rand>r(i)
                 Stemp=bestS-1+2*rand(1,dim);
             end
             fitTemp = evaluate2(Stemp);
             if (fitTemp<=pfitness(i))&&(rand()<A(i))
                pop(i,:) = Stemp;
                pfitness(i) = fitTemp;
                A(i) = (A0-Alower)/(1-maxT)*(t-maxT)+Alower; %The 3th modification
                r(i) = (R0-Rupper)/(1-maxT)*(t-maxT)+Rupper; %The 3th modification
             end
             if fitTemp <= bestMin
                bestID = i;
                bestMin = fitTemp;
             	bestS = Stemp;
             end
        end
        
        interX = bestS.*rand(); %The 1th modification (ILS method)
        interXfit = evaluate2(interX);
        if interXfit < bestMin
            bestMin = interXfit;
            bestS = interX;
            pop(bestID,:) = bestS;
            pfitness(bestID,:) = bestMin;
        else
            if exp(bestMin-interXfit) > rand()
                bestMin = interXfit;
                bestS = interX;
                pop(bestID,:) = bestS;
                pfitness(bestID,:) = bestMin;
            end
        end
        
        bestArchive(t) = bestMin;
        fprintf('GEN: %d  min: %.4f\n', t, bestMin);
        t = t +1;
    end
     
     
    end%.m end
    

    评价函数:

    function z = evaluate2(u)
    %Weierstrass
     
    dim= length(u);
    sum_1=0;
    sum_2=0;
    sum_3=0;
    a = 0.5;
    b = 3;
    for i=1:dim
        for k=0:30
           sum_1=sum_1+(a^k)*(cos(2*pi*(b^k)*(u(i)+0.5)));
        end
        sum_2=sum_2+sum_1;
        sum_1 = 0;
    end
    for k=0:30
           sum_3=sum_3+(a^k)*(cos(2*pi*(b^k)*0.5));
    end
    z=sum_2-dim*sum_3;
    end
    

    更多内容访问omegaxyz.com
    网站所有代码采用Apache 2.0授权
    网站文章采用知识共享许可协议BY-NC-SA4.0授权
    © 2019 • OmegaXYZ-版权所有 转载请注明出处

    展开全文
  • 初勘数据处理之预测算法(随机森林random forest) 集成学习方法 集成学习方法,是整合多个分类方法的预测结果,以提高分类准确率。集成学习方法先用训练数据构建一组基分类器,再对所有基分类器的预测进行投票,...

    初勘数据处理之预测算法(随机森林random forest)附matlab源码

    1. 集成学习方法
      集成学习方法,是整合多个分类方法的预测结果,以提高分类准确率。集成学习方法先用训练数据构建一组基分类器,再对所有基分类器的预测进行投票,从而决定分类结果。集成学习方法不是简单地用多个不同的分类器在同一数据集上重复训练,而是使数据集产生一定程度的扰动。分类器预测错误的部分原因是未知数据与所学习数据在分布上存在区别,通过设置一定程度的扰动,分类器能学习到更一般的模型,消除单个分类器产生的偏差,得到更加精准的模型。构建集成分类器的方法主要有装袋bagging、提升boosting等。
      基于数据的学习方法都面临数据的随机性这一问题。学习方法的任何一次实现都是基于某一个特定的数据集上,这个数据集只是众多可能数据中的一次随机抽样。这种随机性会影响学习方法的预测结果,并使学习到的分类器具有定的偶然性,尤其是在训练数据集较小时。决策树在每个节点处进行划分时,是根据节点下局部的划分准则进行的,易受样本随机性的影响,这就容形成过学习,使决策树不够稳定。装袋方法正好可以克服单个分类器的不稳定性,随机森林就是装袋方法(bagging)在决策树(decision tree)上的实现。

    2. 随机森林
      随机森林,是由很多决策树组成的“森林”,它通过多棵树的投票来进行决策。
      理论与实验研究表明,随机森林能够有效地提高分类器的推广能力。构建随机森林的方法包括三个基本步骤:
      1). 首先,从原来的个训练样本中有放回地随机抽取个样本(样本可能有重复),得到一个样本集。重复这个过程 n 次,得到 n 个样本集。
      2). 然后,用每个样本集作为训练样本构造决策树。在构造决策树的过程中,在每一个节点处,从候选特征中随机选择 m 个特征,作为决策的备选特征,再从这些特征中选择最好的特征进行划分。每棵决策树都会完整生长而不会剪枝。
      3). 最后,得到 n 棵决策树后,对这些树的输出进行投票,将得票最多的类作为最终的决策。
      随机森林方法既对训练样本采样,又对特征采样,保证了决策树之间的独立性,使得投票结果无偏。

    3. 预测效果评价
      常用评价系数及matlab实现:

    % correlation coefficient, r:相关系数
    R21=sum((dataObs -mean(dataObs)).*( dataSim - mean(dataSim)));
    R22=sqrt(sumsqr(dataObs -mean(dataObs)).*sumsqr(dataSim - mean(dataSim)));
    r = R21/R22;
    
    % Nash-Sutcliffe Efficiencyt, ENS:纳什系数
    ENS = (1-(sumsqr(dataObs - dataSim)/sumsqr(dataObs - mean(dataObs))));
    
    % COEFFICIENT OF DETERMINATION(决定系数) d
    d =(1-(sumsqr(dataObs - dataSim)/sumsqr(abs(dataSim - mean(dataObs) + abs(dataObs -mean(dataObs))))));
    
    % Peak Percentage Deviation, Pdv:峰值偏差百分比
    Pdv = (1-max(dataSim)/max(dataObs))*100;
    
    % Root Mean Square Error, RMSE:均方根误差
    RMSE = sqrt(sumsqr(dataObs - dataSim)/length(dataObs));
    
    % Mean Absolute Error, MAE:平均绝对误差
    MAE = (sum(abs(dataSim - dataObs)))/length(dataObs);
    
    1. 随机森林预测算法(prediction based on random forest)应用案例
      应用背景:随着交通基础设置建设和智能运输系统的发展,交通规划和交通诱导巳成为交通领域研究的热点 对于交通规划和交通诱导来说,准确的交通流量预测是其实现的前提和关键通流量预测根据时间跨度可以分为长期交通流量预测和短期交通流量预测:长期交通流量预测以小时、天、月甚至年为时间单位,是宏观意义上的预测;短时交通流量预测一般的时间跨度不超过 15 分钟,是微观意义上的预测。短时交通流量预测是智能运输系统的核心内容,智能运输系统中多个子系统的功能实现都以其为基础。短时交通流量预测具有高度非线性和不确定性等特点,并且同时间相关性较强,可以看成是时间序列预测问题,比较常用的方法包括多元钱性回归预测、AR 模型预测、ARMA 模型预测、指数平滑预测等。
      数据集:traffic_flux 《MATLAB神经网络43个案例分析 chapter 32 小波神经网络预测交通流量》

    matlab实现代码:

    %% 清空数据缓存
    clear
    clc
    close all
    
    %% 功能选项
    %randomise parameters, ensure the results are reproducible.
    %rand('twister', 123);
    s = RandStream('mlfg6331_64');
    
    %% 数据集加载
    load traffic_flux input output input_test output_test
    trnIn=input;
    trnOut=output;
    chkIn=input_test;
    chkOut=output_test;
    
    %% 查看可用GPU
    % Use GPU if available
    ngpus=gpuDeviceCount;
    disp([num2str(ngpus) ' GPUs found'])
    if ngpus>0
        lgpu=1;
        disp('GPU found')
        useGPU='yes';
    else
        lgpu=0;
        disp('No GPU found')
        useGPU='no';
    end
    % Find number of cores
    ncores=feature('numCores');
    disp([num2str(ncores) ' cores found'])
    % Find number of cpus
    import java.lang.*;
    r=Runtime.getRuntime;
    ncpus=r.availableProcessors;
    disp([num2str(ncpus) ' cpus found'])
    if ncpus>1
        useParallel='yes';
    else
        useParallel='no';
    end
    [archstr,maxsize,endian]=computer;
    disp(['This is a ' archstr ' computer that can have up to ' num2str(maxsize) ' elements in a matlab array and uses ' endian ' byte ordering.'])
    
    % Set up the size of the parallel pool if necessary
    npool=ncores;
    
    % Opening parallel pool
    if ncpus>1
        tic
        disp('Opening parallel pool')
        % first check if there is a current pool
        poolobj=gcp('nocreate');
        % If there is no pool create one
        if isempty(poolobj)
            command=['parpool(' num2str(npool) ');'];
            disp(command);
            eval(command);
        else
            poolsize=poolobj.NumWorkers;
            disp(['A pool of ' poolsize ' workers already exists.']);
        end
        % Set parallel options
        %paroptions = statset('UseParallel',true);
        %Set parrellel streams to have same seed value for repeated results
        paroptions = statset('UseParallel',true,'Streams', s, 'UseSubStreams',true);
        toc
    end
    
    %% 回归预测算法总体
    %Random Forest Model variables
    tic % starts the timer.
    leaf=5; % this number could be varied.
    ntrees=800; % this number could be varied.
    fboot=1; % this number could be varied.
    surrogate='on'; % this could be set 鈥榦n鈥?or 鈥榦ff鈥?
    
    % leaf=1, 3, 5, 10, 20;
    % ntrees=50, 200, 800, 1600;
    % fboot=0, 0.4, 0.8, 1.0;
    % surrogate='on';
    
    %Trainging Periods ------------------
    %Build Model
    In = trnIn;
    Out = trnOut;
    b = TreeBagger(ntrees,In,Out,'Method','regression','oobvarimp','on','surrogate',surrogate,'minleaf',leaf,'FBoot',fboot,'Options',paroptions);
    reset(s);
    toc;
    
    TrainY = oobPredict(b);
    yTrain = predict(b,In);
    
    %Predict with traing ------------------
    y = predict(b, In);
    simulatedTrain = y;
    dataObsTrain = Out;
    
    mseTrain = oobError(b,'mode','ensemble'); %single MSE for RF
    
    %Predict with testing ------------------
    dataSim = predict(b,chkIn);
    dataObs = chkOut;
    
    %% 结果分析
    figure(1)
    plot(dataSim,'r*:')
    hold on
    plot(dataObs,'bo--')
    title('预测交通流量','fontsize',12)
    legend({'预测交通流量', '实际交通流量'})
    xlabel('时间点')
    ylabel('交通流量')
    
    

    预测效果图:
    在这里插入图片描述
    具体的评价系数大家可以实测一下!随机森林的工具包可以在我的资源中下载,实测可用!

    展开全文
  • oc1算法是一种贪婪算法,先贪心的选择每个属性的最优权值,在加入随机扰动试图找到更好的边界。 寻找属性最优权值的算法如下: 加入随机扰动,产生随机边界进行搜索算法: 二、matlab实验 %寻找最优轴平行划分超...

    一、结点划分平面的设计
    oc1算法是一种贪婪算法,先贪心的选择每个属性的最优权值,在加入随机扰动试图找到更好的边界。
    寻找属性最优权值的算法如下:
    在这里插入图片描述
    加入随机扰动,产生随机边界进行搜索算法:
    在这里插入图片描述
    二、matlab实验

    %寻找最优轴平行划分超平面
    melondata = [0.697	0.46	1
    0.774	0.376	1
    0.634	0.264	1
    0.608	0.318	1
    0.556	0.215	1
    0.403	0.237	1
    0.481	0.149	1
    0.437	0.211	1
    0.666	0.091	0
    0.23	0.267	0
    0.245	0.057	0
    0.343	0.099	0
    0.639	0.161	0
    0.657	0.198	0
    0.36	0.37	0
    0.593	0.042	0
    0.719	0.103	0];
    
    %划分属性和标签
    x_axis = melondata(:,1);
    y_axis = melondata(:,2);
    label_axis = melondata(:,3);
    %样本数量
    count = length(label_axis);
    
    a_coemax = [0, 1, -0.2045];
    %扰动a1
    %计算Vj
    d_data = [melondata(:,1:2), ones(count, 1)]';
    
    for m = 1 : 500
    for i = 1 : 3
        v_j = (a_coemax * d_data);
        u_j = (a_coemax(i) * d_data(i,:) - v_j) ./ d_data(i,:);
    
        u_sort = sort(u_j);
        u_divide = (u_sort(2:count) + u_sort(1:count-1)) / 2;
    
        a_coe = a_coemax;
    
        %计算TwoingValue
         tv = zeros(count-1, 2);
         tvmax = 0;
        for j = 1 : count-1
            a_coe(i) = u_divide(j);
            %统计计算TwoingValue值所需要的参数
            tl = 0; tr = 0; lk = zeros(2,1); rk = zeros(2,1);
            for k = 1 : count
                p_coe = [x_axis(k), y_axis(k), 1]';
                v_i = a_coe * p_coe;
                if v_i < 0
                    tl = tl + 1;
                    if label_axis(k) == 0
                        lk(1) = lk(1) + 1;
                    else
                        lk(2) = lk(2) + 1;
                    end
                else
                    tr = tr + 1;
                    if label_axis(k) == 0
                        rk(1) = rk(1) + 1;
                    else
                        rk(2) = rk(2) + 1;
                    end
                end
            end
            tv(j,i) = tl / count * tr / count * (abs(lk(1) / tl - rk(1) / tr) + abs(lk(2) / tl - rk(2) / tr))^2;
            if tv(j,i) > tvmax
                tvmax = tv(j,i);
                a_coemax = a_coe;
            end
        end
    end
    end
    

    斜划分边界如下:
    在这里插入图片描述
    对结点划分平面划分出的两个子集,若子集中全为同一属性样本,则作为叶子;若子集中不为同一属性样本,则作为叶结点,对此叶结点做下一步的划分。
    三、总结
    斜决策树是归纳一颗以线性分类器作为划分平面的决策树,是多个属性的线性组合,不再是对单一属性的划分。划分平面的选择是一个NP难问题,很难精确找到问题的最优解,可以通过OC1算法,CART-LC算法寻找,也可以通过遗传算法等启发式算法寻找。OC1算法是以爬山算法为基础,加入随机扰动试图跳出局部最优的一种算法,在构造分类边界上有很好的效果。作者证明算法最差的时间复杂度为O(N2logN)。

    展开全文
  • MATLAB 模拟退火算法

    千次阅读 2019-02-19 17:18:01
    足够高的温度对应随机的解,缓慢冷却对应对解进行一次随机扰动,内能对应目标函数。即将随机解不断进行扰动,根据目标函数变化以一定概率接受解,不断重复,解就会趋近于最优解。 接受新解概率——Metropolis准则...
  • matlab 噪声(随机数)生成函数

    万次阅读 2018-05-16 10:34:23
     2、 matlab函数randn:产生正态分布的随机数或矩阵的函数 3、Matlab中产生正态分布随机数的函数normrnd 4、Matlab - 产生高斯噪声 5、normrnd和randn的区别噪声,扰动,离群点,本质上就是生成服从某种分布的...
  • 为了计算个参数的基本效应,需要(+1)模拟值,其方法与对每个参数扰动的局部灵敏度方法相同,称为一个“路径”。通过随机生成参数集的多个路径,我们得到了每个参数的基本效果的集合。计算总数为,其中r为路径数.
  • 本文利用Matlab/Simulink搭建待识别励磁系统以及单机仿真系统模型分别施加M序列伪随机信号、阶跃信号及实施测扰动信号对待识别系统进行激励,采用遗传算法辨识励磁系统参数。
  • 在循环中,通过随机扰动产生一个新的解,然后求得新解和原解之间的能量差,如果差小于0,则采用新解作为当前解。 如果差大于0,则采用一个当前温度与能量差成比例的概率来选择是否接受新解。温度越低,接受的概率越...
  • 风力发电系统中Matlab鲁棒控制工具箱的应用,黄金杰,沈恂,针对风力发电系统中风速变化的随机性、风机力矩的扰动、高频未建模的不确定性,本文利用Hinf回路成形算法对成形后的系统设计鲁棒��
  • 利用MATLAB/Simulink及播音主持论文http://www.xyclww.com/post/29.html,其仿真工具实现了包含风电场的电力系统动态仿真,仿真可以模拟风电场在各种风速扰动、负荷扰动下的出力变化,以及网络发生三相短路故障、断线...
  • 最近学习了模拟退火智能算法,顺便学习了一下matlab,顺带一提matlba真香,对矩阵的操作会比python的numpy操作要更加方便,这里我们是以TSP问题为例子,因为比较好理解。 模拟退火介绍 模拟退火总的来说还是一种优化...
  • %(2)随机产生扰动r=(2*rand-1)*delt;新店x1=x0+r,同时计算f(r)、f(r)-f0 %(3)Metropolis准则,若f(r)-f0>0,接受该点(更新x0),且接受概率为p=exp(-(f(r)-f0)/T); %若p>r(r为0-1上的随机数),
  • 本课件内容包括: 研究动机:打开黑匣子 使用问题结构特征的其它方式 ...有限差分与同时扰动 凸优化的非渐进收敛 SGD的O(1/k)速率 英文原文课件下载地址: http://page2.dfpan.com/fs/b...
  • 针对变速变桨风力发电系统随机扰动大、多工况运行、结构时变的复杂系统控制问题,以风机的输出功率、转速和桨距角为研究对象,提出了一种基于混杂自动机的变速变桨控制模型。充分考虑到系统变速和变桨过程中的耦合...
  • 模拟退火SA

    2018-03-30 20:32:48
    在循环中,通过随机扰动产生一个新的解,然后求得新解和原解之间的能量差,如果差小于0,则采用新解作为当前解。如果差大于0,则采用一个当前温度与能量差成比例的概率来选择是否接受新解。温度越低,接受的概率越小...
  • 为了减小随机角抖动对耦合效率的影响,提出了基于激光章动的空间光到单模光纤的自动耦合方案,利用数据采集卡算出脱靶量并输出补偿电压。分析了算法精度的影响因素、激光章动信号频率与抖动频率的关系,用Matlab仿真...
  • MATLAB/Simulink中针对阶跃负荷扰动及长时间随机负荷扰动的情况,对联合优化前、后系统的动态响应进行了对比分析。仿真结果表明:所提联合优化方法能有效地改善负荷频率控制的稳态响应速度、优化系统的调频性能,...
  • 在青蛙更新策略中引入自适应扰动机制, 平衡了算法搜索深度, 并利用高斯变异算子代替随机更新操作, 提高了算法搜索速度; 在全局迭代中借鉴混沌优化策略思想, 以概率形式对最优个体进行优化, 避免了族群陷入局部最优, ...
  • 由于PJR-X小型喷浆机器人具有系统参数变化、随机干扰和负载扰动等特点,数学模型难以精确确定,因而采用传统的PID控制方法很难得到良好的控制效果,系统性能得不到保证.为了消除这些因素对机器人系统性能的影响,采用无...
  • %产生随机扰动 r = rand(1,6); xcnew = xclast + r(1)-0.5; ycnew = yclast + r(2)-0.5; zcnew = zclast + r(3)-0.5; anew = abs(alast + r(4)-0.5); bnew = abs(blast + r(5)-0.5); cnew = abs...
  • 数学建模方法:蚁群算法

    热门讨论 2010-05-21 15:35:07
    求解复杂TSP问题的随机扰动蚁群算法 基于蚁群算法的中国旅行商问题满意解 蚁群算法的研究现状和应用及蚂蚁智能体的硬件实现 蚁群算法概述 蚁群算法的研究现状及其展望 基于蚁群算法的配电网网架优化规划方法 用于...

空空如也

空空如也

1 2
收藏数 27
精华内容 10
关键字:

matlab随机扰动

matlab 订阅