遗传算法实例(参考)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 T
X e (s) T t1 fe (t)
其中:T 是进化代数; fe (t) 是第t代的平均适应度函数; X e (s) 表示到T代为止所有适应度函数值的平均性能。
在线指标用于说明算法的在线性能。
• (2)离线性性能评估 离线性能表示为:
X
* e
(s)
1 T
T t 1
f *(t) e
其中 f *(t) 是第t代最好的个体的适应度函数值; e
end end 再计算目标值:
eval=chrom*w';
• ranking:基于排序的适应度分配。按照个体的目标值ObjV由小到大的 顺序对它们进行排序,并返回一包含对应个体适应度值FitnV的列向量
FitnV=ranking(ObjV)
FitnV=ranking(ObjV, RFun)
FitnV=ranking(ObjV, RFun, SUBPOP) • 举例:考虑具有10个体的种群,其当前目标值如下:
湖南师范大学计算机专业研究生课程
遗传算法基础及应用实例
湖南师范大学 数学与计算机科学学院
刘刚
一、遗传算法的基本知识
• 遗传算法(Genetic Algorithm)是一类借鉴生物 界的进化规律(适者生存,优胜劣汰遗传机制) 演化而来的随机化搜索方法。
1975 年
遗传算法
ຫໍສະໝຸດ Baidu
美国 J.Holland教授
NewChrom=recombin(REC_F, Chrom, RecOpt)
NewChrom=recombin(REC_F, Chrom, RecOpt, SUBPOP) • 低级重组函数:xovsp——单点交叉。Recdis——离散重组。 • 算法说明:recombin检测输入参数的一致性并调用低级重组函数。如
FitnV=ranking(ObjV, RFun) FitnV=[50 40 30 25 3 5 7 10 14]’ • FitnV表明了每个个体被选择的预期概率。
• select: (高级函数)从种群Chrom中选择个体返回到SelCh中。 SelCh=select(SEL_F, Chrom, FitnV) SelCh=select(SEL_F, Chrom, FitnV, GGAP) SelCh=select(SEL_F, Chrom, FitnV, GGAP, SUBPOP)
ObjV=[1 2 3 4 5 10 9 8 7 6]‘。使用线性排序和压差为2,估算适应度值
FitnV=ranking(ObjV) FitnV =[ 2.00 1.7778 1.5556 1.3333 1.1111 0 0.2222 0.4444 0.6667 0.8889]’ • 举例:使用RFun中的值估算适应度值 RFun=[3 5 7 10 14 18 25 30 40 50]’
• 按概率Pc进行交叉操作;
• 按概率Pm进行突变操作;
• 没有满足某种停止条件,则 转第(2)步,否则进入(7)。
• 输出种群中适应度值最优的 染色体作为问题的满意解或 最优解。
遗传算法的优点
• (1)遗传对所解的优化问题没有太多的数学要求, 遗传算法可以处理任意形式的目标函数和约束, 无论是线性的还是非线性的,离散的还是连续, 甚至混合的搜索空间。
对于设计者而言,应该有一个估计的总收益值,如>6.4。 当计算结果大于估计值时就基本达到了目的,但并不一定 是最优解。
三、函数讲解
• crtbase:创建长度为Lind的向量
BaseV=crtbase(Lind, Base) 如果Lind是向量,BaseV的长度为Lind的总长;如果Base也 是一个长为Lind的向量,则BaseV是一组由Lind和基本字符 Base的元素决定长度的基本字符组组成。当描述染色体结 果的基因为基本字符时,最后一选项是有用的。 • 举例:创建2个基数为6的基本字符{0,1,2,3,4,5}和3 个基数为9的基本字符{0,1,2,3,4,5,6,7,8}的基 本字符向量。 BaseV=crtbase( [2 3], [6 9] ) BaseV=[ 6 6 9 9 9]
%复制矩阵
SelCh=mutbga(SelCh, f);
%变异
SelCh=fix(SelCh);
%fix(2.8)=2.0
ObjVSel=targetalloc(SelCh);
%计算子代目标函数值
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入
end
• 经过遗传迭代后,目标分配方案如下:(可能的一种方案)
目标编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 分配结果 1 7 7 1 7 1 1 7 2 7 1 3 8 1 8
• 与此方案对应的总收益为6.4719
• 注:
最大遗传代数为MAXGEN=400,方能比较稳定地得到总 收益值为6.4719。
• targetalloc:计算子代目标函数值并返回。 • ObjV=targetalloc(Chrom);
首先生成初始种群:
chrom=crtbp(NIND, BaseV)+ones(NIND,15); 然后按火力点编号分配pij值: for i=1:m
for j=1:15 chrom(i, j)=p( chrom(i,j), j );
n
max( cij ) j 1
• 染色体采用十进制编码,每个基因表示为火力点 的编号。染色体的长度由按目标批次编号顺序排 列的火力单元分配编号组成,表示一种可能的分 配方案。
• 射击有利程度估计值(对每个定点测量后确定的)
p=[.87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .62 .87 .70 .22 .80 .42 .43 .90 .13 .95 .18 .19 .12 .61 .35; .48 .20 .42 .16 .43 .58 .69 .03 .34 .72 .15 .24 .29 .30 .75];
C —— 个体的编码方法; E —— 个体适应度评价函数; P0 —— 初始群体; M —— 群体大小; Φ —— 选择算子; Γ —— 交叉算子; Ψ —— 变异算子; T —— 遗传运算终止条件。
遗传算法思想
• 初始化群体;
• 计算群体上每个个体的适应 度值;
• 按由个体适应度值所决定的 某个规则选择将进入下一代 的个体;
• 威胁程度评估值
w=[.47 .97 .76 .62 .48 .77 .33 .74 .54 .65 .43 .35 .63 .66 .57];
计算过程
• BaseV=crtbase(15,8);
%创建初始矩阵
Chrom=crtbp(NIND, BaseV)+ones(NIND,15); %初始种群
• 注: 空袭批次可能因机型的不同,袭击方向的不同,袭击方式 的不同,而不同。 火力单元可能因导弹类型的不同,分布方位的不同,预警 时间的不同,而不同。 这些不同,导致了各批目标的威胁程度与各火力单元对各 批目标的射击有利程度的不同。
• 第 j 批目标的威胁程度评估值为wj,第 i 个火力单 元对第 j 批目标射击有利程度估计值为pij,令各火 力单元对各批目标进行拦击的效益值为cij=wj×pij, 其中cij表示对某批目标进行拦击我方获益大小程 度。目标分配的目的是满足目标分配的基本原则, 追求总体效益最佳,即求:
直接对结构对象进行操作,不 存在求导和函数连续性的限定
具有内在的隐并行性和更好 的全局寻优能力;
采用概率化的寻优方法,能 自动获取和指导优化的搜索 空间,自适应地调整搜索方 向,不需要确定的规则。
遗传算法的组成
遗传算法可定义为一个 8 员组: SGA=(C, E, P0, M, Φ, Γ, Ψ, T)
• 举例:chrom=[1 11 21; 2 12 22; 3 13 23; 4 14 24] FitnV=[1.2, 0.3, 0.9, 0.7]‘ SelCh=select('sus',chrom,FitnV) SelCh =[1 11 21; 3 13 23; 3 13 23; 4 14 24]
• 概率最小的被淘汰了——[2 12 22]0.3 • sus:随机遍历抽样。按FitnV的值选择个体。
• recombin:完成种群Chrom中个体的重组,在新种群NewChrom中返回 重组后的个体。Chrom和NewChrom中的一行对应一个个体。
NewChrom=recombin(REC_F, Chrom)
果recombin调用时具有多个种群,则对每个子种群分别调用低级重组 函数。 • 举例:P81
• rep:矩阵复制。
Syntax: MatOut = rep(MatIn, REPN);
• Example:
•
MatIn = [1 2 3]
•
REPN = [1 2]: MatOut = [1 2 3 1 2 3]
ObjV=targetalloc(Chrom);
%计算初始种群函数值
while
FitnV=ranking(-ObjV);
%分配适应度值
SelCh=select('sus',Chrom,FitnV,GGAP); %选择
SelCh=recombin(‘xovsp’,SelCh,0.7);
%重组,交叉
f=rep([1;8],[1,15]);
•
REPN = [2 1]: MatOut = [1 2 3;
•
1 2 3]
•
REPN = [3 2]: MatOut = [1 2 3 1 2 3;
•
1 2 3 1 2 3;
•
1 2 3 1 2 3]
• mutbga:对实值种群OldChrom,使用给定的概率,变异每一个变量, 返回变异后的种群NewChrom。 NewChrom=mutbga(OldChrom, FieldDR) NewChrom=mutbga(OldChrom, FieldDR, MutOpt) FieldDR是一个矩阵,包含每个变量的边界。 MutOpt是一个可选向量,具有两个参数的最大值。
X
* e
(s)
表示至第T代每次最好的适应度函数值的平均。
离线指标用于说明算法的收敛性。
二、实例讲解
• 目标分配问题描述为:m个地空导弹火力单元对n 批空袭 目标进行目标分配。每批空袭用一个火力单元实施射击。
• 假设进行目标分配之前,各批目标的威胁程度与各火力单 元对各批目标的射击有利程度已经经过评估和排序。
• (2)进化算子的各态历经性使得遗传算法能够非 常有效的进行概率意义下的全局搜索,而传统的 优化方法是通过邻近点比较而转移到较好的点, 从而达到收敛的局部搜索过程。
• (3)遗传算法对于各种特殊问题可以提供极大的 灵活性来混合构造领域独立的启发式,从而保证 算法的有效性。
遗传算法性能分析指标
• (1)在线性性能评估 在线性能表示为:
• crtbp:创建一元素为随机数的种群矩阵
[Chrom, Lind, BaseV]=crtbp(Nind, Lind)
[Chrom, Lind, BaseV]=crtbp(Nind, BaseV)
[Chrom, Lind, BaseV]=crtbp(Nind, Lind, Base) Chrom:染色体矩阵;Lind:长度;BaseV:基本字符。 • 举例:创建一个长度为4有3个个体的种群 [Chrom, Lind, BaseV]=crtbp(3, 4, BaseV) 得到: Chrom=[0 0 1 0; 1 0 1 1; 0 1 0 1] Lind=4; BaseV=[2 2 2 2];
X e (s) T t1 fe (t)
其中:T 是进化代数; fe (t) 是第t代的平均适应度函数; X e (s) 表示到T代为止所有适应度函数值的平均性能。
在线指标用于说明算法的在线性能。
• (2)离线性性能评估 离线性能表示为:
X
* e
(s)
1 T
T t 1
f *(t) e
其中 f *(t) 是第t代最好的个体的适应度函数值; e
end end 再计算目标值:
eval=chrom*w';
• ranking:基于排序的适应度分配。按照个体的目标值ObjV由小到大的 顺序对它们进行排序,并返回一包含对应个体适应度值FitnV的列向量
FitnV=ranking(ObjV)
FitnV=ranking(ObjV, RFun)
FitnV=ranking(ObjV, RFun, SUBPOP) • 举例:考虑具有10个体的种群,其当前目标值如下:
湖南师范大学计算机专业研究生课程
遗传算法基础及应用实例
湖南师范大学 数学与计算机科学学院
刘刚
一、遗传算法的基本知识
• 遗传算法(Genetic Algorithm)是一类借鉴生物 界的进化规律(适者生存,优胜劣汰遗传机制) 演化而来的随机化搜索方法。
1975 年
遗传算法
ຫໍສະໝຸດ Baidu
美国 J.Holland教授
NewChrom=recombin(REC_F, Chrom, RecOpt)
NewChrom=recombin(REC_F, Chrom, RecOpt, SUBPOP) • 低级重组函数:xovsp——单点交叉。Recdis——离散重组。 • 算法说明:recombin检测输入参数的一致性并调用低级重组函数。如
FitnV=ranking(ObjV, RFun) FitnV=[50 40 30 25 3 5 7 10 14]’ • FitnV表明了每个个体被选择的预期概率。
• select: (高级函数)从种群Chrom中选择个体返回到SelCh中。 SelCh=select(SEL_F, Chrom, FitnV) SelCh=select(SEL_F, Chrom, FitnV, GGAP) SelCh=select(SEL_F, Chrom, FitnV, GGAP, SUBPOP)
ObjV=[1 2 3 4 5 10 9 8 7 6]‘。使用线性排序和压差为2,估算适应度值
FitnV=ranking(ObjV) FitnV =[ 2.00 1.7778 1.5556 1.3333 1.1111 0 0.2222 0.4444 0.6667 0.8889]’ • 举例:使用RFun中的值估算适应度值 RFun=[3 5 7 10 14 18 25 30 40 50]’
• 按概率Pc进行交叉操作;
• 按概率Pm进行突变操作;
• 没有满足某种停止条件,则 转第(2)步,否则进入(7)。
• 输出种群中适应度值最优的 染色体作为问题的满意解或 最优解。
遗传算法的优点
• (1)遗传对所解的优化问题没有太多的数学要求, 遗传算法可以处理任意形式的目标函数和约束, 无论是线性的还是非线性的,离散的还是连续, 甚至混合的搜索空间。
对于设计者而言,应该有一个估计的总收益值,如>6.4。 当计算结果大于估计值时就基本达到了目的,但并不一定 是最优解。
三、函数讲解
• crtbase:创建长度为Lind的向量
BaseV=crtbase(Lind, Base) 如果Lind是向量,BaseV的长度为Lind的总长;如果Base也 是一个长为Lind的向量,则BaseV是一组由Lind和基本字符 Base的元素决定长度的基本字符组组成。当描述染色体结 果的基因为基本字符时,最后一选项是有用的。 • 举例:创建2个基数为6的基本字符{0,1,2,3,4,5}和3 个基数为9的基本字符{0,1,2,3,4,5,6,7,8}的基 本字符向量。 BaseV=crtbase( [2 3], [6 9] ) BaseV=[ 6 6 9 9 9]
%复制矩阵
SelCh=mutbga(SelCh, f);
%变异
SelCh=fix(SelCh);
%fix(2.8)=2.0
ObjVSel=targetalloc(SelCh);
%计算子代目标函数值
[Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入
end
• 经过遗传迭代后,目标分配方案如下:(可能的一种方案)
目标编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 分配结果 1 7 7 1 7 1 1 7 2 7 1 3 8 1 8
• 与此方案对应的总收益为6.4719
• 注:
最大遗传代数为MAXGEN=400,方能比较稳定地得到总 收益值为6.4719。
• targetalloc:计算子代目标函数值并返回。 • ObjV=targetalloc(Chrom);
首先生成初始种群:
chrom=crtbp(NIND, BaseV)+ones(NIND,15); 然后按火力点编号分配pij值: for i=1:m
for j=1:15 chrom(i, j)=p( chrom(i,j), j );
n
max( cij ) j 1
• 染色体采用十进制编码,每个基因表示为火力点 的编号。染色体的长度由按目标批次编号顺序排 列的火力单元分配编号组成,表示一种可能的分 配方案。
• 射击有利程度估计值(对每个定点测量后确定的)
p=[.87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .87 .52 .11 .78 .72 .69 .94 .72 .36 .28 .27 .74 .24 .78 .45; .62 .87 .70 .22 .80 .42 .43 .90 .13 .95 .18 .19 .12 .61 .35; .48 .20 .42 .16 .43 .58 .69 .03 .34 .72 .15 .24 .29 .30 .75];
C —— 个体的编码方法; E —— 个体适应度评价函数; P0 —— 初始群体; M —— 群体大小; Φ —— 选择算子; Γ —— 交叉算子; Ψ —— 变异算子; T —— 遗传运算终止条件。
遗传算法思想
• 初始化群体;
• 计算群体上每个个体的适应 度值;
• 按由个体适应度值所决定的 某个规则选择将进入下一代 的个体;
• 威胁程度评估值
w=[.47 .97 .76 .62 .48 .77 .33 .74 .54 .65 .43 .35 .63 .66 .57];
计算过程
• BaseV=crtbase(15,8);
%创建初始矩阵
Chrom=crtbp(NIND, BaseV)+ones(NIND,15); %初始种群
• 注: 空袭批次可能因机型的不同,袭击方向的不同,袭击方式 的不同,而不同。 火力单元可能因导弹类型的不同,分布方位的不同,预警 时间的不同,而不同。 这些不同,导致了各批目标的威胁程度与各火力单元对各 批目标的射击有利程度的不同。
• 第 j 批目标的威胁程度评估值为wj,第 i 个火力单 元对第 j 批目标射击有利程度估计值为pij,令各火 力单元对各批目标进行拦击的效益值为cij=wj×pij, 其中cij表示对某批目标进行拦击我方获益大小程 度。目标分配的目的是满足目标分配的基本原则, 追求总体效益最佳,即求:
直接对结构对象进行操作,不 存在求导和函数连续性的限定
具有内在的隐并行性和更好 的全局寻优能力;
采用概率化的寻优方法,能 自动获取和指导优化的搜索 空间,自适应地调整搜索方 向,不需要确定的规则。
遗传算法的组成
遗传算法可定义为一个 8 员组: SGA=(C, E, P0, M, Φ, Γ, Ψ, T)
• 举例:chrom=[1 11 21; 2 12 22; 3 13 23; 4 14 24] FitnV=[1.2, 0.3, 0.9, 0.7]‘ SelCh=select('sus',chrom,FitnV) SelCh =[1 11 21; 3 13 23; 3 13 23; 4 14 24]
• 概率最小的被淘汰了——[2 12 22]0.3 • sus:随机遍历抽样。按FitnV的值选择个体。
• recombin:完成种群Chrom中个体的重组,在新种群NewChrom中返回 重组后的个体。Chrom和NewChrom中的一行对应一个个体。
NewChrom=recombin(REC_F, Chrom)
果recombin调用时具有多个种群,则对每个子种群分别调用低级重组 函数。 • 举例:P81
• rep:矩阵复制。
Syntax: MatOut = rep(MatIn, REPN);
• Example:
•
MatIn = [1 2 3]
•
REPN = [1 2]: MatOut = [1 2 3 1 2 3]
ObjV=targetalloc(Chrom);
%计算初始种群函数值
while
FitnV=ranking(-ObjV);
%分配适应度值
SelCh=select('sus',Chrom,FitnV,GGAP); %选择
SelCh=recombin(‘xovsp’,SelCh,0.7);
%重组,交叉
f=rep([1;8],[1,15]);
•
REPN = [2 1]: MatOut = [1 2 3;
•
1 2 3]
•
REPN = [3 2]: MatOut = [1 2 3 1 2 3;
•
1 2 3 1 2 3;
•
1 2 3 1 2 3]
• mutbga:对实值种群OldChrom,使用给定的概率,变异每一个变量, 返回变异后的种群NewChrom。 NewChrom=mutbga(OldChrom, FieldDR) NewChrom=mutbga(OldChrom, FieldDR, MutOpt) FieldDR是一个矩阵,包含每个变量的边界。 MutOpt是一个可选向量,具有两个参数的最大值。
X
* e
(s)
表示至第T代每次最好的适应度函数值的平均。
离线指标用于说明算法的收敛性。
二、实例讲解
• 目标分配问题描述为:m个地空导弹火力单元对n 批空袭 目标进行目标分配。每批空袭用一个火力单元实施射击。
• 假设进行目标分配之前,各批目标的威胁程度与各火力单 元对各批目标的射击有利程度已经经过评估和排序。
• (2)进化算子的各态历经性使得遗传算法能够非 常有效的进行概率意义下的全局搜索,而传统的 优化方法是通过邻近点比较而转移到较好的点, 从而达到收敛的局部搜索过程。
• (3)遗传算法对于各种特殊问题可以提供极大的 灵活性来混合构造领域独立的启发式,从而保证 算法的有效性。
遗传算法性能分析指标
• (1)在线性性能评估 在线性能表示为:
• crtbp:创建一元素为随机数的种群矩阵
[Chrom, Lind, BaseV]=crtbp(Nind, Lind)
[Chrom, Lind, BaseV]=crtbp(Nind, BaseV)
[Chrom, Lind, BaseV]=crtbp(Nind, Lind, Base) Chrom:染色体矩阵;Lind:长度;BaseV:基本字符。 • 举例:创建一个长度为4有3个个体的种群 [Chrom, Lind, BaseV]=crtbp(3, 4, BaseV) 得到: Chrom=[0 0 1 0; 1 0 1 1; 0 1 0 1] Lind=4; BaseV=[2 2 2 2];