资源简介
差分进化算法在寻优的过程中,首先,从父代个体间选择两个个体进行向量做差生成差分矢量;其次,选择另外一个个体与差分矢量求和生成实验个体;然后,对父代个体与相应的实验个体进行交叉操作,生成新的子代个体;最后在父代个体和子代个体之间进行选择操作,将符合要求的个体保存到下一代群体中去。
代码片段和文件信息
function trace=DE(fGenmax_FESNPDenx_minx_maxi_info)
%输入:
%f-目标函数
%Gen-迭代次数
%max_FES-目标函数最大访问次数
%NP-种群规模
%x_min-自变量最小值
%x_max-自变量最大值
%初始化
t0=cputime;
G=1;%初始化代数
F=0.5;%缩放因子
CR=0.8;%交叉概率
FES=0;%目标函数的访问次数
Gmin=zeros(1Gen);%各代最优值
Best_X=zeros(GenDen);%各代最优解
Value=zeros(1NP);%当前代下每个个体的最优值
X_0=x_min+(x_max-x_min)*rand(NPDen);%初始化NP个Den维向量
X_Mutation=zeros(NPDen);%变异后的向量
X_CrossOver=zeros(NPDen);%交叉后的向量
X_Selection=zeros(NPDen);%选择后的向量
%找出初代最优值
for i=1:NP
Value(i)=f(X_0(i:)i_info);
end
[value_minpos_min] = min(Value);
FES=FES+NP;
while(FES<=max_FES)
%变异操作
for i=1:NP
%随机产生三个不相同的向量
r=randperm(NP);
q=r(1);
k=r(2);
p=r(3);
if q==i
q=r(4);
else if k==i
k=r(4);
else if p==i
p=r(4);
end
end
end
mutation=X_0(q:)+F*(X_0(k:)-X_0(p:));
for j=1:Den
%变异后不能超出边界
if mutation(1j)>x_min & mutation(1j) X_Mutation(ij)=mutation(1j);
else
X_Mutation(ij)=x_min+(x_max-x_min)*rand(1);
end
end
- 上一篇:Simuli
nk仿真_模糊PID控制 - 下一篇:FFT的C代码
相关资源
- 基于小波变换的数字水印算法115024
- Dstar(动态路径规划)算法62845
- 非线性SVM算法-matlab实现
- 《MATLAB 智能算法超级学习手册》-程序
- 光纤传输中的分布傅立叶算法matlab实
- k近邻算法matlab实现
- matlab编写的susan算法程序
- matlab-图像处理算法
- matlab链码提取算法
- matlab 数字图像对比度拉伸算法
- 数字图像处理radon matlab变换算法代码
- 主动轮廓模型算法matlab程序
- MATLAB 实现各类常见算法
- 数字信号处理 理论算法与实现 胡广书
- 基于BP神经网络的盲均衡算法 C程序(
- 基于harris算法的角点检测matlab原代码
- 图像匹配matlab源程序sift算法
- matlab编写的量子遗传算法
- 用蚁群算法求解TSP问题的matlab程序
- 粒子群算法matlab工具箱
- Matlab图像分割边缘提取算法
- prony 算法
- 蚁群算法论文+源代码
- 基于粒子群算法的非合作博弈的matl
- 协同进化遗传算法求解函数优化问题
- pri传统分选算法
- 基于RSSI的VIRE定位算法
- 相关向量机的快速算法
- Gardner_for _MPSK(PSK的符号同步算法)
- 粒子群算法优化pid源码 matlab仿真.ra
评论
共有 条评论