资源简介
差分进化算法在寻优的过程中,首先,从父代个体间选择两个个体进行向量做差生成差分矢量;其次,选择另外一个个体与差分矢量求和生成实验个体;然后,对父代个体与相应的实验个体进行交叉操作,生成新的子代个体;最后在父代个体和子代个体之间进行选择操作,将符合要求的个体保存到下一代群体中去。
代码片段和文件信息
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代码
相关资源
- capon算法的DOA估计MATLAB代码
- 基于matlab粒子群算法解决旅行商(T
- 粒子群算法求解BP神经网络参数
- burg算法估计功率谱 matlab 完全自编
- 微电网多目标容量优化设计nsga2算法的
- 遗传算法解决最短路径问题matlab程序
- NSGA2优化算法Matlab求解多目标优化问题
- 无线定位的各种经典算法的matlab代码
- D-S证据理论算法及实现-matlab实现
- 基于meanshift的彩色图像分割算法源代
- 遗传算法matlab源代码
- 基于DCT变换的数字水印算法matlab代码
- DCT水印算法实现MATLAB
- 谐波恢复中的SVD_TLS算法
- 免疫遗传算法
- DBSCAN聚类算法matlab代码
- GA算法优化支持向量机
- 三相永磁同步电机SVPWM控制算法MATLA
- 基于模糊控制的路径规划算法的仿真
- SMOTE算法 MATLAB代码
- 机器人障碍环境下路径规划改进的回
- 节点导纳矩阵的Matlab算法
- 遗传算法求函数f=x+10*sin(5*x)+7*cos(
- 经典的music算法的程序仿真
- 医学三维重建MATLAB体绘制算法:光线
- 手势识别,基于 MATLAB
- 智能微电网粒子群优化算法.7z
- 免疫算法 MATLAB代码
- 模拟退火算法MATLAB实现代码2
- 快速提升的结构相似度图像质量评价
评论
共有 条评论