⛄一、粒子群算法简介

1 标准粒子群优化(PSO)算法
PSO算法根据对环境的适应度将群体中的个体移动到好的区域,将每个个体看作是D维搜索空间中的一个粒子,根据粒子本身的飞行经验和群体中其他同伴的飞行经验调整下一步飞行方向,从而搜索到最好的空间位置解。设第i个粒子的位置表示为一个D维的位置坐标xi=(xi1,xi2,…,xiD),它经过的个体最好位置记为pi=(pi1,pi2,…,piD),也称为 pbest。群体中所有粒子经历过的最好位置的索引号用g表示,即pg,也称为gbest。粒子i的速度用 vi=(vi1,vi2,…,viD)表示,对于粒子i的第d维(1≤d≤D)情况,有如下的坐标、速度迭代变换:

式中:ω为惯性权重系数;c1和c2为加速度常数,c1和c2代表每个粒子的历史最好位置pbest和群体所有粒子历史最好位置gbest的统计加速项的权重,c1代表粒子i对个体历史最优的认知程度,c2代表粒子i对群体最优领导者的认知程度,适当地调整c1和c2的数值,有利于寻找全局最优解以及局部最优解;pbest是本身所找到的最优解,根据适应度在每次迭代后进行比较;gbest是群体所有粒子历史所找到的最优解,根据适应度在每次迭代后进行比较;rand1()和rand2()代表两个在[0,1]范围里变化的随机数值。

2 电力系统最优潮流(optimal power flow, OPF)
2.1 目标函数

电力系统中的最优一般以发电成本最小为目标,其数学模型如下:

2.2 等式约束
节点功率平衡方程:

2.3 不等式约束

以上模型中,式(13)至式(16)依次为:电源有功功率上下界约束;无功源无功功率上下界约束;节点电压上下界约束;线路传输功率潮流约束。式中:SB为系统所有节点集合;SG为所有发电机集合;SR为所有无功源集合;SL为所有支路集合;PGi,QGi为发电机i的有功、无功功率;PDi,QDi为节点i的有功、无功负荷;Ui,θi为节点i的电压幅值与相角, θij=θi-θj;Gij,Bij为节点导纳矩阵第i行第j列元素的实部与虚部;PL为线路的有功潮流,设线路L两端节点为i,j。

等式非线性功率方程常采用牛顿-拉夫逊法进行迭代求解,牛顿-拉夫逊法将非线性问题经过泰勒展开,并略去二次以上项,化非线性问题为近似线性问题求解。对初值经过多次的修正迭代,最终找到目标解。

2.4 构建罚函数
本文采用罚函数的方法构造适合于PSO算法的优化目标函数,将不等式约束条件化为等式问题:

式中:右边第一项为燃料耗费;第二项是不等式约束的相关物理量的越限罚函数之和;λX是罚因子。

Xlim定义如下:

在电力系统中X可以是电压U上下界、机组有功功率P上下界、无功功率Q上下界、线路传输功率Pij上下界等物理量。

3 仿真实验结果
3.1 粒子飞行搜索状态的限制

PSO算法是属于随机搜索算法,因此很难处理等式约束问题。特别是当可行域很小的时候,很难找到最优解。采用一些方法加强求解能力:

a)当粒子不满足等式约束时,粒子继续飞行跳跃,避开不可行解的空间,直到找到可行解为止;

b)当粒子非常接近g而速度又接近于0时,粒子将在很小的空间里飞行,将失去全局搜索能力,需重新初始粒子;

c)粒子速度接近于0时,重新初始粒子;

d)采用足够大的罚函数,将粒子限制在可行空间里。

3.2 算法流程
a)初始设定微粒的随机速度和位置;

b)计算每个微粒的适应值;

c)对每个微粒,将其适应值与所经历过的最好位置P 的适应值进行比较,若较好,则将其作为该微粒的当前最好位置;

d)对每个微粒,将其当前最好适应值与全局所经历过的最好位置的适应值进行比较,若较好,则将其作为当前的全局最好位置;

e)通过位置、速度迭代方程式(1)、式(2)迭代;

f)若未达到结束条件,则返回步骤b。

为了考察改进粒子群算法与标准粒子群算法的性能,我们利用MATLAB6对粒子群算法以及改进粒子群算法进行了模拟比较。

图1 PSO算法程序流程图

⛄二、部分源代码

clc
clear
close all
%% NR load flow analysis
nbus = 30;
busdata = busdatas(nbus);
linedata = linedatas(nbus);
resultWithoutDG = nrloadflow(nbus,busdata,linedata);
dim = 10;
Pmin=3; %minimum power of solar DG unit
if nbus==30
Pmax=30; %maximum power of solar DG unit in MW
else
Pmax=100;
end
%% potential bus selection
R=linedata(:,3);
sourcbus=linedata(:,1);
destintnbus=linedata(:,2);
% del=180/pi*del;
for ii=1:size(linedata,1)
alpha(ii)=(R(ii)/(abs(resultWithoutDG.V(sourcbus(ii)))…
*abs(resultWithoutDG.V(sourcbus(ii)))))…
*cos(resultWithoutDG.del(sourcbus(ii))…
-resultWithoutDG.del(destintnbus(ii)));
beta(ii)=(R(ii)/(abs(resultWithoutDG.V(sourcbus(ii)))…
*abs(resultWithoutDG.V(sourcbus(ii)))))…
*sin(resultWithoutDG.del(sourcbus(ii))…
-resultWithoutDG.del(destintnbus(ii)));
SV(ii)=alpha(ii).*resultWithoutDG.Pi(destintnbus(ii))…
-beta(ii).*resultWithoutDG.Qi(destintnbus(ii));
end

[sv,ind]=sort(SV,‘descend’);
po=destintnbus(ind);
[poo,ia,ic]=unique(po);
temp=po(sort(ia));
loadBusLocation = temp(1:dim);
%% GA optimisation
fitness= @(x) objf(x,loadBusLocation,resultWithoutDG,nbus);
options = gaoptimset(‘MutationFcn’,@mutationadaptfeasible,‘PopulationSize’,20);
options = gaoptimset(options,‘PlotFcns’,{@gaplotbestf}, …
‘Display’,‘iter’,‘Generations’,80);
[GAx,fval] = ga(fitness,dim,[],[],[],[],Pmin.*ones(1,dim)…
,Pmax.*ones(1,dim),[],options);
finalGAresults= resultcalc(GAx,loadBusLocation,resultWithoutDG,nbus);
%% PSO optimisation
[PSOx,objval]=PSO(loadBusLocation,resultWithoutDG,nbus,dim,Pmax,Pmin);
finalPSOresults= resultcalc(PSOx’,loadBusLocation,resultWithoutDG,nbus);
FIG1 = figure(‘Name’, ‘PSO Optimization’,‘NumberTitle’,‘off’);
figure(FIG1)
plot(1./objval)
grid on;
ylabel(‘VL (pu)’);
xlabel(‘time (sec)’);
title(‘PSO optimisation’)
%% Result plotting
% volatge magnitude plot
FIG2 = figure(‘Name’, ‘BUS VOLTAGE’,‘NumberTitle’,‘off’);
figure(FIG2)
bar([finalPSOresults.V,finalGAresults.V,resultWithoutDG.V],‘group’)
xlim([0 nbus+1])
ylim([0.95,1.1])
grid on;
legend(‘PSO optimised’,‘GA optimised’,‘Without DG’)
xlabel(‘Bus number’)
ylabel(‘Volatge Magnitude in p.u.’)
title(‘Bus Voltage’)
% power loss comparison
FIG3 = figure(‘Name’, ‘Total Active Power loss’,‘NumberTitle’,‘off’);
figure(FIG3)
bar([sum(finalPSOresults.Lpij);sum(finalGAresults.Lpij);sum(resultWithoutDG.Lpij)])
grid on;
title(‘Total Active Power loss in MW’)
ylabel(‘Active Power loss(MW)’)
set(gca,‘Xtick’,0)
text(0.8,-0.2,‘PSO tuned’)
text(1.8,-0.2,‘GA tuned’)
text(2.8,-0.2,‘Without Optimisation’)
% printresult

⛄三、运行结果



⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
1.林小朗,王磊.改进粒子群优化算法的电力系统最优潮流计算[J].广东电力. 2007,(03).

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

【潮流计算】基于matlab粒子群算法优化电力系统潮流计算【含Matlab源码 2157期】相关推荐

  1. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 036期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [优化预测]基于matlab粒子群算法优化ELM神经网络预测[含Matlab源码 036期] 二.粒子群算法及ELM简介 1 粒子群算法简 ...

  2. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1722期】

    一.粒子群算法优化极限学习机ELM简介 PSO-ELM优化算法预测模型 ELM模型在训练之前可以随机产生ω和b, 只需要确定隐含层神经元个数及隐含层神经元激活函数, 即可实现ELM预测模型的构建.在E ...

  3. 【SVM回归预测】基于matlab粒子群算法优化SVM回归预测【含Matlab源码 1424期】

    ⛄一.粒子群算法简介 1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他的仿真中,每一个个体都 ...

  4. 【ELM回归预测】基于matlab粒子群算法优化ELM回归预测【含Matlab源码 1586期】

    一.粒子群算法简介 1 粒子群算法简介 1.1 引言 自然界中的鸟群和鱼群的群体行为一直是科学家的研究兴趣所在.生物学家Craig Reynolds在1987年提出了一个非常有影响的鸟群聚集模型,在他 ...

  5. 【电力系统】基于粒子群算法优化电力系统潮流计算附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  6. 【数字信号去噪】基于matlab粒子群算法优化VMD分解分量选择数字信号降噪【含Matlab源码 1979期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[数字信号去噪]基于matlab粒子群算法优化VMD分解分量选择数字信号降噪[含Matlab源码 1979期] 点击上面蓝色字体,直接付费 ...

  7. 【飞行器】基于matlab蚁群算法飞行器巡检路径【含Matlab源码 268期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[飞行器]基于matlab蚁群算法飞行器巡检路径[含Matlab源码 268期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: ...

  8. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  9. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

最新文章

  1. 比特币现金开发者:BCH网络将“提升到VISA级别”来处理交易
  2. 皮一皮:美甲的最高境界...
  3. pppoe移植到arm上 1.0
  4. Kitten编程猫的工程文件 bcm,能发布成Android平台的apk文件吗
  5. “约见”面试官系列之常见面试题第六篇说说弹性布局(建议收藏)
  6. keras添加正则化全连接_第16章 Keras使用Dropout正则化防止过拟合
  7. iOS原生实现二维码扫描
  8. hdu2587(递推)
  9. python给定起始和结束日期,如何得到中间所有日期
  10. 基于Keras机器学习库的分类预测
  11. Android-- Dialog对话框的使用方法
  12. liunx 中mysql 远程连不上_linux中MySQL本地可以连接,远程连接不上问题
  13. 1.2执行更高级的线程任务(Performing More Advanced Thread Tasks)
  14. excel二极管伏安特性曲线_【电子知识点】半导体二极管amp;三极管
  15. hmailserver的反垃圾邮件功能
  16. 如何使用计算机上合并计算方法,excel合并计算的方法步骤详解
  17. sencha app watch php,Sencha Cmd使用指南
  18. 35页危化品安全管理平台解决方案2022版
  19. 农夫山泉(数据范围是亮点)
  20. [经典面试题][淘宝]求首尾相连数组的最大子数组和

热门文章

  1. Google Glass——个人移动设备的技术革新
  2. DVWA问题:DVWA System error……
  3. 1.拜尔阵列—1.1手机摄像模组介绍
  4. 宣传海报用什么软件做?
  5. iMacros 自动发文章和外链的做法
  6. [生存志] 第46节 秦穆公任贤霸西戎
  7. uni-app 微信小程序设置全局的分享onShareAppMessage
  8. 2022 - 8 洛谷
  9. 1-Redis 核心篇:唯快不破的秘密(码哥)
  10. sklearn - 线性回归(正规方程与梯度下降)