当前位置:首页 » 操作系统 » 遗传算法免疫算法

遗传算法免疫算法

发布时间: 2022-05-01 14:12:39

A. 免疫算法的提出

在生命科学领域中,人们已经对遗传(Heredity)与免疫(Immunity)等自然现象进行了广泛深入的研究。六十年代Bagley和Rosenberg等先驱在对这些研究成果进行分析与理解的基础上,借鉴其相关内容和知识,特别是遗传学方面的理论与概念,并将其成功应用于工程科学的某些领域,收到了良好的效果。时至八十年代中期,美国Michigan大学的Hollan教授不仅对以前的学者们提出的遗传概念进行了总结与推广,而且给出了简明清晰的算法描述,并由此形成目前一般意义上的遗传算法(GeneticAlgorithm)GA。由于遗传算法较以往传统的搜索算法具有使用方便、鲁棒性强、便于并行处理等特点,因而广泛应用于组合优化、结构设计、人工智能等领域。另一方面,Farmer和Bersini等人也先后在不同时期、不同程度地涉及到了有关免疫的概念。遗传算法是一种具有生成+检测 (generate and test)的迭代过程的搜索算法。从理论上分析,迭代过程中,在保留上一代最佳个体的前提下,遗传算法是全局收敛的。然而,在对算法的实施过程中不难发现两个主要遗传算子都是在一定发生概率的条件下,随机地、没有指导地迭代搜索,因此它们在为群体中的个体提供了进化机会的同时,也无可避免地产生了退化的可能。在某些情况下,这种退化现象还相当明显。另外,每一个待求的实际问题都会有自身一些基本的、显而易见的特征信息或知识。然而遗传算法的交叉和变异算子却相对固定,在求解问题时,可变的灵活程度较小。这无疑对算法的通用性是有益的,但却忽视了问题的特征信息对求解问题时的辅助作用,特别是在求解一些复杂问题时,这种忽视所带来的损失往往就比较明显了。实践也表明,仅仅使用遗传算法或者以其为代表的进化算法,在模仿人类智能处理事物的能力方面还远远不足,还必须更加深层次地挖掘与利用人类的智能资源。从这一点讲,学习生物智能、开发、进而利用生物智能是进化算法乃至智能计算的一个永恒的话题。所以,研究者力图将生命科学中的免疫概念引入到工程实践领域,借助其中的有关知识与理论并将其与已有的一些智能算法有机地结合起来,以建立新的进化理论与算法,来提高算法的整体性能。基于这一思想,将免疫概念及其理论应用于遗传算法,在保留原算法优良特性的前提下,力图有选择、有目的地利用待求问题中的一些特征信息或知识来抑制其优化过程中出现的退化现象,这种算法称为免疫算法(ImmuneAlgorithm)IA。下面将会给出算法的具体步骤,证明其全局收敛性,提出免疫疫苗的选择策略和免疫算子的构造方法,理论分析和对TSP问题的仿真结果表明免疫算法不仅是有效的而且也是可行的,并较好地解决了遗传算法中的退化问题。

B. 粒子群算法属于什么学科

粒子群算法属于计算智能的范畴,如果按照学科分的话当然是计算机学科。
另外粒子群算法是一种进化计算技术(evolutionary computation),1995 年由Eberhart 博士和kennedy 博士提出,源于对鸟群捕食的行为研究 。
——————————————————————————
另外关于计算智能的相关介绍便可以了解
计算智能的主要方法有人工神经网络、遗传算法、遗传程序、演化程序、局部搜索、模拟退火等等。这些方法具有以下共同的要素:自适应的结构、随机产生的或指定的初始状态、适应度的评测函数、修改结构的操作、系统状态存储器、终止计算的条件、指示结果的方法、控制过程的参数。计算智能的这些方法具有自学习、自组织、自适应的特征和简单、通用、鲁棒性强、适于并行处理的优点。在并行搜索、联想记忆、模式识别、知识自动获取等方面得到了广泛的应用。
典型的代表如遗传算法、免疫算法、模拟退火算法、蚁群算法、微粒群算法(也就是粒子群算法,翻译不同罢了),都是一种仿生算法,基于“从大自然中获取智慧”的理念,通过人们对自然界独特规律的认知,提取出适合获取知识的一套计算工具。总的来说,通过自适应学习的特性,这些算法达到了全局优化的目的。

C. 请问什么是遗传算法,并给两个例子

遗传算法(Genetic Algorithm, GA)是近几年发展起来的一种崭新的全局优化算法,它借
用了生物遗传学的观点,通过自然选择、遗传、变异等作用机制,实现各个个体的适应性
的提高。这一点体现了自然界中"物竞天择、适者生存"进化过程。1962年Holland教授首次
提出了GA算法的思想,从而吸引了大批的研究者,迅速推广到优化、搜索、机器学习等方
面,并奠定了坚实的理论基础。 用遗传算法解决问题时,首先要对待解决问题的模型结构
和参数进行编码,一般用字符串表示,这个过程就将问题符号化、离散化了。也有在连续
空间定义的GA(Genetic Algorithm in Continuous Space, GACS),暂不讨论。

一个串行运算的遗传算法(Seguential Genetic Algoritm, SGA)按如下过程进行:

(1) 对待解决问题进行编码;
(2) 随机初始化群体X(0):=(x1, x2, … xn);
(3) 对当前群体X(t)中每个个体xi计算其适应度F(xi),适应度表示了该个体的性能好
坏;
(4) 应用选择算子产生中间代Xr(t);
(5) 对Xr(t)应用其它的算子,产生新一代群体X(t+1),这些算子的目的在于扩展有限
个体的覆盖面,体现全局搜索的思想;
(6) t:=t+1;如果不满足终止条件继续(3)。
GA中最常用的算子有如下几种:
(1) 选择算子(selection/reproction): 选择算子从群体中按某一概率成对选择个
体,某个体xi被选择的概率Pi与其适应度值成正比。最通常的实现方法是轮盘赌(roulett
e wheel)模型。
(2) 交叉算子(Crossover): 交叉算子将被选中的两个个体的基因链按概率pc进行交叉
,生成两个新的个体,交叉位置是随机的。其中Pc是一个系统参数。
(3) 变异算子(Mutation): 变异算子将新个体的基因链的各位按概率pm进行变异,对
二值基因链(0,1编码)来说即是取反。
上述各种算子的实现是多种多样的,而且许多新的算子正在不断地提出,以改进GA的
某些性能。系统参数(个体数n,基因链长度l,交叉概率Pc,变异概率Pm等)对算法的收敛速度
及结果有很大的影响,应视具体问题选取不同的值。
GA的程序设计应考虑到通用性,而且要有较强的适应新的算子的能力。OOP中的类的继
承为我们提供了这一可能。
定义两个基本结构:基因(ALLELE)和个体(INDIVIDUAL),以个体的集合作为群体类TP
opulation的数据成员,而TSGA类则由群体派生出来,定义GA的基本操作。对任一个应用实
例,可以在TSGA类上派生,并定义新的操作。

TPopulation类包含两个重要过程:
FillFitness: 评价函数,对每个个体进行解码(decode)并计算出其适应度值,具体操
作在用户类中实现。
Statistic: 对当前群体进行统计,如求总适应度sumfitness、平均适应度average、最好
个体fmax、最坏个体fmin等。

TSGA类在TPopulation类的基础上派生,以GA的系统参数为构造函数的参数,它有4个
重要的成员函数:
Select: 选择算子,基本的选择策略采用轮盘赌模型(如图2)。轮盘经任意旋转停止
后指针所指向区域被选中,所以fi值大的被选中的概率就大。
Crossover: 交叉算子,以概率Pc在两基因链上的随机位置交换子串。
Mutation: 变异算子,以概率Pm对基因链上每一个基因进行随机干扰(取反)。
Generate: 产生下代,包括了评价、统计、选择、交叉、变异等全部过程,每运行一
次,产生新的一代。

SGA的结构及类定义如下(用C++编写):
[code] typedef char ALLELE; // 基因类型
typedef struct{
ALLELE *chrom;
float fitness; // fitness of Chromosome
}INDIVIDUAL; // 个体定义

class TPopulation{ // 群体类定义
public:
int size; // Size of population: n
int lchrom; // Length of chromosome: l
float sumfitness, average;

INDIVIDUAL *fmin, *fmax;
INDIVIDUAL *pop;

TPopulation(int popsize, int strlength);
~TPopulation();
inline INDIVIDUAL &Indivial(int i){ return pop[i];};
void FillFitness(); // 评价函数
virtual void Statistics(); // 统计函数
};

class TSGA : public TPopulation{ // TSGA类派生于群体类
public:
float pcross; // Probability of Crossover
float pmutation; // Probability of Mutation
int gen; // Counter of generation

TSGA(int size, int strlength, float pm=0.03, float pc=0.6):
TPopulation(size, strlength)
{gen=0; pcross=pc; pmutation=pm; } ;
virtual INDIVIDUAL& Select();
virtual void Crossover(INDIVIDUAL &parent1, INDIVIDUAL &parent2,
INDIVIDUAL &child1, INDIVIDUAL &child2);
&child1, INDIVIDUAL &child2);
virtual ALLELE Mutation(ALLELE alleleval);
virtual void Generate(); // 产生新的一代
};
用户GA类定义如下:
class TSGAfit : public TSGA{
public:
TSGAfit(int size,float pm=0.0333,float pc=0.6)
:TSGA(size,24,pm,pc){};
void print();
}; [/code]

由于GA是一个概率过程,所以每次迭代的情况是不一样的;系统参数不同,迭代情况
也不同。在实验中参数一般选取如下:个体数n=50-200,变异概率Pm=0.03, 交叉概率Pc=
0.6。变异概率太大,会导致不稳定。

参考文献
● Goldberg D E. Genetic Algorithm in Search, Optimization, and machine

Learning. Addison-Wesley, Reading, MA, 1989
● 陈根社、陈新海,"遗传算法的研究与进展",《信息与控制》,Vol.23,
NO.4, 1994, PP215-222
● Vittorio Maniezzo, "Genetic Evolution of the Topology and Weight Distri
bution of the Neural Networks", IEEE, Trans. on Neural Networks, Vol.5, NO
.1, 1994, PP39-53
● Xiaofeng Qi, Francesco Palmieri, "Theoretical Analysis of Evolutionary
Algorithms with an Infinite Population Size in Continuous Space. Part Ⅰ
l Networks, Vol.5, NO.1, 1994, PP102-119
● Xiaofeng Qi, Francesco Palmieri, "Theoretical Analysis of Evolutionary
Algorithms with an Infinite Population Size in Continuous Space. Part Ⅱ
al Networks, Vol.5, NO.1, 1994, PP102-119
● Gunter Rudolph, Convergence Analysis of Canonical Genetic Algorithms, I
EEE, Trans. on Neural Networks, Vol.5, NO.1, 1994, PP96-101
● A E Eiben, E H L Aarts, K M Van Hee. Gloable convergence of genetic alg
orithms: A Markov chain analysis. in Parallel Problem Solving from Nat
ure. H.-P.Schwefel, R.Manner, Eds. Berlin and Heidelberg: Springer, 1991
, PP4-12
● Wirt Atmar, "Notes on the Simulation of Evolution", IEEE, Trans. on Neu
ral Networks, Vol.5, NO.1, 1994, PP130-147
● Anthony V. Sebald, Jennifer Schlenzig, "Minimax Design of Neural Net Co
ntrollers for Highly Uncertain Plants", IEEE, Trans. on Neural Networks, V
ol.5, NO.1, 1994, PP73-81
● 方建安、邵世煌,"采用遗传算法自学习模型控制规则",《自动化理论、技术与应
用》,中国自动化学会 第九届青年学术年会论文集,1993, PP233-238
● 方建安、邵世煌,"采用遗传算法学习的神经网络控制器",《控制与决策》,199
3,8(3), PP208-212
● 苏素珍、土屋喜一,"使用遗传算法的迷宫学习",《机器人》,Vol.16,NO.5,199
4, PP286-289
● M.Srinivas, L.M.Patnaik, "Adaptive Probabilities of Crossover and Mutat
ion", IEEE Trans. on S.M.C, Vol.24, NO.4, 1994 of Crossover and Mutation",
IEEE Trans. on S.M.C, Vol.24, NO.4, 1994
● Daihee Park, Abraham Kandel, Gideon Langholz, "Genetic-Based New Fuzzy
Reasoning Models with Application to Fuzzy Control", IEEE Trans. S. M. C,
Vol.24, NO.1, PP39-47, 1994
● Alen Varsek, Tanja Urbancic, Bodgan Filipic, "Genetic Algorithms in Con
troller Design and Tuning", IEEE Trans. S. M. C, Vol.23, NO.5, PP1330-13
39, 1993

D. 概率搜索算法有哪些,除了遗传算法和蚁群算法

智能优化算法分为进化算法,群智能算法等
遗传算法属于进化算法,其中还有进化策略,进化规划等
蚁群算法属于群智能优化算法,其中还有微粒群算法,鱼群算法,猴群算法等
免疫算法也属于智能优化算法,基于生物免疫系统机理
模拟退火算法是否属于智能优化算法尚不明确,一般可以认为是
神经网络也是智能优化算法的一种

E. 线性算法是指什么样算法请举几个例子。类似于进化算法就是指遗传算法,人工免疫算法等。

这里说的线性算法应该是从时间复杂度方面来说的,相对于进化算法的话。
即在线性时间或 Ο(n)时间内能求得问题最优解的算法,统称为线性算法。比如说动态规划法、分治法、回溯法、递归法等。
供参考

F. 机械臂控制算法除了遗传算法还有哪些

这个问题现在很火吧,主流优化算法应该都有研究成果:
遗传算法,粒子群算法,模拟退火算法,免疫算法等等都可以

G. 使用遗传算法和免疫算法的优化结果是否有差别

遗传算法是一种智能计算方法,针对不同的实际问题可以设计不同的计算程序。它主要有复制,交叉,变异三部分完成,是仿照生物进化过程来进行计算方法的设计。 模糊数学是研究现实生活中一类模糊现象的数学。简单地说就是像好与坏怎样精确的描述,将好精确化,用数字来表达。 神经网络是一种仿生计算方法,仿照生物体中信息的传递过程来进行数学计算。 这三种知识都是近40年兴起的新兴学科,主要应用在智能模糊控制上面。这三者可以结合起来应用。如用模糊数学些遗传算法的程序,优化神经网络,最后用神经网络控制飞行器或其他物体

H. 免疫遗传算法怎么和其他结合在一起

在使用递归操作的时候,经常会遇到递归条件报错:ORA-01436: 用户数据中的 CONNECT BY 循环。特别是在做一些技巧性操作的时候,比如常见的复制和展开行,字符串拆分。这时候经常会使用层次查询CONNECT BY。但是稍加不慎,就会报递归循环错误,为了避免这种错误,有个技巧,那就是增加prior dbms_random.value is not null。
例1:复制与展开行
比如对1 ID,5 times按5次展开5行。那么这很简单,如下:
SQL> WITH t AS
2 (
3 SELECT 1 ID,5 times FROM al
4 )
5 SELECT ID FROM t
6 CONNECT BY LEVEL<=times;

ID
----------
1
1
1
1
1

I. 免疫算法的介绍

免疫算法是一种具有生成+检测 (generate and test)的迭代过程的搜索算法。从理论上分析,迭代过程中,在保留上一代最佳个体的前提下,遗传算法是全局收敛的。

J. 关于遗传算法的疑惑!请高人指点!非常感谢! 模拟退火遗传算法和免疫遗传算法哪个改进的效果好

这些算法的本质都是随机搜索,带有随机性,对参数依赖程度还是比较强的,所以出现结果时好时坏也是正常的。
至于这些算法的比较,你可以查查相关的论文。特别是首先提出该改进算法的论文,不过要注意,国内的论文的实验结果可信程度还是值得怀疑的。作者往往为了“证明”其算法的优势,只列举那些对算法效果有利的实验结果,不好的结果经常不列出来。所以你看到别人说什么算法好,但你自己用的时候却没发现该算法的优势也是正常的。

热点内容
虚幻4脚本 发布:2024-10-05 16:46:29 浏览:205
c可以用来编译系统软件吗 发布:2024-10-05 16:22:26 浏览:19
U盘和存储器 发布:2024-10-05 16:22:04 浏览:898
cmdc语言 发布:2024-10-05 15:58:32 浏览:553
服务器怎么弄公网ip 发布:2024-10-05 15:57:02 浏览:642
设备配置在什么地方 发布:2024-10-05 15:44:59 浏览:251
matlab外部接口编程 发布:2024-10-05 15:36:58 浏览:366
C事件编程 发布:2024-10-05 15:15:43 浏览:642
一台服务器出现两IP 发布:2024-10-05 15:10:05 浏览:928
md5加密算法c 发布:2024-10-05 15:05:40 浏览:763