免疫算法 matlab 程序
这是免疫算法。这个算法几乎与遗传算法一样,只是多用了一个免疫函数
免疫算法是遗传算法的变体,它不用杂交,而是采用注入疫苗的方法。疫苗是优
秀染色体中的一段基因,把疫苗接种到其它染色体中。
注意:标准遗传算法的一个重要概念是,染色体是可能解的 2 进制顺序号,
由这个序号在可能解的集合(解空间)中找到可能解。
这是免疫算法的主程序,它需要调用的函数如下。
接种疫苗函数:
%function
inoculateChromosome=immunity(chromosomeGroup,bacterinChromosome,parame
ter)
%parameter:1,随机制取染色体接种。2,每个染色体都接种。3,每个染色体都接
种,但接种的位置是随机的
%这个函数实现对染色体的疫苗接种
%由染色体(可能解的 2 进制)顺序号找到可能解:
%x=chromosome_x(fatherChromosomeGroup,oneDimensionSet,solutionSum);
%把解代入非线性方程组计算误差函数:functionError=nonLinearSumError1(x);
判定程是否得解函数:[solution,isTrue]=isSolution(x,funtionError,solutionSumError);
%选择最优染色体函数:
%[bestChromosome,leastFunctionError]=best_worstChromosome(fatherChromoso
meGroup,functionError);
%误差比较函数:从两个染色体中,选出误差较小的染色体
%[holdBestChromosome,holdLeastFunctionError]...
% =compareBestChromosome(holdBestChromosome,holdLeastFunctionError,...
% bestChromosome,leastFuntionError)
%为染色体定义概率函数,好的染色体概率高,坏染色体概率低
%p=chromosomeProbability(functionError);
%按概率选择染色体函数:
%slecteChromosomeGroup=selecteChromome(fatherChromosomeGroup,p);
%父代染色体杂交产生子代染色体函数
%sonChrmosomeGroup=crossChromosome(slecteChromosomeGroup,2);
%防止染色体超出解空间的函数
%chromosomeGroup=checkSequence(chromosomeGroup,solutionSum)
%变异函数
%fatherChromosomeGroup=varianceCh(sonChromosomeGroup,0.8,solutionN);
%通过实验有如下结果: