✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。
更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)
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
1 matlab版本
2014a
2 参考文献
1.林小朗,王磊.改进粒子群优化算法的电力系统最优潮流计算[J].广东电力. 2007,(03).
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
🍅 仿真咨询
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合