RBF神经网络参数的参数优化(进化算法)+Matlab源码

2023-11-10

@RBF神经网络参数的参数优化(进化算法)

1 RBF神经网络引入

1985年,Powell提出了多变量插值的径向基函数(RBF)方法。径向基函数是一个取值仅仅依赖于离原点距离的实值函数,也就是Φ(x)=Φ(‖x‖),或者还可以是到任意一点c的距离,c点称为中心点,也就是Φ(x,c)=Φ(‖x-c‖)。任意一个满足Φ(x)=Φ(‖x‖)特性的函数Φ都叫做径向基函数,标准的一般使用欧氏距离(也叫做欧式径向基函数),尽管其他距离函数也是可以的。其公式的一般表现如下,X表示样本点,Xi 是第i个rbf神经元的中心,σi为聚类宽度。
在这里插入图片描述
其三层结构如下图:在这里插入图片描述

2 数据集

一个二维两分类的数据集dataset,数据为3000*3。前2列为特征,第三列为标签(取值1或-1)。在训练时使用前2500个作为训练集,后500个作为测试集。

2.1 三维展示:

在这里插入图片描述

2.2 二维展示:

在这里插入图片描述

3 RBF神经网络

1、 传统方法是使用k-means确定聚类中心和宽度。基于梯度方法更新权值。
2、不同的rbf中心个数设定会影响最终训练误差。此方法在初始化rbf个数、中心和宽度后,将不再改变
3、其函数实现如下,仅供参考(未经核实)

3.1 RBF实现 Matlab源码

clc;clear;close;

%%数据导入
d = load("data1.mat");
data = (d.data)';
dat=data(1:2500,1:2);
labels=data(1:2500,3);
 %参数设置
inputNums=2;
outputNums=1;
hideNums= 10        %人为设定rbf个数
maxcount=1e4;     %max_iter
samplenum = 2500;  %training data
precision=0.001;   %精度
alpha= 0.01;

%参数记录
 error=zeros(1,maxcount);
 errorp=zeros(1,samplenum);
 w=rand(hideNums,outputNums);
 
 %% k-means 确定rbf中心和宽度
[Idx,C]=kmeans(dat,hideNums);
dd=zeros(1,hideNums);    %% RBF宽度
 for i=1:hideNums
     dmin=10000;
     for j=1:hideNums
         ddd=(C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2;
         if(ddd<dmin&&i~=j)
             dmin=ddd;
         end
     end
     dd(i)=dmin;     
 end
 
%% 初始化隐层输出矩阵
 b=zeros(2500,hideNums);  %%隐含层输出矩阵
 for i=1:2500
     for j=1:hideNums
         b(i,j)=exp(-((data(i,1)-C(j,1))^2+(data(i,2)-C(j,2))^2)/(2*dd(j)));
     end
 end
 
 %% 迭代循环体
 count=1;
 while(count < maxcount)
     
     c=1;
     while(c<=samplenum)
         
         double o;
         o=0.0;
         for i=1:hideNums
             o=o+b(c,i)*w(i,1);
         end
         
         errortmp=0;
         errortmp=errortmp+(labels(c,1)-o)^2;
         errorp(c)=0.5*errortmp;
         yitao=labels(c,1)-o;
         for i=1:hideNums
             w(i,1)=w(i,1)+alpha*yitao*b(c,i);   %%更新权重矩阵
         end
         
         c=c+1;
     end
     
     double tmp;
     tmp=0.0;
     for i=1:samplenum
         tmp=tmp+errorp(i)*errorp(i);    
     end
     tmp=tmp/(c-1);
     error(count)=sqrt(tmp);     %%均方根误差
     if(error(count)<precision) 
         break;
     end
   count=count+1;
 end
 
 
  %% 计算训练误差
 % 隐含层输出矩阵
 train=zeros(2500,hideNums);
 for i=1:2500
     for j=1:hideNums
        train(i,j)=exp( -( (data(i,1)-C(j,1))^2+(data(i,2)-C(j,2))^2 )/(2*dd(j)) );
     end
  end
 
 train_count=0;
 for i=1:2500
     net=  0.0;
     for j=1:hideNums
         net=net+train(i,j)*w(j,1);
     end
     
     if((net>0&&data(i,3)==1)||(net<=0&&data(i,3)==-1))
         train_count=train_count+1;
     end
 end
 
 %% 计算测试误差
 % 隐含层输出矩阵
 test=zeros(500,hideNums);
 for i=2501:3000
     for j=1:hideNums
        test(i-2500,j)=exp( -( (data(i,1)-C(j,1))^2+(data(i,2)-C(j,2))^2 )/(2*dd(j)) );
     end
  end
 
 test_count=0;
 for i=2501:3000
     net=  0.0;
     for j=1:hideNums
         net=net+test(i-2500,j)*w(j,1);
     end
     
     if((net>0&&data(i,3)==1)||(net<=0&&data(i,3)==-1))
         test_count=test_count+1;
     end
 end
 train_count;
 train_error = 1-(train_count/2500)
 test_count;
 test_error = 1-(test_count/500)

3.2 结果统计

使用不同的隐藏层个数进行训练,记录其训练误差和测试误差,其结果如下表。
在这里插入图片描述
总结:不同的rbf神经元个数设置是会影响最终的误差,当hideNums=7时训练误差和测试误差均很小,当hideNums=10时,有100%的训练样本和测试样本准确率。

4 进化算法优化RBF参数

基于梯度下降的优化方法,其优化目标为训练误差或者测试误差等最小化,本质是一个优化问题。若将rbf的参数:中心,宽度和隐层到输出层的权值作为优化输入参数,其训练误差或是测试误差最小化作为优化目标。便可使用进化算法进行优化。其实现可以是:

4.1 main函数

此时设置rbf神经元个数为2。(即 hideNums = 2

clear;clc;close;

load ('data1.mat');
d = data';
 
hideNums = 2;

iter_max = 1e4;
pop_num = 100;

best_fitness = zeros(iter_max,1);

[m,n] =size(d); 
dim = n-1;
data_max = max(d(:,1:dim));
data_min = min(d(:,1:dim));
sigma_max = max(data_max-data_min);
W_max = 2*ones(1,hideNums);
W_min = -2*ones(1,hideNums);

x_max =[];
x_min =[];
% 一个rbf中心需要 dim+2 的参数 , 聚类中心维度dim ,宽度 1 ,权值矩阵 1
for j=1:hideNums
    x_max = [x_max,data_max];
    x_min = [x_min,data_min];
end
% 个体上1:hideNums*dim 为聚类中心参数 dim*hideNums+1:(dim+1)*hideNums 为聚类宽度,
% (dim+1)*hideNums+1:(dim+2)*hideNums 为隐层到输出层权值
x_max = [x_max,sigma_max*ones(1,hideNums),W_max];
x_min = [x_min,zeros(1,hideNums),W_min];

% initial
for i = 1:pop_num
   x_pop(i,1:hideNums*(dim+2)) = rand(1,hideNums*(dim+2)).*(x_max-x_min)+x_min;
end
x_pop(:,hideNums*(dim+2)+1) = eluvate(x_pop,d,hideNums);  %% 计算一次适应度
[~,index]=max(x_pop(1,:));
x_best = x_pop(index,1:hideNums*(dim+2));
best_fitness(1) = x_pop(index,hideNums*(dim+2)+1);

%iter
for iter = 2:iter_max
    disp(['第',num2str(iter),'次迭代']);
    x_pop = DE(x_pop,iter,iter_max,x_best,x_min,x_max,d,hideNums); %返回 pop_num*3
    best_fitness(iter) = x_pop(1,hideNums*(dim+2)+1); 
    x_best = x_pop(1,1:hideNums*(dim+2));
end
 
plot(best_fitness);
title(['min最优值  ',num2str(best_fitness(end))]);
% xlabel(['best [x1,x2] = ',num2str(x_best)]);
ylabel("fitness");
x_best
best_fitness(iter_max);

4.2 DE实现函数

此处的DE算法使用自适应的控制参设置(F ,CR),该方法基于最大迭代次数非线性的递增或递减,变异使用新的策略。该方法来自于某篇国内论文[1],简单易实现。本文仅选择一种可行的方法实现验证,并不做过多评价。

function x_pop = DE(x_pop,iter,iter_max,x_best,x_min,x_max,d,hideNums)
% 设置
F = 1- iter/(iter+iter_max);   % 缩放因子
CR = exp((iter-iter_max)/iter_max);  % 交叉概率

x_temp = x_pop;   %复制一份
[m,n]= size(x_pop); %%此处携带个体的适应度在最后一列
dim = n-1;          %%此时dim 为算法求解的变量数
 k = (iter_max-iter)/iter_max;
%% 1)变异
% 随机选取种群中两个不同的个体,将向量缩放后与待变异的个体进行向量合成 ,得到变异中间体
for i = 1:m
    parent= choose_parent(i,m);  %存放母本1,母本2,母本3的序号
    x_pop(i,1:dim) = k * x_temp(i,1:dim) + (1-k)*x_best + F*(x_temp(parent(2),1:dim) - x_temp(parent(3),1:dim)); 
    for j = 1:dim                   %%边界处理
        if x_pop(i,j)>x_max(j) || x_pop(i,j)<x_min(j)
            x_pop(i,j) = rand*(x_max(j)-x_min(j)) +x_min(j);
        end
    end
end

%% 2) 交叉 
% 使用g代种群和其变异中间体进行交叉
for i = 1:m
    for j = 1:dim
        j_rand = floor(rand*dim)+1;
        if rand > CR && j_rand ~= j
             x_pop(i,j) = x_temp(i,j);
        end
    end
end
%% 3) 选择
% 1v1 选择。
x_pop(:,dim+1) = eluvate(x_pop(:,1:dim),d,hideNums);
t = x_pop(:,dim+1) > x_temp(:,dim+1);
x_pop = x_pop.*t + x_temp.*(1-t);

% for i =1:m
%     if x_pop(i,n+1) > x_temp(i,n+1)
%         x_temp(i,:) = x_pop(i,:); 
%     end
% end
% 
% x_pop = x_temp;

end


function parent = choose_parent(i,m)
parent1 = i;
flag = 1;
while flag
    parent2 = floor(rand*m);
    parent3 = floor(rand*m);
    if(parent2 ~= 0 && parent3 ~= 0)
    if(parent1 ~= parent2 && parent1 ~= parent3)
        if(parent2~= parent3)
            flag = 0;
        end
    end
    end
end
parent = [parent1,parent2,parent3];
end

4.3 函数评价

这一大类的进化算法,其实现难点就在于此,如何编写适应度评估函数!!
此时使用训练集预测准确率作为优化目标。

function fitness = eluvate(x_pop,d,hideNums)
[m,n] = size(x_pop);
dim = n/hideNums - 2;
data_num = size(d,1);
fitness = [];

for i =1:m
    %列向量,每一行代表一个RBF宽度
    rbf(i).sigma(1:hideNums) = x_pop(i,hideNums*(dim)+1:hideNums*(dim+1))';
    %矩阵,每一行代表一RBF中心,
    for k =1:hideNums
        rbf(i).mu(k,1:dim) = x_pop(i,(k-1)*(dim)+1:k*(dim));
    end
    % 权重矩阵,权重矩阵第一列是偏置1
    rbf(i).weight = [1,x_pop(i,hideNums*(dim+1)+1:hideNums*(dim+2))]; 
end
        
    %给数据加x0 =1
    train_data = d(1:2500,1:dim);
   
for i =1:m
    for k = 1:hideNums
        temp = (sum((train_data - rbf(i).mu(k,:)).^2,2));
       rbf(i).z(:,k) = exp( -temp./(2*(rbf(i).sigma(k))^2)); 
    end
    % 加偏置 Z0 =1
    rbf(i).z(:,1:hideNums+1) = [ones(2500,1),rbf(i).z];
end
       
for i = 1:m
    rbf(i).out = rbf(i).z*(rbf(i).weight)';
    rbf(i).predict = rbf(i).out;
    rbf(i).predict(find(rbf(i).out < 0)) = -1;
    rbf(i).predict(find(rbf(i).out >= 0)) = 1;
    temp = rbf(i).predict.*d(1:2500,dim+1);
    index = find(temp == 1);
    rbf(i).count = length(index); 
    fitness = [fitness;rbf(i).count];
end

end

4.4 运行结果

运行完成后最优位置:
x_best = [21.2735176022600 7.18976834476119 28.0382989880820 -12.1554405903179 10.2756309083648 41.5810190156907 0.793344450152196 -1.62700237519134];
其适应度迭代情况如下图:
在这里插入图片描述

经过10000次的迭代训练样本的预测准确计数达到2500。即能实现完全预测(完全内插)。

4.5 测试误差

上述的优化目标为训练样本预测准确度,而训练网络的好坏还需计算测试误差。以下提供测试误差的计算实时函数,此函数需要在完成优化任务后的基础上进行,即得保留上次优化完成后的工作区变量

[m,n] = size(x_best);
dim = n/hideNums - 2;
data_num = size(d,1);
fitness = [];

for i =1:m
    %列向量,每一行代表一个RBF宽度
    rbf(i).sigma(1:hideNums) = x_pop(i,hideNums*(dim)+1:hideNums*(dim+1))';
    %矩阵,每一行代表一RBF中心,
    for k =1:hideNums
        rbf(i).mu(k,1:dim) = x_pop(i,(k-1)*(dim)+1:k*(dim));
    end
    % 权重矩阵,权重矩阵第一列是偏置1
    rbf(i).weight = [1,x_pop(i,hideNums*(dim+1)+1:hideNums*(dim+2))]; 
end
          
    test_data = d(2501:data_num,1:dim);
   
for i =1:m
    for k = 1:hideNums
         temp = (sum((test_data - rbf(i).mu(k,:)).^2,2));
         rbf(i).z(:,k) = exp( -temp./(2*(rbf(i).sigma(k))^2));
    end
    % 加偏置 Z0 =1
    rbf(i).z(:,1:hideNums+1) = [ones(500,1),rbf(i).z];
end
       
for i = 1:m
    rbf(i).out = rbf(i).z*(rbf(i).weight)';
    rbf(i).predict = rbf(i).out;
    rbf(i).predict(find(rbf(i).out < 0)) = -1;
    rbf(i).predict(find(rbf(i).out >= 0)) = 1;
    temp = rbf(i).predict.*d(2501:data_num,dim+1);
    index = find(temp == 1);
    rbf(i).count = length(index); 
    fitness = [fitness;rbf(i).count];
end
fitness

运行结果为 fitness = 500,即测试样本预测准确!!

4.6 总结

此方法得到的RBF神经网络较为轻量,但优化耗时较长,仅为一种学习思路。并不提倡使用。

参考文献
[1] 张延莉. 函数优化问题求解的自适应差分进化算法[J]. 内蒙古师范大学学报(自然科学汉文版),2017,46(6):797-799.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RBF神经网络参数的参数优化(进化算法)+Matlab源码 的相关文章

  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • 如何在 Matlab 中将数组打印到 .txt 文件?

    我才刚刚开始学习Matlab 所以这个问题可能非常基本 我有一个变量 a 2 3 3 422 6 121 9 4 55 我希望将值输出到 txt 文件 如下所示 2 3 3 422 6 121 9 4 55 我怎样才能做到这一点 fid f
  • 在 Matlab 中高效获取像素坐标

    我想在 Matlab 中创建一个函数 给定一个图像 该函数将允许人们通过单击图像中的像素来选择该像素并返回该像素的坐标 理想情况下 人们能够连续单击图像中的多个像素 并且该函数会将所有相应的坐标存储在一个矩阵中 有没有办法在Matlab中做
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 如何找到平面和 3d 矩阵之间的交平面

    如果我有一堆图像并且尺寸如下 size M 256 256 124 我有 3 个点 它们的坐标是 coor a 100 100 124 coor b 256 156 0 coor c 156 256 0 如何创建 M 与这 3 个点定义的平
  • 通过 Matlab 访问 Physionet 的 ptbdb 中的数据库

    我首先设置系统 old path which rdsamp if isempty old path rmpath old path 1 end 8 end wfdb url http physionet org physiotools ma
  • 如何在 matlab 中创建由多个 3d 图像数据数组组成的数组

    我正在阅读 15 张图片imagedata imread imagename jpg 它的大小总是320 by 320 by 3 如何将数据放入数组中 使用 for for 循环 以便在访问新数组的第一个元素时获得输入的第一个图像的 RGB
  • 如何在文本集中创建所有字符组合?

    例如 我有这样的文本集 第 1 栏 a b 第 2 栏 l m n 第 3 栏 v w x y 我想将它们组合起来以获得如下输出 alv alw alx aly amv amw amx amy 这将输出 24 种文本组合 如果我只使用前两列
  • MATLAB:在不使用循环的情况下提取矩阵的多个部分

    我有一个巨大的 2D 矩阵 我想从中提取 15 个不同的 100x100 部分 我有两个向量 x 和 y 其中保存了零件的左上角索引 我用过这样的东西 result cam1 x 1 end x 1 end 99 y 1 end y 1 e
  • 在不知道大小的情况下在Matlab中预分配空间?

    我正在构建一个向量X在 Matlab 中 通过将循环过程中每次迭代的结果连接起来 我现在正在做的是 X for j 1 N do something that delivers a vector A X X A end 不可能先验地预测 A
  • 四边形到矩形变换

    我想将四边形图像转换为我知道这些顶点的矩形图像 例如 在下图中 我知道坐标 X1 Y1 X4 Y4 和 x1 y1 x2 y2 并且我想将其转换为矩形 如何获得与四边形图像中的 X Y 坐标相对应的矩形图像中的 x y 坐标 gt Y gt
  • 使用 MATLAB 正则表达式将重叠模式与捕获进行匹配

    我正在尝试解析如下所示的日志文件 09 May 2009 04 10 29 Starting foo this is stuff to ignore 09 May 2009 04 10 50 Starting bar more stuff
  • 各向异性扩散二维图像[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在二维图像上使用各向异性扩散 我想使用 python 但不介意使用 matlab 或 c 他们有我
  • 使用嵌套 if 子句向量化循环

    Problem 我正在尝试优化代码的运行时 并且之前曾提出过类似的问题 其中包括几个嵌套的 if 语句 向量化嵌套 if 语句 https stackoverflow com questions 38125770 vectorizing n
  • MATLAB 的函数 imfill() 导致错误

    我有一个二进制图像 720x1280 逻辑 其中有一些漏洞 所以我使用imfill来填充它 但是操作失败并且出现以下错误 Undefined function or variable eml assert all constant Erro
  • 防止Matlab舍入输出?

    我运行一个简单的脚本来估计函数的根 一切都很好 算法的每次迭代都会打印出当前的 x 和 f x 但是当脚本完成并将 x 的最终估计设置为函数的输出时 该值将被返回并四舍五入到小数点后 3 位 while k lt maxit k k 1 d
  • MATLAB - 避免循环基于其他向量的元素创建矩阵

    假设我有向量x y z 长度n m l 我想创建一个细胞矩阵Q使用这些向量的元素 天真的人们可以像这样使用 for 循环 for i 1 n for j 1 m for k 1 l Q i j k someFunction x i y j
  • 高斯 RBM 在一个简单的例子上失败了

    我想对具有连续输入变量的受限玻尔兹曼机有一个具体的了解 我正在尝试设计一个最简单的示例 以便可以轻松跟踪行为 所以 就在这里 输入数据是二维的 每个数据点均取自两个对称正态分布 sigma 0 03 之一 其中心间隔良好 15 倍 sigm
  • 使用 mle() 估计自定义分布的参数

    我有以下代码 我希望估计自定义分布的参数 有关分发的更多详细信息 https stackoverflow com q 56522903 4930944 然后使用估计的参数 我想看看估计的 PDF 是否类似于给定数据的分布 它应该与给定数据的
  • 如何使用 Mikolajczyk 的特征检测器/描述符评估框架?

    我正在尝试使用事实上的标准评估我的 SURF 描述符实现的正确性Mikolajczyk 等人的框架 阿尔 http www robots ox ac uk vgg research affine 我使用 OpenCV 来检测和描述 SURF

随机推荐

  • 免密要登录

    ssh keygen t dsa P f ssh id dsa cat ssh id dsa pub gt gt ssh authorized keys t参数就是指定要生成的密钥类型 你这里指定的是dsa P就是你提供的旧密码 表示没有
  • 历届试题 分糖果 【模拟】

    历届试题 分糖果 时间限制 1 0s 内存限制 256 0MB 问题描述 有n个小朋友围坐成一圈 老师给每个小朋友随机发偶数个糖果 然后进行下面的游戏 每个小朋友都把自己的糖果分一半给左手边的孩子 一轮分糖后 拥有奇数颗糖的孩子由老师补给1
  • Linux 环境下Fortran程序连接使用Intel MKLPardiso解对称稀疏矩阵

    Linux 环境下Fortran程序连接使用Intel MKLPardiso解对称稀疏矩阵 pardiso求解线性方程组 A x b 其中 A 是对称稀疏阵 lt 1 gt Pardiso的Fortran接口 call pardiso pt
  • Effective C++学习笔记

    Effective C 1 让自己习惯C 2 构造 析构 赋值运算 命名习惯 lhs left hand side rhs right hand side 指向一个T型对象 的指针命名pt 意思是 pointer to T 尽量以const
  • 一、数据挖掘概述

    数据挖掘介绍 1 数据挖掘的定义 数据挖掘 指从大量的数据中通过算法搜索隐藏于其中信息的过程 数据挖掘在面向用户的互联网产品中发挥着及其重要的作用 2 数据挖掘的对象 常见的数据挖掘对象有以下7大类 关系型数据库 MySQL 非关系系数据库
  • Visual Studio Community 2022(VS2022)安装方法

    直接上步骤 1 首先可以下载安装一个Visual Studio安装器 叫做Visual Studio installer 这个安装文件很小 很快就安装完成了 2 打开Visual Studio installer 小软件 3 按照开发需求选
  • RocketMQ消息幂等(去重)通用解决方案

    消息中间件是分布式系统常用的组件 无论是异步化 解耦 削峰等都有广泛的应用价值 我们通常会认为 消息中间件是一个可靠的组件 这里所谓的可靠是指 只要我把消息成功投递到了消息中间件 消息就不会丢失 即消息肯定会至少保证消息能被消费者成功消费一
  • 实验报告-python文库_python大作业实验报告

    python大作业实验报告 大学计算机基础 理工 大作业 暨南大学南校区生活指南系统 G108 甘颖欣 熊梦娜 翁婉晖 梁绮婷 李嘉顺 2015 1 32 目录 目录 2 暨南大学南校区生活指南系统 选题说明书 3 1 成员分组和任务分工
  • CSS —— 手摸手实现一个文字霓虹灯闪烁特效

    CSS 手摸手实现一个文字霓虹灯闪烁特效 一 了解 text shadow 属性 text shadow 属性应用于阴影文本 属于 CSS3 的属性 默认值为 none text shadow 属性连接一个或更多的阴影文本 属性是阴影 指定
  • 贪婪的非分层灰狼优化算法(G-NHGWO)(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 狼优化 GWO 算法是基于灰狼社会等级及其
  • 织梦网站后台基本设置

    栏目概述 最主要还是说熟悉下网站后台基本设置 然后及我安装文件的常规操作 登陆网站后台 点击系统 基本参数 输入站点根网址 删除文档HTML默认保存路径a 填写下网站版权信息点击确定 小皮面板点击网站管理点开网站根目录删除install文件
  • java 输入_详解Java输入输出数据流模型和Web应用程序开发

    前言 Web应用开发架构技术不断的演化 从基于通用网关接口CGI开发的能够在操作系统上运行的独立组件 到专门的隔离运行的Servlet 一直到到现在我们对复杂应用开发使用Java EE技术或者Spring框架系列 其实其底层的核心逻辑基本上
  • Hystrix使用说明,配置参数说明

    四 配置信息 default或HystrixCommandKey 最常用的几项 超时时间 默认1000ms 单位 ms 1 hystrix command default execution isolation thread timeout
  • 1141:删除单词后缀(C C++)

    题目描述 给定一个单词 如果该单词以er ly或者ing后缀结尾 则删除该后缀 题目保证删除后缀后的单词长度不为0 否则不进行任何操作 输入 输入一行 包含一个单词 单词中间没有空格 每个单词最大长度为32 输出 输出按照题目要求处理后的单
  • BigQuery 如何帮助大规模交付业务型企业提供物联网解决方案

    介绍 Leverege是一家软件公司 它使全球市场领导者能够快速且经济高效地构建企业物联网应用程序 以提供以数据为中心的决策能力 优化运营 改善客户体验 交付客户价值并增加收入 Leverege 的主要 SaaS 产品 Leverege I
  • 不用虚拟机也能在Windows下使用Linux

    不用虚拟机也能在Windows下使用Linux 想学习热门的Linux系统 可是一开始就需要安装虚拟机软件 这样很容易消耗Linux初学者的热情 比如常用的VMWare虚拟机 虽然步骤并不复杂 但是一开始的搭建和配置过程 容易劝退一部分新手
  • 开源CA搭建-基于openssl实现数字证书的生成与分发

    目录 一 前言 二 openssl介绍 三 openssl的常用用法 一 单向加密 二 生成随机数 三 生成公钥 私钥 1 生成私钥 2 提取公钥 四 搭建CA 一 创建根CA私钥 二 生成自签名证书 三 创建数据库以及新颁发证书数字 四
  • Gitee Go代码格式审查、程序编译和冒烟测试

    本文分享自中移OneOS微信公众号 CI CD搭建流程 Gitee篇 作者 Kisann Gitee CI CD能力 Gitee 即码云 是OSCHINA NET推出的代码托管平台 已有超过600 万的开发者选择Gitee Gitee Go
  • ESP8266实现网页交互

    前言 物联网LOT intermet of things 时代 万物互联 wifi芯片是非常重要的 乐鑫的高性价比的ESP8266芯片凭借低功耗低成本高集成度等优势在市场上占有较高的份额 为什么选用这款芯片可以参考之前的调研报告 在之前的资
  • RBF神经网络参数的参数优化(进化算法)+Matlab源码

    RBF神经网络参数的参数优化 进化算法 1 RBF神经网络引入 1985年 Powell提出了多变量插值的径向基函数 RBF 方法 径向基函数是一个取值仅仅依赖于离原点距离的实值函数 也就是 x x 或者还可以是到任意一点c的距离 c点称为