基于免疫优化算法的线性规划问题求解(matlab程序)

0.代码链接

基于免疫优化算法的线性规划问题求解(matlab程序)资源-CSDN文库

1.简述  

       免疫算法(Immune Algorithm,IA):是指以在人工免疫系统的理论为基础,实现了类似于生物免疫系统的抗原识别、细胞分化、记忆和自我调节的功能的一类算法。

引用目前百度对其的定义:

682258755db0cd8e7a246ac7f15622be.png

有没有看到这里好奇了的小伙伴?为啥遗传算法和免疫算法扯上了关系?

但其实学完免疫算法你会发现,两者其实非常的相似。

遗传算法的思想简单讲就是父代之间通过交叉互换以及变异产生子代,不断更新适应度更高的子代,从而达到优化的效果。

而免疫算法本质上其实也是更新亲和度(这里对应上面的适应度)的过程,抽取一个抗原(问题),取一个抗体(解)去解决,并计算其亲和度,而后选择样本进行变换操作(免疫处理),借此得到得分更高的解样本,在一次一次的变换过程中逐渐接近最后解。

2.部分代码

%% 算法参数设置
D = 3; %免疫个体维数,变量个数
NP = 100; %免疫个体数目
Xs = 15; %取值上限
Xx = 0; %取值下限
G = 500; %最大免疫代数
pm = 0.7; %变异概率
alfa = 1; %激励度系数
belta = 1; %激励度系数
detas = 0.2; %相似度阈值
gen = 0; %免疫代数
Ncl = 10; %克隆个数
deta0 = 1*Xs; %邻域范围初值
%% %%%%%%%%%%%%%%初始种群%%%%%%%%%%%%%%%%%%
f = rand(D,NP)*(Xs-Xx)+Xx;
for np = 1:NP
    MSLL(np) = func1(f(:,np));
end
%% %%%%%%%%%%%%计算个体浓度和激励度%%%%%%%%%%%%%%
for np = 1:NP
    for j = 1:NP
        nd(j) = sum(sqrt((f(:,np)-f(:,j)).^2));
        if nd(j) < detas
            nd(j) = 1;
        else
            nd(j) = 0;
        end
    end
    ND(np) = sum(nd)/NP;
end
MSLL = alfa*MSLL - belta*ND;
。。。。。。。。

3.运行结果

基于免疫优化算法的线性规划问题求解(matlab程序)_第1张图片

 

 

你可能感兴趣的:(数学建模,matlab,算法)