免疫算法与粒子群算法
免疫算法介绍
将免疫概念及其理论应用于遗传算法,在保留原算法优良特性的前提下,力图有选择、有目的地利用待求问题中的一些特征信息或知识来抑制其优化过程中出现的退化现象,这种算法称为免疫算法(Immune Algorithm) IA。
算法流程图如下:
粒子群算法介绍
粒子群优化(Particle Swarm Optimization, PSO)算法是Kennedy和Eberhart受人工生命研究结果的启发、通过模拟鸟群觅食过程中的迁徙和群聚行为而提出的一种基于群体智能的全局随机搜索算法,自然界中各种生物体均具有一定的群体行为,而人工生命的主要研究领域之一是探索自然界生物的群体行为,从而在计算机上构建其群体模型。自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣,生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体遵循:
(1) 避免与邻域个体相冲撞;
(2) 匹配邻域个体的速度;
(3) 飞向鸟群中心,且整个群体飞向目标。
仿真中仅利用上面三条简单的规则,就可以非常接近的模拟出鸟群飞行的现象。
算法流程图如下:
优化函数
本文中的优化函数模型具体的意义具体可以参考论文:
1.陈姗. 城市道路平面交叉口优化设计与评价[D]. 2015.长安大学(4.3节)
2.王秋平, 谭学龙, 张生瑞. 城市单点交叉口信号配时优化[J]. 交通运输工程学报, 2006(02):60-64.
优化目标函数用代码表述为:
%优化目标函数
function [Z,gi,di,hi,fcon1,fcon2,fcon3]=fun(C,Y,yi,yij,n,m,qij,qi,beta)
gi=yi*(C-15)/Y;%计算gi
vi=[443 313 413 411];
si=[1400 1423 1445 1500];
vs=sum(vi./si);
zsum=0;
for i=1:n
Tempdi=0;
Temphi=0;
for j=1:m
Tempdi=Tempdi+C*(1-gi(i)/C)^2/2/(1-yij(i,j))+yij(i,j)^2*C/2/qij(i,j)/gi(i)/(gi(i)-yij(i,j)*C);
Temphi=Temphi+0.9*(C-gi(i)/C)/(1-yij(i,j));
end
di(i)=Tempdi;
hi(i)=Temphi;
zsum=zsum+beta*di(i)*qi(i)+(1-beta)*hi(i)*qi(i);
end
if C<=160
fcon1=0;
else
fcon1=10000;
end
if C<30
fcon2=10000;
else
fcon2=0;
end
if C/(C-15)>=0.9/vs
fcon3=0;
else
fcon3=10000;
end
Z=zsum/sum(qi)+10000*(fcon1+fcon2+fcon3)+0.0001;
end
算法代码
免疫算法
以下是免疫算法代码.
clear all;
clc;
%初始化
D=1; %免疫个体维数
NP=50; %免疫个体数目
Xs=160; %上限
Xx=30; %下限
G=100; %最大免疫代数
pm=0.7; %变异概率
alfa=2; %激励度参数
belta=1; %激励度参数
detas=0.2; %相似度阈值
gen=0; %免疫代数
Nc1=5; %克隆个数
deta0=0.5*Xs; %邻域范围初值
% 模型参数
yij=[0.288 0.543 0.169;
0.293 0.508 0.199;
0.18 0.584 0.236;
0.288 0.443 0.269;];
qij=[443 838 261;
313 543 213;
255 827 256;
411 633 384];
yi=[0.543 0.508 0.584 0.443];
qi=[0.3 0.2 0.3 0.2];
Y=2.078;
beta=0.5;
n=4;
m=3;
%初始种群
f=rand(D,NP