书签 分享 收藏 举报 版权申诉 / 17

一种基于GPU的快速求解配电网潮流的计算方法.pdf

  • 上传人:111****112
  • 文档编号:6227433
  • 上传时间:2019-05-22
  • 格式:PDF
  • 页数:17
  • 大小:3.28MB
  • 摘要
    申请专利号:

    CN201210431858.4

    申请日:

    2012.11.01

    公开号:

    CN103793590A

    公开日:

    2014.05.14

    当前法律状态:

    驳回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的驳回IPC(主分类):G06F 19/00申请公布日:20140514|||实质审查的生效IPC(主分类):G06F 19/00申请日:20121101|||公开

    IPC分类号:

    G06F19/00(2011.01)I

    主分类号:

    G06F19/00

    申请人:

    同济大学

    发明人:

    李光耀; 王文举; 王力生

    地址:

    200092 上海市杨浦区四平路1239号

    优先权:

    专利代理机构:

    上海科盛知识产权代理有限公司 31225

    代理人:

    赵继明

    PDF完整版下载: PDF下载
    内容摘要

    本发明涉及一种基于GPU的快速求解配电网潮流的计算方法,该方法包括:对配电网上的发电站节点以及各个负荷节点进行编号,形成配电网原始接图;根据节点数目和节点间的连接关系构建十字链表;通过电压互感器检测配电网中各个节点间的电压,根据配电网的原始接图以及配电网各个节点之间的电流流向关系,构建关联矩阵;根据十字链表判断配电网中是否含有环网,若是,则破坏该环网处的闭环负荷节点,增加一个虚拟节点;通过十字链表和关联矩阵,构建除了发电站之外的配电网中所有负荷节点的阻抗矩阵,通过GPU迭代求解配电网潮流,并将计算结果在相关仪表中显示。与现有技术相比,本发明具有运算速度高、适用范围广等优点。

    权利要求书

    权利要求书
    1.  一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,该方法包括以下步骤:
    A、对配电网上的发电站节点以及各个负荷节点进行编号,形成配电网原始接图;
    B、根据节点数目和节点间的连接关系构建十字链表;
    C、通过电压互感器检测配电网中各个节点间的电压,电压互感器的二次侧经交流插件和A/D转换器将电压信号输出至GPU计算处理,根据配电网的原始接图以及配电网各个节点之间的电流流向关系,构建关联矩阵;
    D、根据十字链表判断配电网中是否含有环网,若是,则破坏该环网处的闭环负荷节点,增加一个虚拟节点,相应地修改十字链表,并在关联矩阵中增加闭环负荷节点破坏后的虚拟节点编号的行与列,同时调整关联矩阵中的元素值,若否,则直接执行步骤E;
    E、通过十字链表和关联矩阵,构建除了发电站之外的配电网中所有负荷节点的初始阻抗矩阵Z,通过GPU迭代求解配电网潮流,并将计算结果在相应仪表中显示。

    2.  根据权利要求1所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,所述的十字链表中包括顶点结点和边结点。

    3.  根据权利要求2所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,所述的顶点结点由verlink指针、info指针、firstin指针和firstout指针四个部分组成,其中,所述的verlink指针指向下一顶点结点;所述的info指针中存储的数据信息包括节点编号vi、负荷节点标识flag、负荷节点阻抗值Zi和闭环负荷节点破环后增加的虚拟节点编号vr;所述的firstin指针指向第一个以该点为终点的支路;所述的firstout指针指向第一个以该点为出发点的支路;
    所述的边结点由bpoint指针、epoint指针、info指针、elink指针和blink指针五个部分组成,其中,所述的bpoint指示支路的出发点;所述的epoint指示支路的终点;所述的info指针存储支路阻抗;所述的elink指针指向终点相同的下一条支路;所述的blink指针指向出发点相同的下一条支路。

    4.  根据权利要求1所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,所述的关联矩阵A为(n-1)×(n-1)阶矩阵,对于关联矩阵中的i行j列元素A(i,j),当存在流入节点j的电流且流经节点i时A(i,j)=1,否则A(i,j)=0。

    5.  根据权利要求3所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,所述的步骤D中根据十字链表判断配电网中是否含有环网具体为:依次遍历十字链表中顶点结点,根据负荷节点标识flag≠0访问其中的负荷节点,若每一负荷节点的firstin指针所指支路的elink指针均为null,则可判定该配电网无环网构成;若某一负荷节点vi的firstin指针所指支路的elink指针不为空,则可判定在该负荷节点处形成环网。

    6.  根据权利要求l所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,若配电网无环网构成,则根据下式求解关于每个负荷节点的回路方程系数,最终生成初始阻抗矩阵Z:
    以每条回路电流为求解变量,根据基尔霍夫电压定律,可得下述回路阻抗方程组:
    VS=z1,1I1+Z1,2+I2+...+Z1,nIn...VS=ZP,1I1+ZP,2I2+...+ZP,nIn...VS=Zn,1I1+Zn,2I2+...+Zn,nIn]]>
    i(n-1),Zi,i=Σl=0i-1Σk=1i[A(k,i)×Z(l,k)]+Zi]]>
    Zi,j=Σl=0max(k)Σk=1min(i,j)[A(k,min(i,j))×A(k,max(i,j))×Z(l,k)]]]>
    所述的初始阻抗矩阵Z为一复系数对称矩阵,由对角线元素Zi,i和非对角线元素Zi,j构成;VS为电源电压;n为节点个数;A(k,i)为关联矩阵A中k行i列元素;Z(l,k)是十字链表中起点为l、终点为k的支路阻抗;Zi为第i个负荷节点的阻抗;In为第n个负荷节点的电流。

    7.  根据权利要求6所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,若在负荷节点Vi处有环网生成,则初始阻抗矩阵Z的对角线元素Zi,i和非对角线元素Zi,j的计算公式为:
    Zi,i=Σl=0i-1Σk=1i[A(k,i)×Z(l,k)]+Zi,i(n-1)Σl=0iΣk=0i-1[A(k,i)×Z(l,k)]+Zflag,i=vr≥n]]>
    Zi,j=Σl=0max(k)Σk=1min(i,j)[A(k,min(i,j))×A(k,max(i,j))×Z(l,k)]]]>
    当j是i的虚拟节点编号vr时,Zi,j=Zi,vr+Zi=Zj,i,其中Zflag是虚拟节点所对应的负荷节点阻抗。

    8.  根据权利要求7所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,所述的通过GPU迭代求解配电网潮流具体为:
    1)采用基于right-looking LU分解法的并行Gauss消去算法对回路阻抗方程组进行求解,获得配电网中各负荷节点电流和各负荷节点功率;
    2)判断求得的负荷节点功率是否满足迭代终止条件,若是,则执行步骤3),若否,则对Zi,i中的Zi进行调整,并对Zi,i重新赋值,然后进行下一次的GPU迭代求解,返回步骤1);
    3)利用所得负荷节点电流先后计算配电网各支路电流I′i和节点电压Uj,其中i、j为节点编号:
    Ii=Σj=i+1n-1A(i,j)×Iload[j];i=1,2,......n-1]]>
    Uj=VS-Σl=0max(i)Σi=1j[A(i,j)×Ii×Z(l,i)];j=1,2,3......n-1]]>
    其中,A(i,j)为关联矩阵;n为节点数量;Z(l,i)为起点为l终点为i的支路阻抗;Iload[j]为j节点电流。

    9.  根据权利要求8所述的一种基于GPU的快速求解配电网潮流的计算方法,其特征在于,所述的迭代终止条件为求得的负荷节点功率与给定负荷功率的差值小于设定的精度。

    说明书

    说明书一种基于GPU的快速求解配电网潮流的计算方法
    技术领域
    本发明涉及一种电网潮流计算与分析的方法,具体来说涉及一种基于GPU的快速求解配电网潮流的计算方法。
    背景技术
    在实际的电力系统维修、检修或运行人员执行调度方案过程中对相关设备进行开关合闸等操作时必然引起联网设备监测仪表读数的变化,相应地在虚拟仿真系统中对此等操作事件的仿真也必须能够给予正确的模拟响应,从而反映出此等联网设备仪表读数值的正确变化,否则仿真意义将大打折扣。
    “潮流计算”是实现此目标的关键核心,它的任务就是根据给定的运行条件和网络结构来确定整个系统各部分的运行状态,如各母线上的电压(幅值和相角)、网络中的功率分布以及功率损耗等。其计算结果是电力网络运行分析的基础,可为电力系统运行人员进行电力系统网络重构、故障处理、无功优化和状态估计提供参考依据,在电网调度、运行分析、操作模拟和设计规划中都发挥着重要的作用,是电力系统中最基本的、应用最为广泛的一种电气计算。
    基于潮流计算的重大应用价值,众多国内外科研人员对其开展了深入研究。早期主要面向环状结构的高压输电网进行潮流计算分析。主要经历了高斯-赛德尔迭代算法、牛顿拉夫逊算法和国内外广泛使用的PQ分解算法三个研究发展阶段。
    90年代开始面向结构更为复杂的配电网进行潮流计算研究。因配电网在结构上具有闭环结构、开环运行的特性,稳态运行时多呈辐射状,在发生故障或倒换负荷时,则呈短时环网运行结构;且在线路参数上R/X比值较大,网络的PQ节点多、PV节点较少等特点,使得传统的牛顿拉夫逊算法、快速解耦法出现病态收敛、不再有效。
    为此,许多学者针对配电网结构特性一方面对牛顿法、快速解耦法进行了改进,但使之求解复杂化,牺牲了原有算法的收敛性和稳定性;另一方面陆续提出了前推 回代类算法、回路阻抗法等新配电网潮流的计算方法。
    其中前推回代类算法具有线性收敛、鲁棒性好、求解速度快、内存占用少等优异特性,适用于辐射状配电网的潮流计算。但在应用于环状或含有PV节点的配电网潮流计算分析时,需进行特殊处理从而增加了求解难度,通用性、收敛性不强。
    S.K.Goswani等人提出的回路阻抗法,与上述算法相比,具有网孔处理能力强、收敛性好、稳定性高,适用范围广等优点。但在计算机求解过程中存在下述问题:(1)为利用稀疏矩阵技术简化回路阻抗矩阵的LU分解,王守相等人将配电网树状结构转化成标准二叉树形式进行节点编号优化,加大了算法复杂度,限定了中间节点状态的求解顺序,改变了配电网原有的网络结构不便于网络重构;王丹提出邻接表与二叉树结合的方式进行节点编号优化便于网络重构但也无法进行有环配电网阻抗矩阵的自动化生成。(2)CPU对阻抗矩阵进行LU分解时,刘耀年等人采用一定的技巧对对角线元素和相邻元素进行了优化,但因阻抗矩阵为对称满秩矩阵在计算过程中矩阵元素仍将占用大量内存,计算速度会随着节点数目的大量增加而大幅下降。
    发明内容
    本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种运算速度高、适用范围广的基于GPU的快速求解配电网潮流的计算方法。
    本发明的目的可以通过以下技术方案来实现:
    一种基于GPU的快速求解配电网潮流的计算方法,该方法包括以下步骤:
    A、对配电网上的发电站节点以及各个负荷节点进行编号,形成配电网原始接图;
    B、根据节点数目和节点间的连接关系构建十字链表;
    C、通过电压互感器检测配电网中各个节点间的电压,电压互感器的二次侧经交流插件和A/D转换器将电压信号输出至GPU计算处理,根据配电网的原始接图以及配电网各个节点之间的电流流向关系,构建关联矩阵;
    D、根据十字链表判断配电网中是否含有环网,若是,则破坏该环网处的闭环负荷节点,增加一个虚拟节点,相应地修改十字链表,并在关联矩阵中增加闭环负荷节点破坏后的虚拟节点编号的行与列,同时调整关联矩阵中的元素值,若否,则直接执行步骤E;
    E、通过十字链表和关联矩阵,构建除了发电站之外的配电网中所有负荷节点的初始阻抗矩阵Z,通过GPU迭代求解配电网潮流,并将计算结果在相应仪表中显示。
    所述的十字链表中包括顶点结点和边结点。
    所述的顶点结点由verlink指针、info指针、firstin指针和firstout指针四个部分组成,其中,所述的verlink指针指向下一顶点结点;所述的info指针中存储的数据信息包括节点编号vi、负荷节点标识flag、负荷节点阻抗值Zi和闭环负荷节点破环后增加的虚拟节点编号vr;所述的firstin指针指向第一个以该点为终点的支路;所述的firstout指针指向第一个以该点为出发点的支路;
    所述的边结点由bpoint指针、epoint指针、info指针、elink指针和blink指针五个部分组成,其中,所述的bpoint指示支路的出发点;所述的epoint指示支路的终点;所述的info指针存储支路阻抗;所述的elink指针指向终点相同的下一条支路;所述的blink指针指向出发点相同的下一条支路。
    所述的关联矩阵A为(n-1)×(n-1)阶矩阵,对于关联矩阵中的i行j列元素A(i,j),当存在流入节点j的电流且流经节点i时A(i,j)=1,否则A(i,j)=0。
    所述的步骤D中根据十字链表判断配电网中是否含有环网具体为:依次遍历十字链表中顶点结点,根据负荷节点标识flag≠0访问其中的负荷节点,若每一负荷节点的firstin指针所指支路的elink指针均为null,则可判定该配电网无环网构成;若某一负荷节点vi的firstin指针所指支路的elink指针不为空,则可判定在该负荷节点处形成环网。
    若配电网无环网构成,则根据下式求解关于每个负荷节点的回路方程系数,最终生成初始阻抗矩阵Z:
    以每条回路电流为求解变量,根据基尔霍夫电压定律,可得下述回路阻抗方程组:
    VS=z1,1I1+Z1,2+I2+...+Z1,nIn...VS=ZP,1I1+ZP,2I2+...+ZP,nIn...VS=Zn,1I1+Zn,2I2+...+Zn,nIn]]>
    i(n-1),Zi,i=Σl=0i-1Σk=1i[A(k,i)×Z(l,k)]+Zi]]>
    Zi,j=Σl=0max(k)Σk=1min(i,j)[A(k,min(i,j))×A(k,max(i,j))×Z(l,k)]]]>
    所述的初始阻抗矩阵Z为一复系数对称矩阵,由对角线元素Zi,j和非对角线元素Zi,j构成;VS为电源电压;n为节点个数;A(k,i)为关联矩阵A中k行i列元素;Z(l,k)是十字链表中起点为l、终点为k的支路阻抗;Zi为第i个负荷节点的阻抗;In为第n个负荷节点的电流。
    若在负荷节点Vi处有环网生成,则初始阻抗矩阵Z的对角线元素Zi,j和非对角线元素Zi,j的计算公式为:
    Zi,i=Σl=0i-1Σk=1i[A(k,i)×Z(l,k)]+Zi,i(n-1)Σl=0iΣk=0i-1[A(k,i)×Z(l,k)]+Zflag,i=vr≥n]]>
    Zi,j=Σl=0max(k)Σk=1min(i,j)[A(k,min(i,j))×A(k,max(i,j))×Z(l,k)]]]>
    当j是i的虚拟节点编号Vr时,Zi,j=Zi,vr+Zi=Zj,i,其中Zflag是虚拟节点所对应的负荷节点阻抗。
    所述的通过GPU迭代求解配电网潮流具体为:
    1)采用基于right-looking LU分解法的并行Gauss消去算法对回路阻抗方程组进行求解,获得配电网中各负荷节点电流和各负荷节点功率;
    2)判断求得的负荷节点功率是否满足迭代终止条件,若是,则执行步骤3),若否,则对Zi,i中的Zi进行调整,并对Zi,i重新赋值,然后进行下一次的GPU迭代求解,返回步骤1);
    3)利用所得负荷节点电流先后计算配电网各支路电流I′i和节点电压Uj,其中i、j为节点编号:
    Ii=Σj=i+1n-1A(i,j)×Iload[j];i=1,2,......n-1]]>
    Uj=VS-Σl=0max(i)Σi=1j[A(i,j)×Ii×Z(l,i)];j=1,2,3......n-1]]>
    其中,A(i,j)为关联矩阵;n为节点数量;Z(l,i)为起点为l终点为i的支路阻抗;Iload[j]为j节点电流。
    所述的迭代终止条件为求得的负荷节点功率与给定负荷功率的差值小于设定的精度。
    与现有技术相比,本发明具有以下优点:
    1)本发明采用十字链表作为物理拓扑结构的存储方式,更易判断出配电网中是否含有环网结构及构成环网结构的节点;
    2)本发明方法可省略利用矩阵置换选取列主元的步骤,节省了大量运算时间;
    3)本发明方法在GPU中每个线程可计算矩阵中的一列元素,明显提高运算速度,同时基于GPU的并行计算具有低成本、高性价比的优势;
    4)本发明的阻抗矩阵生成方法结合了十字链表与关联矩阵,无论配电网是否有环网构成,该方法都能完成阻抗矩阵元素的自动化计算,适用范围广。
    附图说明
    图1为本发明方法的流程示意图;
    图2为本发明实施例中由7节点构成的辐射状配电网示意图;
    图3为顶点结点和边结点在十字链表中的设置;
    图4为7节点配电网的十字链表;
    图5为7节点配电网的关联矩阵;
    图6为基于CUDA的编程模型结构示意图;
    图7为基于right-looking LU分解法的并行Gauss消去算法示意图。
    具体实施方式
    下面结合附图和具体实施例对本发明进行详细说明。
    实施例
    配电网的基本单元是馈线,每条馈线以辐射型网络连接若干台配电变压器。如果将节点负荷用恒定阻抗表示,且不考虑配电线对地电容,并将中间变压器进行等值化简,则从馈线根节点起到每一个负荷节点都形成一条回路。如图1所示,本实施例基于GPU的快速求解配电网潮流的计算方法,具体包括以下步骤:
    A、对配电网上的发电站节点以及各个负荷节点进行编号,形成配电网原始接图;
    B、根据节点数目和节点间的连接关系构建十字链表;
    C、通过电压互感器检测配电网中各个节点间的电压,电压互感器的二次侧经交流插件和A/D转换器将电压信号输出至GPU计算处理,根据配电网的原始接图 以及配电网各个节点之间的电流流向关系,构建关联矩阵;
    D、根据十字链表判断配电网中是否含有环网,若是,则破坏该环网处的闭环负荷节点,增加一个虚拟节点,相应地修改十字链表,并在关联矩阵中增加闭环负荷节点破坏后的虚拟节点编号的行与列,同时调整关联矩阵中的元素值,若否,则直接执行步骤E;
    E、通过十字链表和关联矩阵,构建除了发电站之外的配电网中所有负荷节点的初始阻抗矩阵Z,通过GPU迭代求解配电网潮流,并将计算结果在相应仪表中显示。
    回路阻抗法潮流计算自动化求解的核心是阻抗矩阵自动化生成,其实现前提是找到一个灵活的数据结构能对配电网的物理拓扑进行存储易于配电网物理状况的判断和结构调整。
    如图2中所示,配电网在正常运行情况下呈辐射状结构;在故障处理进行倒负荷操作或网络重构情况下呈现短时间的环网结构(即图1中节点2与节点5相连后,构成环网结构)。这两类拓扑结构都可以用有向图进行表示。有向图的存储方法主要有邻接矩阵法、邻接表法、十字链表法。其中邻接矩阵法占用空间大;邻接表法具有修改简单,存储方便的特点可调整较少的支路和节点信息即可实现配电网网络重构,但难以判断是否有环网生成;十字链表是邻接表法和逆邻接表法结合起来得到的一种链表,不仅继承了邻接表法的上述优点,而且能根据逆邻接表更易判断出构成环网结构的负荷节点,便于破环后潮流计算的求解,为此本实施例采用十字链表对复杂配电网物理拓扑结构进行存储。
    考虑到配电系统的结构特点和潮流计算的需求,对十字链表进行了相应改进:使配电网中的每一个节点、每一条支路在十字链表中都有一个顶点结点、边结点类型的存储结点相对应。如图3所示,所述的顶点结点由verlink指针、info指针、firstin指针和firstout指针四个部分组成,其中verlink指针指向下一顶点结点;info用于对节点编号vi、负荷节点标识flag、负荷节点阻抗值Zi、闭环负荷节点破环后增加的虚拟节点编号vr等数据信息的存储;firstin指针指向第一个以该点为终点的支路;firstout指针指向第一个以该点为出发点的支路;所述的边结点由bpoint指针、epoint指针、info指针、elink指针和blink指针五个部分组成,其中,bpoint指示支路的出发点;epoint指示支路的终点;info存储支路阻抗;elink指针指向终点相同的下一条支路;blink指针指向出发点相同的下一条支路。
    本实施例的十字链表在构建前,需在配电网原始接线图上进行一次节点编号,且编号方案任意,如图2所示,7个节点编号为0-6,规则保证电源节点编号为0其它节点无遗漏即可,此后再也无需进行额外的节点优化编号。在根据节点数目构建十字链表后还需按照节点编号由小到大的顺序依次填充所设置的十字链表。对于顶点节点;若为负荷节点时,置负荷节点标识flag=vi(即负荷节点编号)、vr=0,同时记录负荷节点阻抗值Zi;若为内节点时上述参数统一设置为0。对各边节点记录以l为起点,k为终点的支路阻抗Z(l,k)完成对十字链表的初始化。
    当配电网络物理结构发生改变进行网络重构时,只需在记录其物理拓扑结构的十字链表中添加或删除顶点结点、边结点,并改变相关指针指向即可。
    以7节点系统为例,说明在十字链表上的网络重构过程。图2为配电网络原始接线方式,对所有节点进行编号,编号顺序任意,图4为其对应的十字链表。当接入2-5支路构成环网时(即将2号节点与5号节点连接),需新建一边结点(2,5);修改v5顶点(即节点编号为5的节点)的加firstin指针指向(2,5)边结点;v2顶点结点所连接的(2,3)边结点的blink指针指向(2,5)边结点同时(2,5)边结点的elink指针指向(4,5)边结点。
    构建出关联矩阵A:
    生成节点阻抗矩阵的关键是构建关联矩阵,使求解方程组中节点阻抗矩阵中的元素与各输入支路阻抗、节点负荷阻抗建立起正确的对应组合关系。
    根据配电网各节点之间的电流流向关系,对关联矩阵进行了重新定义使之更易理解和应用;如图4所示,所述的关联矩阵A为(n-1)(n-1)阶矩阵,i、j对应于除去根节点以外的节点编号,当存在流入节点j的电流且流经节点或支路i时A(i,j)=1,否则A(i,j)=0,A(i,j)是关联矩阵A中i行j列元素。
    以每条回路电流为求解变量,根据基尔霍夫电压定律,可得下述回路阻抗方程组:
    VS=z1,1I1+Z1,2+I2+...+Z1,nIn...VS=ZP,1I1+ZP,2I2+...+ZP,nIn...VS=Zn,1I1+Zn,2I2+...+Zn,nIn---(1)]]>
    所述的初始阻抗矩阵Z为一复系数对称矩阵,由对角线元素Zi,i和非对角线元素Zi,j构成;VS为电源电压;n为节点个数;A(k,i)为关联矩阵A中k行i列元素;Z(l,k) 是十字链表中起点为l、终点为k的支路阻抗;Zi为第i个节点的阻抗;In为第n个负荷节点的电流。
    阻抗矩阵的建立与修改:
    假定每一负荷节点处为一二端网络,其阻抗为R+jΩ,则
    P=|I|2R,Q=|I|2Ω     (2)
    式中其中|U|、|I|、分别是二端网络端口处电压与电流U、I的模和两者的相角差。已知某一负荷点vi的P、Q、U,则

    同时假定U=10+0j,则负荷节点vi的初始阻抗
    由十字链表、关联矩阵可构建包含有除供电电源之外的所有配电网负荷节点的初始阻抗矩阵Z,用于第一次GPU求解
    i(n-1),Zi,i=Σl=0i-1Σk=1i[A(k,i)×Z(l,k)]+Zi---(4)]]>
    i=vr≥n,Zi,i=Σl=0iΣk=1i-1[A(k,i)×Z(l,k)]+Zflag---(5)]]>
    Zi,j=Σl=0max(k)Σk=1min(i,j)[A(k,min(i,j))×A(k,max(i,j))×Z(l,k)]---(6)]]>
    当j是i的虚拟节点编号vr时,
    Zi,j=Zi,vr+Zi=Zj,i    (7)
    (7)式中Zi,vr可由(6)式计算。
    阻抗矩阵生成算法,无论配电网是否有环网构成,该算法都能完成阻抗矩阵元素的自动化计算。
    该算法主要包括判断是否有环网构成和阻抗矩阵元素计算两个步骤:
    (1)判断是否有环网构成:依次遍历十字链表中顶点节点,根据负荷节点标识flag≠0访问其中的负荷节点。若每一负荷节点的firstin指针所指支路的elink指针均为null,则可判定该配电网无环网构成;若某一负荷节点vi的frstin指针所指支路的elink指针不为空,则可判定在该负荷节点处形成闭环。则将其info数据域中的闭环负荷节点破环后增加的虚拟节点编号vr=n++(n=N-1,N为配电网节点总数),并在关联矩阵中添加关于vr节点的行和列元素并调整关联矩阵中的元素值。
    (2)阻抗矩阵元素计算:依次遍历十字链表中的负荷节点,若无环网构成,根据式(4)(6)依次计算阻抗矩阵中关于每一负荷节点的回路方程系数,直至所有负荷节点被访问完毕即可生成阻抗矩阵;若在某负荷节点vi处有环网生成,则根据式(4)(7)(6),(5)(7)(6)先后计算关于节点vi、vr的回路方程系数,其他节点的回路方程系数仍由式(4)(6)计算完成。随着负荷节点遍历结束,初始阻抗矩阵也就生成建立。
    基于GPU的回路阻抗方程组求解;
    长期以来,GPU一直局限于处理图形渲染的计算任务,其在硬件上通过增加并行处理单元和存储控制单元的方式使之具备了同代CPU无可比拟的强大并行运算能力和高内存读写带宽。尤其是2007年NVIDA公司的CUDA统一计算架构的推出,使得GPU具有更好的可编程性,可广泛用于图形渲染以外领域的计算。与传统的并行计算技术相比,基于GPU的并行计算具有低成本、高性价比的显著优势。
    一、CUDA编程模型
    在CUDA编程架构下(如图6所示),一个应用程序分为Host端和Device端两部分:Host端是指在CPU上可执行的部分,Device端是在显卡上执行的部分,其中运行在GPU上的并行计算函数称为kernel函数。在程序运行过程中:
    Host端程序准备好数据并复制到显存中;Device端程序执行Host端设置的一个个kernal函数,每个kernal函数都将按照线程网格的概念在GPU上运行(每个线程网格可包含多个线程块,每个线程块可包含多个线程,同一线程块内的线程可通过shared memory进行通信、同步);尔后Host端程序从显卡内存中取回运算结果。
    二、基于CUDA的复系数线性方程组求解
    求解线性方程组的方法有两大类:直接法和迭代法。迭代法速度快,但有误差;直接法准确、可靠,具体方法有LU分解法;Gaussian消元法。从本质上讲LU分解法是高斯消元法的一种变相表达形式,实质上是将矩阵通过初等行变换变为一个上三角矩阵,变换矩阵是其单位下三角矩阵的过程。LU分解算法众多根据数据的访问模式不同可划分为left-looking和right-looking算法两类,其中left-looking算法:每次迭代运算先计算矩阵中的一列各元素值,后对该列元素进行调整,求解过程不仅与当前列的左边矩阵中的部分元素相关而且各元素之间也存在计算依存关 系,难以并行处理;right-looking算法:每次迭代运算先计算矩阵中的一列,再用该列中的元素去计算该列右边的子矩阵的各元素值,其求解计算不相关,可并行处理。
    为此本文根据right-looking算法可并行处理的特性结合CUDA编程模型以及复系数矩阵的结构特点,提出了基于right-looking LU分解法的并行Gaussiam消去法(如图5所示),将大量计算集中于GPU进行处理充分发挥其并行运算的能力,将回代过程减为一次,在保证求解精度不变的情况下使求解速度大为提高。
    在LU分解法求解过程中,选取绝对值大的元素作为主元是确保矩阵算法稳定求解应用最广泛的技术,其中列主元法是其最常用的方法。这一处理过程在一般LU分解算法中是一个必不可少的环节。但在配电网潮流计算的直接求解法所形成的阻抗矩阵中Zii>Zji,在完成第(i-1)步迭代运算过后第i列元素中的Z(i)ii在该列的第i行之后的所有元素中其绝对值始终最大。故这一矩阵置换选取列主元的步骤在本配电网潮流计算算法中可省略,节省了大量的运算时间。
    在算法流程设计中,GPU上主要进行主列元上各元素和子矩阵中各元素的并行计算,可按照CUDA编程规则分别编写对应的核函数Column_element()、Submatrix_element()进行实现,其中每个kernal函数由多个线程并行完成。在主列元的各元素求解计算时,我们安排每个线程计算一个元素值;而在子矩阵各元素的求解计算时,让每个线程来计算子矩阵中一列元素值。这是因为如果用每个线程来计算一个元素值,则所需的线程数将超越一个块所允许使用的最大线程数。而在CUDA中有一硬件特性:同一块中的线程均可在同一个流多处理器中同步执行相同的指令序列且可共用shared memory可明显提高运算速度。
    为表述算法方便,在算法流程图7中用B(i,j)来表示复系数矩阵中的某一复数元素,但在实际编程过程中,用R(i,j)、I(i,j)对应其实部和虚部(即用与矩阵B同等阶数的矩阵R、I来描述复数矩阵B)。因为每个块的共享存储器大小为16~64k,通常情况下难以将矩阵R、I整体读入共享存储器,但在每次循环计算时可将主元列和主元列上第一个元素的同行元素从全局存储器上读入共享存储器,而矩阵R、I存于global memory,以此充分发挥共享存储器的访问速度远比全局存储器快得多的优势,从而减小通信延迟、提高数据访问效率。
    同时为保持计算精度在循环迭代求解子矩阵复数元素时需遵循以下规则;
    1)两复数矩阵元素的加减法为其对应实部、虚部相加减;
    2)两复数矩阵元素的乘法采用下式进行快速求解:
    B(k,i)*B(i,j)=(a+jb)(c+jd)=(p-q)+j(s-p-q)  (8)
    式(8)中p=ac,q=bd,s=(a+b)*(c+d),计算过程中a,c分别从B(k,i)和B(i,j)的实部矩阵R(k,i)、R(i,j)中读取;b,d分别从B(k,i)和B(i,j)的虚部矩阵I(k,i)、I(i,j)中读取。
    3)两复数矩阵元素的除法采用下式进行快速求解:
    B(j,i)/B(i,i)=(c+jd)/(a+jb)=(p+q)/w+j(s-p+q)/w  (9)
    式(9)中p=ac,q=bd,s=(a-b)(c+d),w=a2+b2,在计算过程中a,c分别从B(j,i)和B(i,i)的实部矩阵R(j,i)、R(i,i)中读取;b,d分别从B(j,i)和B(i,i)的虚部矩阵I(j,i)、I(i,i)中读取。
    随着两个kernel核函数别调用N-1次整个LU分解过程结束,但还需由CPU调用函数back_substitution()进行回代计算过程才能完成对复系数线性方程组的求解。
    基于回路阻抗法的配电网的潮流计算可以归结为求解一组复系数线性方程组,是一种高密度数据运算适用于GPU进行快速求解。本实施例中通过GPU迭代求解配电网潮流具体为:
    1)采用基于right-looking LU分解法的并行Gauss消去算法对回路阻抗方程组进行求解,获得配电网中各负荷节点电流和各负荷节点功率;
    2)判断求得的负荷节点功率是否满足迭代终止条件,若是,则执行步骤3),若否,则对Zi,i中的Zi进行调整,并对Zi,i重新赋值,然后进行下一次的GPU迭代求解,返回步骤1),所述的迭代终止条件为求得的负荷节点功率与给定负荷功率的差值小于设定的精度;
    3)利用所得负荷节点电流先后计算配电网各支路电流I′i和节点电压Uj,其中i、j为节点编号:
    Ii=Σj=i+1n-1A(i,j)×Iload[j];i=1,2,......n-1]]>
    Uj=VS-Σl=0max(i)Σi=1j[A(i,j)×Ii×Z(l,i)];j=1,2,3......n-1]]>
    其中,A(i,j)为关联矩阵;n为节点数量;Z(l,i)为起点为k终点为i的支路阻抗;Iload[j]为j节点电流。

    关 键  词:
    一种 基于 GPU 快速 求解 配电网 潮流 计算方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种基于GPU的快速求解配电网潮流的计算方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6227433.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1