矩阵元素的查找:
矩阵排序:
导入txt、excel文件
M = importdata('test.txt'); % M 为1*1 struct
S = M.data; % S 为数据
W = xlsread('test.xls')) %读取excel文件
免疫算法
学习资料来源:
【图文】免疫算法_百度文库
https://wenku.baidu.com/view/39eb47ec551810a6f52486ee.html?sxts=1523143415445
《智能优化算法以及matlab实现》包子阳,余继周 编著
三种人工免疫算法综述_图文_百度文库
https://wenku.baidu.com/view/e84991b3f242336c1fb95e27.html
————————————————
转载自 : https://blog.csdn.net/luolang_103/article/details/79843105
免疫算子
(1)亲和度算子:
表征免疫细胞与抗原的结合程度(也就是可行解与待解决问题的结合的程度)。通常函数优化问题可以使用函数的值或者是函数值的倒数作为亲和度评价。aff(x)
(2)抗体浓度的评价算子
抗体浓度的是表征抗体种群的多样性好坏。抗体的浓度过高意味着种群中非常类似的个体大量存在,寻优就会集中与一个可行区间的一个区域,不利于全局寻优。
抗体间亲和度(表征抗体之间的相似程度)的计算:
基于欧式矩离的抗体间亲和度的方法:
基于海明矩离的抗体-抗体亲和度计算方法
海明矩离:就是抗体A与抗体B的属性值相同的时候才为1,否则为0,然后进行累加的操作。总的来说就是描述其内部属性完全相同的个数的多少啊
(3)激励计算算子
抗体激励是对抗体质量的最终评测结果,需要综合考虑抗体亲和度和抗体浓度,通常亲和度大,浓度低的抗体会得到较大的激励度。
(4)免疫选择算子
免疫选择算子根据抗体的激励度确定选择那些抗体进入克隆选择操作。激励度高的抗体个体具有更好的质量,更有可能被选中进行克隆选择操作
克隆算子 、变异算子 、实数编码算大变异算子 、克隆抑制算子 、种群刷新算子
书本的内容:
5.算法的流程:
目前没有同一的免疫算法的流程以及框图,以下是对应以上各种的免疫算子的算法流程
(1)进行抗原识别,也就是理解优化的问题------抗原对应的就是待解决的问题.对问题进行分析,提出先验知识,构造合适的亲和度函数,并制约各种约束条件
(2)产生初始抗体群,通过编码将问题的可行解表示成解空间的抗体,在解空间中随机的产生一个初始的种群(其实说的解空间也就是x的取值,而我们最初的设置初始种群就是在解中找到几个起始的位置)
(3)对种群中每一个可行解进行亲和度评价
(4)判断是否满足终止条件,满足条件终止算法寻优过程,输出计算结果
(5)计算抗体浓度以及激励度
(6)进行免疫处理。
免疫选择:根据种群中抗体的亲和度和浓度计算结果选择优质抗体,使其活化
克隆:对活化的抗体进行克隆复制,得到若干副本
变异:对克隆得到的副本进行变异操作,使其发生亲和度突变
克隆抑制:对变异结果进行再选择,一直亲和度低,保留亲和度高的
(7)种群刷新
以随机生成的新抗体替代种群中激励度低的抗体,形成新一代抗体,转到步骤三
自己的感想:
无论是哪种算法无非就是怎样的选择个体(或许是每一代的个体,或许是一个大的群体)也就是类似于采样了
采样之后就是怎样的去评价这个采样的结果的好坏
然后再循环的采样直到找到评价函数最好的那一个—而所谓的记忆应该就是有些函数在采样的时候会记录每一代中的最优的个体。