青蒿素优化算法(AO)优化BP神经网络原理及MATLAB代码实现

目录

0 引言

1 数学模型

2 优化方式

3 MATLAB代码

3.1 伪代码

3.2 主函数AO代码

3.3 AO-BP的MATLAB代码-

0 引言

青蒿素优化算法(AlgorithmArtemisinin optimization, AO)是学者Yuan等人研究一种新型的元启发式算法,其模拟高剂量青蒿素控制疟疾症状并迅速减少寄生虫数量的过程,通过青蒿素分子结构及其药理作用机制启发的群体智能优化算法,在“攻击-扩散-平衡”机制中实现全局最优解。

1 数学模型

AO的数学模型构建是以青蒿素高剂量全面消除阶段、局部消除阶段和巩固阶段进行模型构建,具体如下:

1)初始化阶段:患者通过口服或注射方式将青蒿素类药物引入体内。受这一现实启发,本文将药物微粒概念化为算法的搜索代理,这些搜索代理的整体集合构成算法的解集。公式1对青蒿素初始化种群“

式中T和B表示解空间的边界,R表示一组随机数序列,其取值范围为[0,1]。

2)全面消除淘汰阶段:在疟疾治疗的初始阶段,患者会接受较大剂量的药物治疗以迅速控制病情发展。青蒿素被吸收后,会随着血液输送至人体各部位而扩散。下式2为模拟药物扩散过程。

        式中中,a_(i,j)^(t+1)和a_(i,j)^t分别表示更新前后的搜索代理,best为当前最优。同时,青蒿素类药物在人体内的扩散遵循药代动力学原理。该策略考虑到药物浓度会随着时间的推移而降低这一事实。式(2)中,c表示药物在人体内浓度的衰减指数。青蒿素药物浓度的衰减可以用单室模型描述,如下所示:

       式中变量C表示药物浓度,k表示速率常数;C(t)表示t时刻的药物浓度。在该模型中,随着时间的推移,药物浓度C(t)呈指数衰减。因此,青蒿素药物浓度的指数c可由式(5)计算

       在该策略中,考虑到患者病情严重程度存在差异以及生理因素各不相同,这导致用药剂量和治疗时长各不相同,患者可能在此相位停留不同时长。为体现这种固有变异性,引入概率系数K表示,如公式(6)所示:

        K作为概率系数,通过整合算法的评估进度来模拟客观场景——患者在此阶段根据个体状况会表现出差异化的反应时长。采用下式最终进行全面消除相位策略:

      式中r1是一个范围为[0,1]的随机数。

2)局部清除阶段:虽然早期治疗通常能迅速缓解症状,但仍有少量疟原虫可能在体内持续存在,特别是在严重感染病例中。在此阶段,患者继续接受较低剂量的青蒿素及其衍生物治疗,以确保完全清除疟原虫,同时最大限度降低人体出现不良反应的风险。故采用下式青蒿素的运动过程进行局部清除阶段策略。

式中,Fit_norm (i)表示归一化的适应度值,将适应度值转化为概率分布,作为个体间的相对权重。d表示系数,取[0.1,0.6]之间的随机值。这一策略模拟了少量青蒿素清除人体内潜在疟疾寄生虫的过程。

3)巩固阶段:患病消除进入后期,患者必须严格遵循治疗方案才有机会彻底治愈疟疾。本部分呈现了巩固治疗后的情况,考虑到意外状况的可能性并模拟这种特殊情境。该策略假设人体内仍存在非活动状态的寄生虫形态。部分患者仍可能遭遇疟疾再次发作。该策略的数学模型由公式(11)表示:

  式中best_(i,j)表示第j维当前最优解的子向量。式(11)表示由于进入休眠阶段而未被消灭的疟原虫。

2 优化方式

前篇对BP神经网络原理讲解,从BP神经网络matlab代码运算过程中,可以看到BP神经网络收权值和阈值控制。因此结合上述AO原理介绍,可以将BP神经网络的权值和阈值向量作为青蒿素颗粒的种群向量位置,每个种群位置对应BP神经网络的预测值,以此进行上述运动描述,加强BP神经网络的泛化能力。

3 MATLAB代码

3.1 伪代码

3.2 主函数AO代码

% 初始化参数
FEs=0;

%% 初始化种群
pop=initialization(N,dim,ub,lb);
%适应度
for i=1:N
    Fitness(i)=SYD(pop(i,:),net);
    net.trainParam.showWindow = false;
    FEs=FEs+1;
end
[fmin,x]=min(Fitness);

New_pop=zeros(N,dim);
Fitnorm=zeros(1,N);
Convergence_curve=[];

%最优解
best=pop(x,:);
bestfitness=fmin;

%% 主循环函数
while FEs<=MaxFEs
    
    K= 1-((FEs)^(1/6)/(MaxFEs)^(1/6));
    E =1*exp(-4*(FEs/MaxFEs));
    %
    for i=1: N
        Fitnorm(i)= (Fitness(i)-min(Fitness))/(max(Fitness)-min(Fitness));
        for j=1:dim
            if rand<K
                if rand<0.5
                    New_pop(i,j) = pop(i,j)+E.*pop(i,j)*(-1)^FEs;
                else
                    New_pop(i,j) = pop(i,j)+E.*best(j)*(-1)^FEs;
                end
            else
                New_pop(i,j)=pop(i,j);
            end
            if rand<Fitnorm(i)
                A=randperm(N);
                beta=(rand/2)+0.1;
                New_pop(i,j)=pop(A(3),j)+beta.*(pop(A(1),j)-pop(A(2),j)); 
            end
        end
        
        New_pop(i,:)=Mutation(New_pop(i,:),pop(i,:),best,dim);
        New_pop(i,:)=Transborder_reset(New_pop(i,:),ub,lb,dim,best);
        
        tFitness=SYD(New_pop(i,:),net);
        net.trainParam.showWindow = false;
        FEs=FEs+1;
        if tFitness<Fitness(i)
            pop(i,:)= New_pop(i,:);
            Fitness(i)=tFitness;
        end
    end
    
    [fmin,x]=min(Fitness);
    if fmin<bestfitness
        best=pop(x,:);
        bestfitness=fmin;
       
    end
    
    Convergence_curve=bestfitness ;
    Leader_pos=best;
end

3.3 AO-BP的MATLAB代码

AO优化BP神经网络的单输出、多输出、时间序列和分类的MATLAB代码如下:

()

MATLAB实现青蒿素优化算法AO算法),首先需要理解算法的核心思想和步骤。青蒿素优化算法模拟药物治疗疟疾的动态过程,通过模拟药物释放和作用机制来寻找问题的最优解。具体实现步骤如下: 参考资源链接:[青蒿素优化算法MATLAB上的实现与应用](https://wenku.csdn.net/doc/1m8yk8f43j?spm=1055.2569.3001.10343) 1. 初始化参数:包括初始化解集、设置算法参数(如迭代次数、药物释放率等)。 2. 药效评估:设计一个适应度函数(或称为目标函数),用于评价每个候选解的质量,即解对于优化问题的优劣程度。 3. 药物更新:根据适应度函数的结果,更新解集。这通常涉及到选择、交叉和变异等操作,以生成新的候选解,并保持种群的多样性。 4. 迭代过程:重复上述评估和更新步骤,直到达到终止条件(如达到最大迭代次数、解的变化小于预设阈值等)。 在MATLAB中,可以利用其强大的数值计算能力和丰富的函数库来简化上述步骤的实现。例如,使用内置的随机函数生成初始解集,使用循环和条件语句来实现迭代过程,以及使用绘图函数来可视化算法的性能和解的演化。 为了帮助你更好地理解和实现AO算法,推荐参考《青蒿素优化算法MATLAB上的实现与应用》这一资源。该资源详细地介绍了AO算法的理论基础和MATLAB代码实现,提供了完整的代码实例以及针对不同应用场景的优化策略。通过学习这些内容,你不仅能够掌握算法实现技术,还能深入了解算法设计背后的原理,从而在实际的工程优化问题中发挥其强大的优势。 参考资源链接:[青蒿素优化算法MATLAB上的实现与应用](https://wenku.csdn.net/doc/1m8yk8f43j?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值