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

简介: 【电力系统】基于粒子群优化潮流计算附matlab代码

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

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测雷达通信 无线传感器

信号处理图像处理路径规划元胞自动机无人机 电力系统

⛄ 内容介绍

Optimal Power flow(OPF) is allocating loads to plants for minimum cost while meeting the network constraints. It is formulated as an optimization problem of minimizing the total fuel cost of all committed plant while meeting the network(power flow ) constraints. The variants of the problems are numerous which model the objective and the constraints in different ways.

The basic OPF problem can described mathematically as a minimization of problem of Minimizing the total fuel cost of all committed plants subject to the constraints.

⛄ 部分代码

function [Pgg P V Ybus]=pflow(busdata,linedata);

% formation of  Y bus

j=sqrt(-1);

nl = linedata(:,1); nr = linedata(:,2); R = linedata(:,3);

X = linedata(:,4); Bc = j*linedata(:,5); a = linedata(:, 6);

nbr=length(linedata(:,1)); nbus = max(max(nl), max(nr));

Z = R + j*X; y= ones(nbr,1)./Z;        %branch admittance

for n = 1:nbr

if a(n) <= 0  a(n) = 1; else end

Ybus=zeros(nbus,nbus);     % initialize Ybus to zero

% formation of the off diagonal elements

for k=1:nbr;

      Ybus(nl(k),nr(k))=Ybus(nl(k),nr(k))-y(k)/a(k);

      Ybus(nr(k),nl(k))=Ybus(nl(k),nr(k));

   end

end

% formation of the diagonal elements

for  n=1:nbus

    for k=1:nbr

        if nl(k)==n

        Ybus(n,n) = Ybus(n,n)+y(k)/(a(k)^2) + Bc(k);

        elseif nr(k)==n

        Ybus(n,n) = Ybus(n,n)+y(k) +Bc(k);

        else, end

    end

end

basemva = 100;  accuracy = 0.01; maxiter =3;

ns=0; ng=0; Vm=0; delta=0; yload=0; deltad=0;

nbus = length(busdata(:,1));

for k=1:nbus

n=busdata(k,1);

kb(n)=busdata(k,2); Vm(n)=busdata(k,3); delta(n)=busdata(k, 4);

Pd(n)=busdata(k,5); Qd(n)=busdata(k,6); Pg(n)=busdata(k,7); Qg(n) = busdata(k,8);

Qmin(n)=busdata(k, 9); Qmax(n)=busdata(k, 10);

Qsh(n)=busdata(k, 11);

   if Vm(n) <= 0  Vm(n) = 1.0; V(n) = 1 + j*0;

   else delta(n) = pi/180*delta(n);

        V(n) = Vm(n)*(cos(delta(n)) + j*sin(delta(n)));

        P(n)=(Pg(n)-Pd(n))/basemva;

        Q(n)=(Qg(n)-Qd(n)+ Qsh(n))/basemva;

        S(n) = P(n) + j*Q(n);

   end

end

for k=1:nbus

if kb(k) == 1, ns = ns+1; else, end

if kb(k) == 2 ng = ng+1; else, end

ngs(k) = ng;

nss(k) = ns;

end

Ym=abs(Ybus); t = angle(Ybus);

m=2*nbus-ng-2*ns;

maxerror = 1; converge=1;

iter = 0;

% Start of iterations

clear A  DC   J  DX

while maxerror >= accuracy & iter <= maxiter % Test for max. power mismatch

for i=1:m

for k=1:m

  A(i,k)=0;      %Initializing Jacobian matrix

end, end

iter = iter+1;

for n=1:nbus

nn=n-nss(n);

lm=nbus+n-ngs(n)-nss(n)-ns;

J11=0; J22=0; J33=0; J44=0;

  for i=1:nbr

    if nl(i) == n | nr(i) == n

       if nl(i) == n,  l = nr(i); end

       if nr(i) == n,  l = nl(i); end

       J11=J11+ Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));

       J33=J33+ Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));

       if kb(n)~=1

       J22=J22+ Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));

       J44=J44+ Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));

       else, end

       if kb(n) ~= 1  & kb(l) ~=1

       lk = nbus+l-ngs(l)-nss(l)-ns;

       ll = l -nss(l);

     % off diagonalelements of J1

       A(nn, ll) =-Vm(n)*Vm(l)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));

             if kb(l) == 0  % off diagonal elements of J2

             A(nn, lk) =Vm(n)*Ym(n,l)*cos(t(n,l)- delta(n) + delta(l));end

             if kb(n) == 0  % off diagonal elements of J3

             A(lm, ll) =-Vm(n)*Vm(l)*Ym(n,l)*cos(t(n,l)- delta(n)+delta(l)); end

             if kb(n) == 0 & kb(l) == 0  % off diagonal elements of  J4

             A(lm, lk) =-Vm(n)*Ym(n,l)*sin(t(n,l)- delta(n) + delta(l));end

       else end

    else , end

  end

  Pk = Vm(n)^2*Ym(n,n)*cos(t(n,n))+J33;

  Qk = -Vm(n)^2*Ym(n,n)*sin(t(n,n))-J11;

  if kb(n) == 1 P(n)=Pk; Q(n) = Qk; end   % Swing bus P

    if kb(n) == 2  Q(n)=Qk;

        if Qmax(n) ~= 0

          Qgc = Q(n)*basemva + Qd(n) - Qsh(n);

          if iter <= 7                  % Between the 2th & 6th iterations

             if iter > 2                % the Mvar of generator buses are

               if Qgc  < Qmin(n),       % tested. If not within limits Vm(n)

               Vm(n) = Vm(n) + 0.01;    % is changed in steps of 0.01 pu to

               elseif Qgc  > Qmax(n),   % bring the generator Mvar within

               Vm(n) = Vm(n) - 0.01;end % the specified limits.

             else, end

          else,end

        else,end

    end

  if kb(n) ~= 1

    A(nn,nn) = J11;  %diagonal elements of J1

    DC(nn) = P(n)-Pk;

  end

  if kb(n) == 0

    A(nn,lm) = 2*Vm(n)*Ym(n,n)*cos(t(n,n))+J22;  %diagonal elements of J2

    A(lm,nn)= J33;        %diagonal elements of J3

    A(lm,lm) =-2*Vm(n)*Ym(n,n)*sin(t(n,n))-J44;  %diagonal of elements of J4

    DC(lm) = Q(n)-Qk;

  end

end

DX=A\DC';

for n=1:nbus

 nn=n-nss(n);

 lm=nbus+n-ngs(n)-nss(n)-ns;

   if kb(n) ~= 1

   delta(n) = delta(n)+DX(nn); end

   if kb(n) == 0

   Vm(n)=Vm(n)+DX(lm); end

end

 maxerror=max(abs(DC));

end

V = Vm.*cos(delta)+j*Vm.*sin(delta);

deltad=180/pi*delta;

i=sqrt(-1);

k=0;

for n = 1:nbus

    if kb(n) == 1

    k=k+1;

    S(n)= P(n)+j*Q(n);

    Pg(n) = P(n)*basemva + Pd(n);

    Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);

    Pgg(k)=Pg(n);

    Qgg(k)=Qg(n);     %june 97

    elseif  kb(n) ==2

    k=k+1;

    S(n)=P(n)+j*Q(n);

    Qg(n) = Q(n)*basemva + Qd(n) - Qsh(n);

    Pgg(k)=Pg(n);

    Qgg(k)=Qg(n);  % June 1997

 end

yload(n) = (Pd(n)- j*Qd(n)+j*Qsh(n))/(basemva*Vm(n)^2);

end

busdata(:,3)=Vm'; busdata(:,4)=deltad';

Pgt = sum(Pg);  Qgt = sum(Qg); Pdt = sum(Pd); Qdt = sum(Qd); Qsht = sum(Qsh);

Pgg=abs(Pgg);

 vv=abs(V);

⛄ 运行结果

⛄ 参考文献

[1]郗忠梅, 李有安, 赵法起,等. 基于Matlab的电力系统潮流计算[J]. 山东农业大学学报:自然科学版, 2010(2):4.

⛄ 完整代码

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料


相关文章
|
25天前
|
算法 数据可视化 安全
基于DWA优化算法的机器人路径规划matlab仿真
本项目基于DWA优化算法实现机器人路径规划的MATLAB仿真,适用于动态环境下的自主导航。使用MATLAB2022A版本运行,展示路径规划和预测结果。核心代码通过散点图和轨迹图可视化路径点及预测路径。DWA算法通过定义速度空间、采样候选动作并评估其优劣(目标方向性、障碍物距离、速度一致性),实时调整机器人运动参数,确保安全避障并接近目标。
129 68
|
27天前
|
算法 JavaScript
基于遗传优化的Sugeno型模糊控制器设计matlab仿真
本课题基于遗传优化的Sugeno型模糊控制器设计,利用MATLAB2022a进行仿真。通过遗传算法优化模糊控制器的隶属函数参数,提升控制效果。系统原理结合了模糊逻辑与进化计算,旨在增强系统的稳定性、响应速度和鲁棒性。核心程序实现了遗传算法的选择、交叉、变异等步骤,优化Sugeno型模糊系统的参数,适用于工业控制领域。
|
27天前
|
算法 决策智能
基于遗传优化的货柜货物摆放优化问题求解matlab仿真
本项目采用MATLAB2022A实现基于遗传算法的货柜货物摆放优化,初始随机放置货物后通过适应度选择、交叉、变异及逆转操作迭代求解,最终输出优化后的货物分布图与目标函数变化曲线,展示进化过程中的最优解和平均解的变化趋势。该方法模仿生物进化,适用于复杂空间利用问题,有效提高货柜装载效率。
|
1月前
|
算法 决策智能
基于SA模拟退火优化算法的TSP问题求解matlab仿真,并对比ACO蚁群优化算法
本项目基于MATLAB2022A,使用模拟退火(SA)和蚁群优化(ACO)算法求解旅行商问题(TSP),对比两者的仿真时间、收敛曲线及最短路径长度。SA源于金属退火过程,允许暂时接受较差解以跳出局部最优;ACO模仿蚂蚁信息素机制,通过正反馈发现最优路径。结果显示SA全局探索能力强,ACO在路径优化类问题中表现优异。
|
6月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
270 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
6月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
161 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
6月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
135 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
9月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度
基于混合整数规划的微网储能电池容量规划(matlab代码)
基于混合整数规划的微网储能电池容量规划(matlab代码)
|
9月前
|
算法 调度
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)
含多微网租赁共享储能的配电网博弈优化调度(含matlab代码)