【优化调度】粒子群算法求解水火电调度优化问题【含Matlab源码 1181期】

news2024/9/20 6:27:48

⛄一、粒子群算法简介

1 引言
自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在。生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都遵循:避免与邻域个体相撞:匹配邻域个体的速度;飞向鸟群中心,且整个群体飞向目标。仿真中仅利用上面三条简单的规则,就可以非常接近地模拟出鸟群飞行的现象。1990年, 生物学家Frank Heppner也提出了鸟类模型, 它的不同之处在于:鸟类被吸引飞到栖息地。在仿真中,一开始每一只鸟都没有特定的飞行目标,只是使用简单的规则确定自己的飞行方向和飞行速度,当有一只鸟飞到栖息地时,它周围的鸟也会跟着飞向栖息地,最终整个鸟群都会落在栖息地。
1995年, 美国社会心理学家James Kennedy和电气工程师RussellEberhart共同提出了粒子群算法(ParticleS warm Optimization, PSO) , 该算法的提出是受对鸟类群体行为进行建模与仿真的研究结果的启发。他们的模型和仿真算法主要对Frank Heppner的模型进行了修正,以使粒子飞向解空间并在最优解处降落。粒子群算法一经提出,由于其算法简单,容易实现,立刻引起了进化计算领域学者们的广泛关注, 形成一个研究热点。2001年出版的J.Kennedy与R.Eberhart合著的《群体智能》将群体智能的影响进一步扩大[] , 随后关于粒子群优化算法的研究报告和研究成果大量涌现,继而掀起了国内外研究热潮[2-7]。
粒子群优化算法来源于鸟类群体活动的规律性,进而利用群体智能建立一个简化的模型。它模拟鸟类的觅食行为,将求解问题的搜索空间比作鸟类的飞行空间,将每只鸟抽象成一个没有质量和体积的粒
子,用它来表征问题的一个可能解,将寻找问题最优解的过程看成鸟类寻找食物的过程,进而求解复杂的优化问题。粒子群优化算法与其他进化算法一样,也是基于“种群”和“进化”的概念,通过个体间
的协作与竞争,实现复杂空间最优解的搜索。同时,它又不像其他进化算法那样对个体进行交叉、变异、选择等进化算子操作,而是将群体中的个体看作在l维搜索空间中没有质量和体积的粒子,每个粒子以一定的速度在解空间运动, 并向自身历史最佳位置P best和邻域历史最佳位置g best聚集, 实现对候选解的进化。粒子群算法具有很好的生物社会背景而易于理解,由于参数少而容易实现,对非线性、多峰问题均具有较强的全局搜索能力,在科学研究与工程实践中得到了广泛关注。目前,该算法已广泛应用于函数优化、神经网络训练、模式分类、模糊控制等领域。

2 粒子群算法理论
2.1粒子群算法描述
鸟类在捕食过程中,鸟群成员可以通过个体之间的信息交流与共享获得其他成员的发现与飞行经历。在食物源零星分布并且不可预测的条件下,这种协作机制所带来的优势是决定性的,远远大于对食物
的竞争所引起的劣势。粒子群算法受鸟类捕食行为的启发并对这种行为进行模仿,将优化问题的搜索空间类比于鸟类的飞行空间,将每只鸟抽象为一个粒子,粒子无质量、无体积,用以表征问题的一个可行解,优化问题所要搜索到的最优解则等同于鸟类寻找的食物源。粒子群算法为每个粒子制定了与鸟类运动类似的简单行为规则,使整个粒子群的运动表现出与鸟类捕食相似的特性,从而可以求解复杂的优化问题。
粒子群算法的信息共享机制可以解释为一种共生合作的行为,即每个粒子都在不停地进行搜索,并且其搜索行为在不同程度上受到群体中其他个体的影响[8],同时这些粒子还具备对所经历最佳位置的记
忆能力,即其搜索行为在受其他个体影响的同时还受到自身经验的引导。基于独特的搜索机制,粒子群算法首先生成初始种群,即在可行解空间和速度空间随机初始化粒子的速度与位置,其中粒子的位置用于表征问题的可行解,然后通过种群间粒子个体的合作与竞争来求解优化问题。
2.2粒子群算法建模
粒子群优化算法源自对鸟群捕食行为的研究:一群鸟在区域中随机搜索食物,所有鸟知道自己当前位置离食物多远,那么搜索的最简单有效的策略就是搜寻目前离食物最近的鸟的周围区域。粒子群算法
利用这种模型得到启示并应用于解决优化问题。在粒子群算法中,每个优化问题的潜在解都是搜索空间中的一只鸟,称之为粒子。所有的粒子都有一个由被优化的函数决定的适应度值,每个粒子还有一个速度决定它们飞翔的方向和距离。然后,粒子们就追随当前的最优粒子在解空间中搜索[9]。

粒子群算法首先在给定的解空间中随机初始化粒子群,待优化问题的变量数决定了解空间的维数。每个粒子有了初始位置与初始速度,然后通过迭代寻优。在每一次迭代中,每个粒子通过跟踪两个“极值”来更新自己在解空间中的空间位置与飞行速度:一个极值就是单个粒子本身在迭代过程中找到的最优解粒子,这个粒子叫作个体极值:另一个极值是种群所有粒子在迭代过程中所找到的最优解粒子,这个粒子是全局极值。上述的方法叫作全局粒子群算法。如果不用种群所有粒子而只用其中一部分作为该粒子的邻居粒子,那么在所有邻居粒子中的极值就是局部极值,该方法称为局部粒子群算法。

2.3粒子群算法的特点
粒子群算法本质是一种随机搜索算法,它是一种新兴的智能优化技术。该算法能以较大概率收敛于全局最优解。实践证明,它适合在动态、多目标优化环境中寻优,与传统优化算法相比,具有较快的计
算速度和更好的全局搜索能力。
(1)粒子群算法是基于群智能理论的优化算法,通过群体中粒子间的合作与竞争产生的群体智能指导优化搜索。与其他算法相比,粒子群算法是一种高效的并行搜索算法。
(2)粒子群算法与遗传算法都是随机初始化种群,使用适应值来评价个体的优劣程度和进行一定的随机搜索。但粒子群算法根据自己的速度来决定搜索,没有遗传算法的交叉与变异。与进化算法相比,粒子群算法保留了基于种群的全局搜索策略,但是其采用的速度-位移模型操作简单,避免了复杂的遗传操作。
(3)由于每个粒子在算法结束时仍保持其个体极值,即粒子群算法除了可以找到问题的最优解外,还会得到若干较好的次优解,因此将粒子群算法用于调度和决策问题可以给出多种有意义的方案。
(4)粒子群算法特有的记忆使其可以动态地跟踪当前搜索情况并调整其搜索策略。另外,粒子群算法对种群的大小不敏感,即使种群数目下降时,性能下降也不是很大。

3 粒子群算法种类
3.1基本粒子群算法
在这里插入图片描述
3.2标准粒子群算法
引入研究粒子群算法经常用到的两个概念:一是“探索”,指粒子在一定程度上离开原先的搜索轨迹,向新的方向进行搜索,体现了一种向未知区域开拓的能力,类似于全局搜索;二是“开发”,指粒子在一定程度上继续在原先的搜索轨迹上进行更细一步的搜索,主要指对探索过程中所搜索到的区域进行更进一步的搜索。探索是偏离原来的寻优轨迹去寻找一个更好的解,探索能力是一个算法的全局搜索能力。开发是利用一个好的解,继续原来的寻优轨迹去搜索更好的解,它是算法的局部搜索能力。如何确定局部搜索能力和全局搜索能力的比例, 对一个问题的求解过程很重要。1998年, Shi Yuhui等人提出了带有惯性权重的改进粒子群算法[10],由于该算法能够保证较好的收敛效果,所以被默认为标准粒子群算法。其进化过程为:
在这里插入图片描述
在式(6.7)中,第一部分表示粒子先前的速度,用于保证算法的全局收敛性能;第二部分、第三部分则使算法具有局部收敛能力。可以看出,式(6.7)中惯性权重w表示在多大程度上保留原来的速度:W
较大,则全局收敛能力较强,局部收敛能力较弱;w较小,则局部收敛能力较强,全局收敛能力较弱。
当w=1时,式(6.7)与式(6.5)完全一样,表明带惯性权重的粒子群算法是基本粒子群算法的扩展。实验结果表明:w在0.8~1.2之间时,粒子群算法有更快的收敛速度;而当w>1.2时,算法则容易陷入局部极值。
另外,在搜索过程中可以对w进行动态调整:在算法开始时,可给w赋予较大正值,随着搜索的进行,可以线性地使w逐渐减小,这样可以保证在算法开始时,各粒子能够以较大的速度步长在全局范围内探
测到较好的区域;而在搜索后期,较小的w值则保证粒子能够在极值点周围做精细的搜索,从而使算法有较大的概率向全局最优解位置收敛。对w进行调整,可以权衡全局搜索和局部搜索能力。目前,采用较多的动态惯性权重值是Shi提出的线性递减权值策略, 其表达式如下:
在这里插入图片描述
3.3压缩因子粒子群算法
Clerc等人提出利用约束因子来控制系统行为的最终收敛[11] , 该方法可以有效搜索不同的区域,并且能得到高质量的解。压缩因子法的速度更新公式为:
在这里插入图片描述
实验结果表明:与使用惯性权重的粒子群优化算法相比,使用具
有约束因子的粒子群算法具有更快的收敛速度。
3.4离散粒子群算法
基本的粒子群算法是在连续域中搜索函数极值的有力工具。继基本粒子群算法之后, Kennedy和Eberhart又提出了一种离散二进制版的粒子群算法[12]。在此离散粒子群方法中,将离散问题空间映射到连续粒子运动空间,并适当修改粒子群算法来求解,在计算上仍保留经典粒子群算法速度-位置更新运算规则。粒子在状态空间的取值和变化只限于0和1两个值, 而速度的每一维vi y代表位置每一位xi取值为1的可能性。因此, 在连续粒子群中的vij更新公式依然保持不变, 但是P best和:best只在[0, 1] 内取值。其位置更新等式表示如下:
在这里插入图片描述
4 粒子群算法流程
粒子群算法基于“种群”和“进化”的概念,通过个体间的协作与竞争,实现复杂空间最优解的搜索[13],其流程如下:
(1)初始化粒子群,包括群体规模N,每个粒子的位置x;和速度Vio
(2) 计算每个粒子的适应度值fit[i] 。
(3) 对每个粒子, 用它的适应度值fit[门和个体极值P best(i)比较。如果fit[i] <P best(i) , 则用fit[i] 替换掉P best(i) 。
(4) 对每个粒子, 用它的适应度值fit[i] 和全局极值g best比较。如果fit[i] < 8 best, 则用fit[i] 替换g best。
(5)迭代更新粒子的速度v;和位置xj。
(6)进行边界条件处理。
(7)判断算法终止条件是否满足:若是,则结束算法并输出优化结果;否则返回步骤(2)。
粒子群算法的运算流程如图6.1所示。
在这里插入图片描述
5 关键参数说明
在粒子群优化算法中,控制参数的选择能够影响算法的性能和效率;如何选择合适的控制参数使算法性能最佳,是一个复杂的优化问题。在实际的优化问题中,通常根据使用者的经验来选取控制参数。
粒子群算法的控制参数主要包括:粒子种群规模N,惯性权重w,加速系数c和c, 最大速度Via x, 停止准则, 邻域结构的设定, 边界条件处理策略等[14],
粒子种群规模N
粒子种群大小的选择视具体问题而定,但是一般设置粒子数为20~50。对于大部分的问题10个粒子,已经可以取得很好的结果:不过对于比较难的问题或者特定类型的问题,粒子的数量可以取到100或
200。另外,粒子数目越大,算法搜索的空间范围就越大,也就更容易发现全局最优解;当然,算法运行的时间也越长。
惯性权重w
惯性权重w是标准粒子群算法中非常重要的控制参数,可以用来控制算法的开发和探索能力。惯性权重的大小表示了对粒子当前速度继承的多少。当惯性权重值较大时,全局寻优能力较强,局部寻优能力
较弱:当惯性权重值较小时,全局寻优能力较弱,局部寻优能力较强。惯性权重的选择通常有固定权重和时变权重。固定权重就是选择常数作为惯性权重值,在进化过程中其值保持不变,一般取值为
[0.8,1.2]:时变权重则是设定某一变化区间,在进化过程中按照某种方式逐步减小惯性权重。时变权重的选择包括变化范围和递减率。固定的惯性权重可以使粒子保持相同的探索和开发能力,而时变权重可以使粒子在进化的不同阶段拥有不同的探索和开发能力。
加速常数c1和c2
加速常数c和c 2分别调节向P best和g best方向飞行的最大步长, 它们分别决定粒子个体经验和群体经验对粒子运行轨迹的影响,反映粒子群之间的信息交流。如果cr=c2=0,则粒子将以当前的飞行速度飞到边界。此时,粒子仅能搜索有限的区域,所以难以找到最优解。如果q=0,则为“社会”模型,粒子缺乏认知能力,而只有群体经验,它的收敛速度较快,但容易陷入局部最优;如果oy=0,则为“认知”模
型,没有社会的共享信息,个体之间没有信息的交互,所以找到最优解的概率较小,一个规模为D的群体等价于运行了N个各行其是的粒子。因此一般设置c1=C2,通常可以取c1=cg=1.5。这样,个体经验和群体经验就有了同样重要的影响力,使得最后的最优解更精确。
粒子的最大速度vmax
粒子的速度在空间中的每一维上都有一个最大速度限制值vd max,用来对粒子的速度进行钳制, 使速度控制在范围[-Vimax, +va max] 内,这决定问题空间搜索的力度, 该值一般由用户自己设定。Vmax是一个非常重要的参数,如果该值太大,则粒子们也许会飞过优秀区域:而如果该值太小,则粒子们可能无法对局部最优区域以外的区域进行充分的探测。它们可能会陷入局部最优,而无法移动足够远的距离而跳出局部最优, 达到空间中更佳的位置。研究者指出, 设定Vmax和调整惯性权重的作用是等效的, 所以!max一般用于对种群的初始化进行设定, 即将vmax设定为每维变量的变化范围, 而不再对最大速度进行细致的选择和调节。
停止准则
最大迭代次数、计算精度或最优解的最大停滞步数▲t(或可以接受的满意解)通常认为是停止准则,即算法的终止条件。根据具体的优化问题,停止准则的设定需同时兼顾算法的求解时间、优化质量和
搜索效率等多方面性能。
邻域结构的设定
全局版本的粒子群算法将整个群体作为粒子的邻域,具有收敛速度快的优点,但有时算法会陷入局部最优。局部版本的粒子群算法将位置相近的个体作为粒子的邻域,收敛速度较慢,不易陷入局部最优
值。实际应用中,可先采用全局粒子群算法寻找最优解的方向,即得到大致的结果,然后采用局部粒子群算法在最优点附近进行精细搜索。
边界条件处理
当某一维或若干维的位置或速度超过设定值时,采用边界条件处理策略可将粒子的位置限制在可行搜索空间内,这样能避免种群的膨胀与发散,也能避免粒子大范围地盲目搜索,从而提高了搜索效率。
具体的方法有很多种, 比如通过设置最大位置限制Xmax和最大速度限制Vmax, 当超过最大位置或最大速度时, 在范围内随机产生一个数值代替,或者将其设置为最大值,即边界吸收。

⛄二、部分源代码

clear all
clc

%opt计算相关量
M=20;%粒子个数
I=4;%水电站个数
T=24;%时间
K=400;%迭代次数
lamda=100;%罚函数惩罚因子
error=0.01;%误差精度
wini=0.9;wend=0.4;c1=2;c2=2;%粒子群算法惯性因子和学习因子
x=zeros(I,T,M);%粒子位置
v=zeros(I,T,M);%粒子速度
vmax=zeros(I,1);%粒子最大速度
alpha=60;beta=-1.355;gama=0.0105;yeta=0.4968;deta=0.01925;%目标函数e的系数
e=zeros(M,1);%粒子适应值
pbest=zeros(I,T,M);%个体最好位置
epbest=zeros(M,1);%个体最好适应值
gbest=ones(1,1);%全局最好序号
as=5000;bs=19.2;cs=0.002;%煤耗成本系数
f=0;%煤耗成本

%负载相关量
Pd=[1370 1390 1360 1290 1290 1410 1650 2000 2240 2320 2230 2310 2230 2200 2130 2070 2130 2140 2240 2280 2240 2120 1850 1590];%24小时的负载功率

%火电站相关量
Ps=zeros(1,T);%火电输出功率
Psmax=2500;%火电输出最大功率
Psmin=500;%火电输出最小功率
Psbest=zeros(1,T);%火电输出功率最优解

%水电站相关量
Vh=zeros(I,T);%水电站库容量
Vhmax=[150 120 240 160];%水电站库容量最大值
Vhmin=[80 60 100 70];%水电站库容量最小值
Vhini=[100 80 170 120];%水电站库容量初始值
Vhend=[120 70 170 140];%水电站库容量最终值
Vhx=ones(I,1);%调整发电流量Qh时,水电站库容量计算值与最终值的差值
Vhbest=zeros(I,T);%水电站库容量最优解
Qh=zeros(I,T);%发电流量
Qhmax=[15 15 30 25];%发电流量最大值
Qhmin=[5 6 10 13];%发电流量最小值
Qhbest=zeros(I,T);%发电流量最优解
Ph=zeros(I,T);%水电输出功率
Phsum=zeros(1,T);%水电输出功率之和
Phmax=500;%水电输出功率最大值
Phmin=0;%水电输出功率最小值
Phbest=zeros(I,T);%水电输出功率最优解
Phsumbest=zeros(1,T);%水电输出功率最优解之和
Ih=[10   9   8   7   6   7   8   9   10  11  12  10  11  12  11  10   9   8   7   6   7   8   9   10;
     8   8   9   9   8   7   6   7    8   9   9   8   8   9   9   8   7   6   7   8   9   9   8    8;
    8.1 8.2  4   2   3   4   3   2    1   1   1   2   4   3   3   2   2   2   1   1   2   2   1    0;
    2.8 2.4 1.6  0   0   0   0   0    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0];%水电站径流量
c=[-0.0042 -0.42 0.030 0.90 10.0 -50;
     -0.0040 -0.30 0.015 1.14 9.5 -70;
     -0.0016 -0.30 0.014 0.55 5.5 -40;
     -0.0030 -0.31 0.027 1.44 14.0 -90];%水电站输出功率系数
tao=[2 3 4 0];%水流时滞系数

%/**********************初始化**********************/%
for m=1:M
    %初始化Qh
    for i=1:I
        for t=1:T
            Qh(i,t)=Qhmin(i)+rand()*(Qhmax(i)-Qhmin(i));
        end
    end
    [Qh,Ps,Vh,Ph]=adjust(Qh);
    %初始化x,v,vmax
    for i=1:I
        x(i,1:T,m)=Qh(i,1:T);
        vmax(i,1)=(Qhmax(i)-Qhmin(i))/5;
    end
    for i=1:I
        for t=1:T
            v(i,t,m)=rand()*vmax(i,1);
            if rand()<0.5
                v(i,t,m)=-1*v(i,t,m);
            end
        end
    end
    [e(m,1)]=aime(Ps,Vh,Ph);
end
%初始化个体最好
pbest=x;
%初始化个体最好适应值
epbest=e;
%min (x-3)^2 
%s.t. 1<x<4.
clear all
clc
x=zeros(20,1);%粒子位置
v=zeros(20,1);%粒子速度
vmax=(4-1)./5;%最大速度
fx=zeros(20,1);%粒子适应值
pbest=zeros(20,1);%个体最好位置
fpbest=zeros(20,1);%个体最好适应值
gbest=ones(1,1);%全局最好序号
w=0.9;%惯性权重
c1=2.0;%学习因子
c2=2.0;
gmax=200;%最大迭代次数

%初始化
for i=1:20
    x(i,1)=1+rand().*(4-1);%初始化粒子位置
    tmp = rand().*vmax;%初始化速度
    v(i,1)=tmp;
    if rand()<0.5
        v(i,1)=-1.*tmp;
    end
    fx(i)=(x(i,1)-3)^2;%每个个体目标函数值
    pbest(i,1)=x(i,1);%初始化个体最好
    fpbest(i,1)=fx(i);%初始化个体最好适应值
end
t=1;
while t<gmax
    w=0.9-0.5.*t/gmax;%更新惯性权重
    for i=1:20
        v(i,1)=w.*v(i,1)+c1.*rand().*(pbest(i,1)-x(i,1))+c2.*rand().*(pbest(gbest,1)-x(i,1));%速度更新
        if v(i,1)>vmax%速度越界判断
            v(i,1)=vmax;
        end
        if v(i,1)<-1.*vmax
            v(i,1)=-1*vmax;
        end
        x(i,1)=x(i,1)+v(i,1);%位置更新
        if x(i,1)>4%限幅
            x(i,1)=4;
        end
        if x(i,1)<1
            x(i,1)=1;
        end
function [Qhbest,Phbest,Vhbest,Psbest,Phsumbest]=best(x,gbest)
%opt计算相关量
I=4;%水电站个数
T=24;%时间

%负载相关量
Pd=[750 780 700 650 670 800 950 1010 1090 1080 1100 1150 1110 1030 1010 1060 1050 1120 1070 1050 910 860 850 800];%24小时的负载功率

%火电站相关量
Psbest=zeros(3,T);%火电输出功率最优解
Psum=zeros(1,T);
Psmax=[175 300 500];%火电输出最大功率
Psmin=[20 40 50];%火电输出最小功率
Pssumbest=zeros(1,T);
%水电站相关量
Vhini=[100 80 170 120];%水电站库容量初始值
Vhbest=zeros(I,T);%水电站库容量最优解
Qhbest=zeros(I,T);%发电流量最优解
Phmin=0;%水电输出功率最小值
Phbest=zeros(I,T);%水电输出功率最优解
Phsumbest=zeros(1,T);%水电输出功率最优解之和
Ih=[10   9   8   7   6   7   8   9   10  11  12  10  11  12  11  10   9   8   7   6   7   8   9   10;
     8   8   9   9   8   7   6   7    8   9   9   8   8   9   9   8   7   6   7   8   9   9   8    8;
    8.1 8.2  4   2   3   4   3   2    1   1   1   2   4   3   3   2   2   2   1   1   2   2   1    0;
    2.8 2.4 1.6  0   0   0   0   0    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0    0];%水电站径流量
c=[-0.0042 -0.42 0.030 0.90 10.0 -50;
     -0.0040 -0.30 0.015 1.14 9.5 -70;
     -0.0016 -0.30 0.014 0.55 5.5 -40;
     -0.0030 -0.31 0.027 1.44 14.0 -90];%水电站输出功率系数
tao=[2 3 4 0];%水流时滞系数
%计算Qh最优解
for i=1:I
    Qhbest(i,1:T)=x(i,1:T,gbest);
end
%计算Vh最优解
for i=1:I
    for t=1:T
        if t==1
            Vhbest(i,t)=Vhini(i)+Ih(i,t)-Qhbest(i,t);
        else
            Vhbest(i,t)=Vhbest(i,t-1)+Ih(i,t)-Qhbest(i,t);
        end
        if i==3 
            if t>tao(1)
                Vhbest(i,t)=Vhbest(i,t)+Qhbest(1,t-tao(1));
            end
            if t>tao(2)
                Vhbest(i,t)=Vhbest(i,t)+Qhbest(2,t-tao(2));
            end
        end
        if i==4
            if t>tao(3)
                Vhbest(i,t)=Vhbest(i,t)+Qhbest(3,t-tao(3));
            end
        end
    end
end
%计算Ph最优解
 for i=1:I
        for t=1:T
            Phbest(i,t)=c(i,1)*Vhbest(i,t)*Vhbest(i,t)+c(i,2)*Qhbest(i,t)*Qhbest(i,t)+c(i,3)*Vhbest(i,t)*Qhbest(i,t)+c(i,4)*Vhbest(i,t)+c(i,5)*Qhbest(i,t)+c(i,6);
            if Phbest(i,t)<Phmin
                Phbest(i,t)=Phmin;
            end
            if Phbest(i,t)<0
                Phbest(i,t)=100;
            end    
        end
 end
 %检验功率平衡
for t=1:T
    for i=1:I
        Phsumbest(1,t)=Phsumbest(1,t)+Phbest(i,t);
    end
end
%计算Ps
 for t=1:T 
         for i=1:2
            Ps(t)=Pd(t)-Phsumbest(t); 
            Psbest(i,t)=Psmin(i)+rand()*(Psmax(i)-Psmin(i));
            Psum(1,t)=Psum(1,t)+Psbest(i,t);
         end
         Psbest(3,t)=Ps(t)-Psum(1,t);  
         if Psbest<0
             Psbest(3,t)=0;
         end
            if Psbest(3,t)<Psmin(3)
                 Psbest(3,t)=0;
                 Psbest(1,t)=Psbest(1,t)+ Psbest(3,t)./2;
                 Psbest(2,t)=Psbest(2,t)+ Psbest(3,t)./2;
             end
    end
      %检验功率平衡
for t=1:T
    for i=1:3
        Pssumbest(1,t)=Pssumbest(1,t)+Psbest(i,t);
    end
end
    

## ⛄三、运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/cf29cbd8f13e4880956e83ed3c5263fb.JPG?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4d19468d81444ebe8a6d32daf3410fdd.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/565abfae48754bc8979431286bc6f896.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)

## ⛄四、matlab版本及参考文献
**1 matlab版本**
2014a

**2 参考文献**
[1] 包子阳,余继周,杨杉.智能优化算法及其MATLAB实例(第2版)[M].电子工业出版社,2016.
[2]张岩,吴水根.MATLAB优化算法源代码[M].清华大学出版社,2017.

**3 备注**
简介此部分摘自互联网,仅供参考,若侵权,联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30902.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java面向对象之——封装

文章目录前言一、封装的概念二、何为封装&#xff1f;三、封装拓展——包&#x1f351;1、包的概念&#x1f351;2、导入包中的类&#x1f351;3、自定义包&#x1f351;4、常见的包四、访问限定符&#x1f351;1、public修饰符&#x1f351;2、private修饰符&#x1f351;3、默…

软件产品确认测试包括哪些方面

1.技术方面 确认测试又称有效性测试&#xff0c;是在模拟的环境下&#xff0c;运用黑盒测试的方法&#xff0c;验证被测软件是否满足需求规格说明书列出的需求。 确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后&#xff0c;已经按照设计把所有的模…

Docker 下 jitsi-meet 视频服务器 安装部署

一、参考网站 官网文档地址&#xff1a;Self-Hosting Guide - Docker | Jitsi Meet 二、Docker 版本 三、安装部署 3.1、下载并解压缩安装包 地址&#xff1a;Release stable-8044: release jitsi/docker-jitsi-meet GitHub CSDN地址&#xff1a;docker-jitsi-meet-stab…

visdom安装及使用

目录1. 安装visdom的流程2. 使用流程1. 安装visdom的流程 重点参考链接&#xff1a;visdom安装出现Downloading scripts, this may take a little while然后就不动了 先去到github直接下载了visdom的压缩包&#xff1a;https://github.com/fossasia/visdom然后将visdom-maste…

第七章 数学 6 AcWing 1593. 整数分解

第七章 数学 6 AcWing 1593. 整数分解 原题链接 AcWing 1593. 整数分解 算法标签 数学 数论 DP 背包问题 思路 类似AcWing 12. 背包问题求具体方案 把n看成背包的容积N 因为n最多不超过400&#xff0c;然而p进制最少为2 所以物品的价值最大可以取到20(因为20^2 400) 所以…

Python读取CSV文件,数值精度丢失

Excel保存为csv以后&#xff0c;大数值的列&#xff0c;会把转换为科学计数法&#xff0c;而且后边几位都会被转为0. 搞了很多方法,最后直接安装 openpyxl 组件 和 pandas&#xff0c; 读取Excel文件就行了。 data pd.read_excel("C:/work/20221111AI/cleaned_data_noTi…

第二章 计算机算术

数据表示决定了计算机所执行操作的类型&#xff0c;数据从一个位置传到另一个位置的方法&#xff0c; 以及对存储元件的特性要求。浮点运算是非常重要的&#xff0c;因为它的实现决定了计算机执行复杂图形变换和图像处理的速度&#xff0c; 而且浮点运算对计算的准确度也有很重…

高通平台开发系列讲解(mm-camera篇)MM-CAMERA框架

文章目录 一、Camera软件位置1.1、开源代码1.2、专有源码二、摄像头前端(Camera Frontend)2.1、整体框架2.2、 Camera HAL与mm-camera交互沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍高通平台mm-camera代码框架。 一、Camera软件位置 QTI 针对 An…

Flink 状态编程

状态编程有状态算子状态的管理状态的分类按键分区状态&#xff08;Keyed State&#xff09;支持的结构类型代码实现状态生存时间&#xff08;TTL&#xff09;算子状态&#xff08;Operator State&#xff09;基本概念和特点状态类型代码实现广播状态&#xff08;Broadcast Stat…

DFP 数据转发协议应用实例 .与其它厂商 LoRA 设备匹配

DFP 数据转发协议应用实例 5.与其它厂商 LoRA 设备匹配 DFP 是什么&#xff1f; 稳控科技编写的一套数据转发规则&#xff0c; 取自“自由转发协议 FFP&#xff08;Free Forward Protocol&#xff09;” &#xff0c;或者 DFP&#xff08;DoubleF Protocol&#xff09;&#xf…

【优化求解】粒子群算法求解仓库成本控制优化问题【含Matlab源码 1577期】

⛄一、粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在。生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型&#xff0c;在他的仿真中&#xff0c;每一个个体都遵循&#xff1a;避免与邻域个体相撞&#xff1a;匹配邻域个体…

基于JAVA的网上图书商城参考【数据库设计、源码、开题报告】

数据库脚本下载地址&#xff1a; https://download.csdn.net/download/itrjxxs_com/86427643 主要使用技术 Struts2HibernateJSPCSSJSMysql 功能介绍 系统有五类用户&#xff0c;分别是&#xff1a;会员用户&#xff0c;商品管理员&#xff0c;订单管理员&#xff0c;会员管…

【MSSQL】SQL SERVER导入中文乱码问题解决

公司最近承接了一个项目&#xff0c;甲方现使用旧版SiteServer框架&#xff08;以下简称“SiteCMS”&#xff09;作为门户网站&#xff0c;使用的数据源是SQL Server。 现在需要对SiteCMS进行升级&#xff0c;在升级时数据库和数据库结构也需要同时更新&#xff0c;其中数据库…

硬件顶配、数字先行,路特斯重塑「智能座舱」

诚然&#xff0c;在车联网的高度普及、5G技术的铺开以及汽车产业融合的大势下&#xff0c;传统单一驾驶与乘坐功能的汽车座舱正在被颠覆&#xff0c;更高级、更智能的“智能座舱”应运而生。 从行业发展态势来看&#xff0c;大屏多屏已经是智能汽车的基本操作&#xff0c;智能…

【网络安全】——逻辑漏洞之短信轰炸漏洞

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座右…

程序的环境

文章目录[TOC](文章目录)前言一、程序环境分类二、翻译环境1.总体流程2.编译2.1预编译2.2编译2.3汇编3.链接三、运行环境总结前言 我们平时在编译器上编写代码&#xff0c;然后运行代码&#xff0c;最后得到程序的运行结果。这让我们不经好奇&#xff1a;程序在电脑中到底经过…

Java常用设计模式

前言 设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结&#xff0c;其中最出名的当属 Gang of Four (GoF)的分类了&#xff0c;他们将设计模式分类为 23 种经典的模式&#xff0c;根据用途我们又可以分为三大类&#xff0c;分别为创建型模式、结构型模式和行为型模…

物联网漏洞利用整体情况

物联网 威胁分析漏洞篇物联网威胁分析—漏洞篇 引言 本章将从漏洞利用角度对物联网威胁进行分析。首先&#xff0c;我们分析了 NVD和 Exploit-DB中的物联网 年度漏洞及利用 1 变化趋势&#xff1b;之后统计了绿盟威胁捕获系统捕获到的物联网漏洞利用的整体情况&#xff1b;最…

【算法笔记(五)】排序算法

算法笔记(五) 排序算法算法笔记(五)前言一、冒泡排序1.什么是冒泡排序2.实际需求3.代码实现二、选择排序1.什么是选择排序2.需求规则三.插入排序1.了解插入排序2.需求规则3.代码实现四.希尔排序1.什么是希尔排序2.需求规则3.代码实现五.快速排序1.什么是快速排序2.需求规则3.代…

静态代理和动态代理

静态代理和动态代理代理模式代理模式的主要优缺点&#xff1a;优点&#xff1a;缺点&#xff1a;代理模式的编写要点静态代理实现步骤静态代理方式的弊端动态代理:动态代理的实现步骤:代理模式 代理模式的定义&#xff1a;由于某些原因需要给某对象提供一个代理以控制对该对象的…