《一种基于GPU的快速求解配电网潮流的计算方法.pdf》由会员分享,可在线阅读,更多相关《一种基于GPU的快速求解配电网潮流的计算方法.pdf(17页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103793590 A (43)申请公布日 2014.05.14 CN 103793590 A (21)申请号 201210431858.4 (22)申请日 2012.11.01 G06F 19/00(2011.01) (71)申请人 同济大学 地址 200092 上海市杨浦区四平路 1239 号 (72)发明人 李光耀 王文举 王力生 (74)专利代理机构 上海科盛知识产权代理有限 公司 31225 代理人 赵继明 (54) 发明名称 一种基于 GPU 的快速求解配电网潮流的计算 方法 (57) 摘要 本发明涉及一种基于 GPU 的快速求解配电网 潮流的计算方法, 。
2、该方法包括 : 对配电网上的发 电站节点以及各个负荷节点进行编号, 形成配电 网原始接图 ; 根据节点数目和节点间的连接关系 构建十字链表 ; 通过电压互感器检测配电网中各 个节点间的电压, 根据配电网的原始接图以及配 电网各个节点之间的电流流向关系, 构建关联矩 阵 ; 根据十字链表判断配电网中是否含有环网, 若是, 则破坏该环网处的闭环负荷节点, 增加一个 虚拟节点 ; 通过十字链表和关联矩阵, 构建除了 发电站之外的配电网中所有负荷节点的阻抗矩 阵, 通过 GPU 迭代求解配电网潮流, 并将计算结果 在相关仪表中显示。 与现有技术相比, 本发明具有 运算速度高、 适用范围广等优点。 (5。
3、1)Int.Cl. 权利要求书 3 页 说明书 9 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书3页 说明书9页 附图4页 (10)申请公布号 CN 103793590 A CN 103793590 A 1/3 页 2 1. 一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在于, 该方法包括以下步 骤 : A、 对配电网上的发电站节点以及各个负荷节点进行编号, 形成配电网原始接图 ; B、 根据节点数目和节点间的连接关系构建十字链表 ; C、 通过电压互感器检测配电网中各个节点间的电压, 电压互感器的二次侧经交流插件 和 A/D 转换器将电。
4、压信号输出至 GPU 计算处理, 根据配电网的原始接图以及配电网各个节 点之间的电流流向关系, 构建关联矩阵 ; D、 根据十字链表判断配电网中是否含有环网, 若是, 则破坏该环网处的闭环负荷节点, 增加一个虚拟节点, 相应地修改十字链表, 并在关联矩阵中增加闭环负荷节点破坏后的虚 拟节点编号的行与列, 同时调整关联矩阵中的元素值, 若否, 则直接执行步骤 E ; E、 通过十字链表和关联矩阵, 构建除了发电站之外的配电网中所有负荷节点的初始阻 抗矩阵 Z, 通过 GPU 迭代求解配电网潮流, 并将计算结果在相应仪表中显示。 2. 根据权利要求 1 所述的一种基于 GPU 的快速求解配电网潮流。
5、的计算方法, 其特征在 于, 所述的十字链表中包括顶点结点和边结点。 3. 根据权利要求 2 所述的一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在 于, 所述的顶点结点由 verlink 指针、 info 指针、 firstin 指针和 firstout 指针四个部分组 成, 其中, 所述的verlink指针指向下一顶点结点 ; 所述的info指针中存储的数据信息包括 节点编号 vi、 负荷节点标识 flag、 负荷节点阻抗值 Zi和闭环负荷节点破环后增加的虚拟节 点编号 vr; 所述的 firstin 指针指向第一个以该点为终点的支路 ; 所述的 firstout 指针指 向第。
6、一个以该点为出发点的支路 ; 所述的边结点由 bpoint 指针、 epoint 指针、 info 指针、 elink 指针和 blink 指针五个 部分组成, 其中, 所述的 bpoint 指示支路的出发点 ; 所述的 epoint 指示支路的终点 ; 所述 的 info 指针存储支路阻抗 ; 所述的 elink 指针指向终点相同的下一条支路 ; 所述的 blink 指针指向出发点相同的下一条支路。 4. 根据权利要求 1 所述的一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在 于, 所述的关联矩阵 A 为 (n-1)(n-1) 阶矩阵, 对于关联矩阵中的 i 行 j 列元素 A。
7、(i, j), 当存在流入节点 j 的电流且流经节点 i 时 A(i, j) 1, 否则 A(i, j) 0。 5. 根据权利要求 3 所述的一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在 于, 所述的步骤 D 中根据十字链表判断配电网中是否含有环网具体为 : 依次遍历十字链表 中顶点结点, 根据负荷节点标识flag0访问其中的负荷节点, 若每一负荷节点的firstin 指针所指支路的 elink 指针均为 null, 则可判定该配电网无环网构成 ; 若某一负荷节点 vi 的 firstin 指针所指支路的 elink 指针不为空, 则可判定在该负荷节点处形成环网。 6. 根据权。
8、利要求 l 所述的一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在 于, 若配电网无环网构成, 则根据下式求解关于每个负荷节点的回路方程系数, 最终生成初 始阻抗矩阵 Z : 以每条回路电流为求解变量, 根据基尔霍夫电压定律, 可得下述回路阻抗方程组 : 权 利 要 求 书 CN 103793590 A 2 2/3 页 3 所述的初始阻抗矩阵Z为一复系数对称矩阵, 由对角线元素Zi, i和非对角线元素Zi, j构 成 ; VS为电源电压 ; n 为节点个数 ; A(k, i) 为关联矩阵 A 中 k 行 i 列元素 ; Z(l, k) 是十字链 表中起点为 l、 终点为 k 的支路。
9、阻抗 ; Zi为第 i 个负荷节点的阻抗 ; In为第 n 个负荷节点的 电流。 7. 根据权利要求 6 所述的一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在 于, 若在负荷节点 Vi处有环网生成, 则初始阻抗矩阵 Z 的对角线元素 Zi, i和非对角线元素 Zi, j的计算公式为 : 当 j 是 i 的虚拟节点编号 vr时, Zi, j Zi, vr+Zi Zj, i, 其中 Zflag是虚拟节点所对应的 负荷节点阻抗。 8. 根据权利要求 7 所述的一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在 于, 所述的通过 GPU 迭代求解配电网潮流具体为 : 1) 采用。
10、基于 right-looking LU 分解法的并行 Gauss 消去算法对回路阻抗方程组进行 求解, 获得配电网中各负荷节点电流和各负荷节点功率 ; 2) 判断求得的负荷节点功率是否满足迭代终止条件, 若是, 则执行步骤 3), 若否, 则对 Zi, i中的 Zi进行调整, 并对 Zi, i重新赋值, 然后进行下一次的 GPU 迭代求解, 返回步骤 1) ; 3) 利用所得负荷节点电流先后计算配电网各支路电流 I i和节点电压 Uj, 其中 i、 j 为节点编号 : 其中,A(i, j) 为关联矩阵 ; n 为节点数量 ; Z(l, i) 权 利 要 求 书 CN 103793590 A 3。
11、 3/3 页 4 为起点为 l 终点为 i 的支路阻抗 ; Iloadj为 j 节点电流。 9. 根据权利要求 8 所述的一种基于 GPU 的快速求解配电网潮流的计算方法, 其特征在 于, 所述的迭代终止条件为求得的负荷节点功率与给定负荷功率的差值小于设定的精度。 权 利 要 求 书 CN 103793590 A 4 1/9 页 5 一种基于 GPU 的快速求解配电网潮流的计算方法 技术领域 0001 本发明涉及一种电网潮流计算与分析的方法, 具体来说涉及一种基于 GPU 的快速 求解配电网潮流的计算方法。 背景技术 0002 在实际的电力系统维修、 检修或运行人员执行调度方案过程中对相关设备。
12、进行开 关合闸等操作时必然引起联网设备监测仪表读数的变化, 相应地在虚拟仿真系统中对此等 操作事件的仿真也必须能够给予正确的模拟响应, 从而反映出此等联网设备仪表读数值的 正确变化, 否则仿真意义将大打折扣。 0003 “潮流计算” 是实现此目标的关键核心, 它的任务就是根据给定的运行条件和网络 结构来确定整个系统各部分的运行状态, 如各母线上的电压 ( 幅值和相角 )、 网络中的功率 分布以及功率损耗等。其计算结果是电力网络运行分析的基础, 可为电力系统运行人员进 行电力系统网络重构、 故障处理、 无功优化和状态估计提供参考依据, 在电网调度、 运行分 析、 操作模拟和设计规划中都发挥着重要。
13、的作用, 是电力系统中最基本的、 应用最为广泛的 一种电气计算。 0004 基于潮流计算的重大应用价值, 众多国内外科研人员对其开展了深入研究。早期 主要面向环状结构的高压输电网进行潮流计算分析。主要经历了高斯 - 赛德尔迭代算法、 牛顿拉夫逊算法和国内外广泛使用的 PQ 分解算法三个研究发展阶段。 0005 90年代开始面向结构更为复杂的配电网进行潮流计算研究。 因配电网在结构上具 有闭环结构、 开环运行的特性, 稳态运行时多呈辐射状, 在发生故障或倒换负荷时, 则呈短 时环网运行结构 ; 且在线路参数上 R/X 比值较大, 网络的 PQ 节点多、 PV 节点较少等特点, 使 得传统的牛顿拉。
14、夫逊算法、 快速解耦法出现病态收敛、 不再有效。 0006 为此, 许多学者针对配电网结构特性一方面对牛顿法、 快速解耦法进行了改进, 但 使之求解复杂化, 牺牲了原有算法的收敛性和稳定性 ; 另一方面陆续提出了前推回代类算 法、 回路阻抗法等新配电网潮流的计算方法。 0007 其中前推回代类算法具有线性收敛、 鲁棒性好、 求解速度快、 内存占用少等优异特 性, 适用于辐射状配电网的潮流计算。但在应用于环状或含有 PV 节点的配电网潮流计算分 析时, 需进行特殊处理从而增加了求解难度, 通用性、 收敛性不强。 0008 S.K.Goswani 等人提出的回路阻抗法, 与上述算法相比, 具有网孔。
15、处理能力强、 收 敛性好、 稳定性高, 适用范围广等优点。但在计算机求解过程中存在下述问题 : (1) 为利用 稀疏矩阵技术简化回路阻抗矩阵的 LU 分解, 王守相等人将配电网树状结构转化成标准二 叉树形式进行节点编号优化, 加大了算法复杂度, 限定了中间节点状态的求解顺序, 改变了 配电网原有的网络结构不便于网络重构 ; 王丹提出邻接表与二叉树结合的方式进行节点编 号优化便于网络重构但也无法进行有环配电网阻抗矩阵的自动化生成。 (2)CPU对阻抗矩阵 进行 LU 分解时, 刘耀年等人采用一定的技巧对对角线元素和相邻元素进行了优化, 但因阻 抗矩阵为对称满秩矩阵在计算过程中矩阵元素仍将占用大量。
16、内存, 计算速度会随着节点数 说 明 书 CN 103793590 A 5 2/9 页 6 目的大量增加而大幅下降。 发明内容 0009 本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种运算速度高、 适 用范围广的基于 GPU 的快速求解配电网潮流的计算方法。 0010 本发明的目的可以通过以下技术方案来实现 : 0011 一种基于 GPU 的快速求解配电网潮流的计算方法, 该方法包括以下步骤 : 0012 A、 对配电网上的发电站节点以及各个负荷节点进行编号, 形成配电网原始接图 ; 0013 B、 根据节点数目和节点间的连接关系构建十字链表 ; 0014 C、 通过电压互感器检测配。
17、电网中各个节点间的电压, 电压互感器的二次侧经交流 插件和 A/D 转换器将电压信号输出至 GPU 计算处理, 根据配电网的原始接图以及配电网各 个节点之间的电流流向关系, 构建关联矩阵 ; 0015 D、 根据十字链表判断配电网中是否含有环网, 若是, 则破坏该环网处的闭环负荷 节点, 增加一个虚拟节点, 相应地修改十字链表, 并在关联矩阵中增加闭环负荷节点破坏后 的虚拟节点编号的行与列, 同时调整关联矩阵中的元素值, 若否, 则直接执行步骤 E ; 0016 E、 通过十字链表和关联矩阵, 构建除了发电站之外的配电网中所有负荷节点的初 始阻抗矩阵 Z, 通过 GPU 迭代求解配电网潮流, 。
18、并将计算结果在相应仪表中显示。 0017 所述的十字链表中包括顶点结点和边结点。 0018 所述的顶点结点由 verlink 指针、 info 指针、 firstin 指针和 firstout 指针四个 部分组成, 其中, 所述的verlink指针指向下一顶点结点 ; 所述的info指针中存储的数据信 息包括节点编号 vi、 负荷节点标识 flag、 负荷节点阻抗值 Zi和闭环负荷节点破环后增加的 虚拟节点编号 vr; 所述的 firstin 指针指向第一个以该点为终点的支路 ; 所述的 firstout 指针指向第一个以该点为出发点的支路 ; 0019 所述的边结点由 bpoint 指针、 。
19、epoint 指针、 info 指针、 elink 指针和 blink 指针 五个部分组成, 其中, 所述的 bpoint 指示支路的出发点 ; 所述的 epoint 指示支路的终点 ; 所述的 info 指针存储支路阻抗 ; 所述的 elink 指针指向终点相同的下一条支路 ; 所述的 blink 指针指向出发点相同的下一条支路。 0020 所述的关联矩阵A为(n-1)(n-1)阶矩阵, 对于关联矩阵中的i行j列元素A(i, j), 当存在流入节点 j 的电流且流经节点 i 时 A(i, j) 1, 否则 A(i, j) 0。 0021 所述的步骤 D 中根据十字链表判断配电网中是否含有环网。
20、具体为 : 依次遍历十 字链表中顶点结点, 根据负荷节点标识 flag 0 访问其中的负荷节点, 若每一负荷节点的 firstin 指针所指支路的 elink 指针均为 null, 则可判定该配电网无环网构成 ; 若某一负 荷节点 vi 的 firstin 指针所指支路的 elink 指针不为空, 则可判定在该负荷节点处形成环 网。 0022 若配电网无环网构成, 则根据下式求解关于每个负荷节点的回路方程系数, 最终 生成初始阻抗矩阵 Z : 0023 以每条回路电流为求解变量, 根据基尔霍夫电压定律, 可得下述回路阻抗方程 组 : 说 明 书 CN 103793590 A 6 3/9 页 7。
21、 0024 0025 0026 0027 所述的初始阻抗矩阵 Z 为一复系数对称矩阵, 由对角线元素 Zi, j和非对角线元素 Zi, j构成 ; VS为电源电压 ; n 为节点个数 ; A(k, i) 为关联矩阵 A 中 k 行 i 列元素 ; Z(l, k) 是 十字链表中起点为 l、 终点为 k 的支路阻抗 ; Zi为第 i 个负荷节点的阻抗 ; In为第 n 个负荷 节点的电流。 0028 若在负荷节点 Vi处有环网生成, 则初始阻抗矩阵 Z 的对角线元素 Zi, j和非对角线 元素 Zi, j的计算公式为 : 0029 0030 0031 当 j 是 i 的虚拟节点编号 Vr时, Z。
22、i, j Zi, vr+Zi Zj, i, 其中 Zflag是虚拟节点所对 应的负荷节点阻抗。 0032 所述的通过 GPU 迭代求解配电网潮流具体为 : 0033 1) 采用基于 right-looking LU 分解法的并行 Gauss 消去算法对回路阻抗方程组 进行求解, 获得配电网中各负荷节点电流和各负荷节点功率 ; 0034 2) 判断求得的负荷节点功率是否满足迭代终止条件, 若是, 则执行步骤 3), 若否, 则对 Zi, i中的 Zi进行调整, 并对 Zi, i重新赋值, 然后进行下一次的 GPU 迭代求解, 返回步骤 1) ; 0035 3) 利用所得负荷节点电流先后计算配电网。
23、各支路电流 I i和节点电压 Uj, 其中 i、 j 为节点编号 : 0036 0037 0038 其中,A(i, j) 为关联矩阵 ; n 为节点数量 ; Z(l, i) 为起点为 l 终点为 i 的支路阻抗 ; Iloadj为 j 节点电流。 说 明 书 CN 103793590 A 7 4/9 页 8 0039 所述的迭代终止条件为求得的负荷节点功率与给定负荷功率的差值小于设定的 精度。 0040 与现有技术相比, 本发明具有以下优点 : 0041 1) 本发明采用十字链表作为物理拓扑结构的存储方式, 更易判断出配电网中是否 含有环网结构及构成环网结构的节点 ; 0042 2) 本发明方。
24、法可省略利用矩阵置换选取列主元的步骤, 节省了大量运算时间 ; 0043 3) 本发明方法在 GPU 中每个线程可计算矩阵中的一列元素, 明显提高运算速度, 同时基于 GPU 的并行计算具有低成本、 高性价比的优势 ; 0044 4) 本发明的阻抗矩阵生成方法结合了十字链表与关联矩阵, 无论配电网是否有环 网构成, 该方法都能完成阻抗矩阵元素的自动化计算, 适用范围广。 附图说明 0045 图 1 为本发明方法的流程示意图 ; 0046 图 2 为本发明实施例中由 7 节点构成的辐射状配电网示意图 ; 0047 图 3 为顶点结点和边结点在十字链表中的设置 ; 0048 图 4 为 7 节点配。
25、电网的十字链表 ; 0049 图 5 为 7 节点配电网的关联矩阵 ; 0050 图 6 为基于 CUDA 的编程模型结构示意图 ; 0051 图 7 为基于 right-looking LU 分解法的并行 Gauss 消去算法示意图。 具体实施方式 0052 下面结合附图和具体实施例对本发明进行详细说明。 0053 实施例 0054 配电网的基本单元是馈线, 每条馈线以辐射型网络连接若干台配电变压器。如果 将节点负荷用恒定阻抗表示, 且不考虑配电线对地电容, 并将中间变压器进行等值化简, 则 从馈线根节点起到每一个负荷节点都形成一条回路。如图 1 所示, 本实施例基于 GPU 的快 速求解配。
26、电网潮流的计算方法, 具体包括以下步骤 : 0055 A、 对配电网上的发电站节点以及各个负荷节点进行编号, 形成配电网原始接图 ; 0056 B、 根据节点数目和节点间的连接关系构建十字链表 ; 0057 C、 通过电压互感器检测配电网中各个节点间的电压, 电压互感器的二次侧经交流 插件和 A/D 转换器将电压信号输出至 GPU 计算处理, 根据配电网的原始接图以及配电网各 个节点之间的电流流向关系, 构建关联矩阵 ; 0058 D、 根据十字链表判断配电网中是否含有环网, 若是, 则破坏该环网处的闭环负荷 节点, 增加一个虚拟节点, 相应地修改十字链表, 并在关联矩阵中增加闭环负荷节点破坏。
27、后 的虚拟节点编号的行与列, 同时调整关联矩阵中的元素值, 若否, 则直接执行步骤 E ; 0059 E、 通过十字链表和关联矩阵, 构建除了发电站之外的配电网中所有负荷节点的初 始阻抗矩阵 Z, 通过 GPU 迭代求解配电网潮流, 并将计算结果在相应仪表中显示。 0060 回路阻抗法潮流计算自动化求解的核心是阻抗矩阵自动化生成, 其实现前提是找 到一个灵活的数据结构能对配电网的物理拓扑进行存储易于配电网物理状况的判断和结 说 明 书 CN 103793590 A 8 5/9 页 9 构调整。 0061 如图 2 中所示, 配电网在正常运行情况下呈辐射状结构 ; 在故障处理进行倒负荷 操作或网。
28、络重构情况下呈现短时间的环网结构 ( 即图 1 中节点 2 与节点 5 相连后, 构成环 网结构 )。这两类拓扑结构都可以用有向图进行表示。有向图的存储方法主要有邻接矩阵 法、 邻接表法、 十字链表法。 其中邻接矩阵法占用空间大 ; 邻接表法具有修改简单, 存储方便 的特点可调整较少的支路和节点信息即可实现配电网网络重构, 但难以判断是否有环网生 成 ; 十字链表是邻接表法和逆邻接表法结合起来得到的一种链表, 不仅继承了邻接表法的 上述优点, 而且能根据逆邻接表更易判断出构成环网结构的负荷节点, 便于破环后潮流计 算的求解, 为此本实施例采用十字链表对复杂配电网物理拓扑结构进行存储。 0062。
29、 考虑到配电系统的结构特点和潮流计算的需求, 对十字链表进行了相应改进 : 使 配电网中的每一个节点、 每一条支路在十字链表中都有一个顶点结点、 边结点类型的存储 结点相对应。如图 3 所示, 所述的顶点结点由 verlink 指针、 info 指针、 firstin 指针和 firstout 指针四个部分组成, 其中 verlink 指针指向下一顶点结点 ; info 用于对节点编号 vi、 负荷节点标识 flag、 负荷节点阻抗值 Zi、 闭环负荷节点破环后增加的虚拟节点编号 vr等 数据信息的存储 ; firstin 指针指向第一个以该点为终点的支路 ; firstout 指针指向第一 。
30、个以该点为出发点的支路 ; 所述的边结点由 bpoint 指针、 epoint 指针、 info 指针、 elink 指 针和 blink 指针五个部分组成, 其中, bpoint 指示支路的出发点 ; epoint 指示支路的终点 ; info存储支路阻抗 ; elink指针指向终点相同的下一条支路 ; blink指针指向出发点相同的 下一条支路。 0063 本实施例的十字链表在构建前, 需在配电网原始接线图上进行一次节点编号, 且 编号方案任意, 如图 2 所示, 7 个节点编号为 0-6, 规则保证电源节点编号为 0 其它节点无遗 漏即可, 此后再也无需进行额外的节点优化编号。在根据节点。
31、数目构建十字链表后还需按 照节点编号由小到大的顺序依次填充所设置的十字链表。 对于顶点节点 ; 若为负荷节点时, 置负荷节点标识 flag vi( 即负荷节点编号 )、 vr 0, 同时记录负荷节点阻抗值 Zi; 若为 内节点时上述参数统一设置为 0。对各边节点记录以 l 为起点, k 为终点的支路阻抗 Z(l, k) 完成对十字链表的初始化。 0064 当配电网络物理结构发生改变进行网络重构时, 只需在记录其物理拓扑结构的十 字链表中添加或删除顶点结点、 边结点, 并改变相关指针指向即可。 0065 以 7 节点系统为例, 说明在十字链表上的网络重构过程。图 2 为配电网络原始接 线方式, 。
32、对所有节点进行编号, 编号顺序任意, 图 4 为其对应的十字链表。当接入 2-5 支路 构成环网时 ( 即将 2 号节点与 5 号节点连接 ), 需新建一边结点 (2, 5) ; 修改 v5顶点 ( 即节 点编号为 5 的节点 ) 的加 firstin 指针指向 (2, 5) 边结点 ; v2顶点结点所连接的 (2, 3) 边 结点的 blink 指针指向 (2, 5) 边结点同时 (2, 5) 边结点的 elink 指针指向 (4, 5) 边结点。 0066 构建出关联矩阵 A : 0067 生成节点阻抗矩阵的关键是构建关联矩阵, 使求解方程组中节点阻抗矩阵中的元 素与各输入支路阻抗、 节点。
33、负荷阻抗建立起正确的对应组合关系。 0068 根据配电网各节点之间的电流流向关系, 对关联矩阵进行了重新定义使之更易理 解和应用 ; 如图 4 所示, 所述的关联矩阵 A 为 (n-1)(n-1) 阶矩阵, i、 j 对应于除去根节点以 外的节点编号, 当存在流入节点 j 的电流且流经节点或支路 i 时 A(i, j) 1, 否则 A(i, j) 说 明 书 CN 103793590 A 9 6/9 页 10 0, A(i, j) 是关联矩阵 A 中 i 行 j 列元素。 0069 以每条回路电流为求解变量, 根据基尔霍夫电压定律, 可得下述回路阻抗方程 组 : 0070 0071 所述的初始。
34、阻抗矩阵 Z 为一复系数对称矩阵, 由对角线元素 Zi, i和非对角线元素 Zi, j构成 ; VS为电源电压 ; n 为节点个数 ; A(k, i) 为关联矩阵 A 中 k 行 i 列元素 ; Z(l, k) 是 十字链表中起点为 l、 终点为 k 的支路阻抗 ; Zi为第 i 个节点的阻抗 ; In为第 n 个负荷节点 的电流。 0072 阻抗矩阵的建立与修改 : 0073 假定每一负荷节点处为一二端网络, 其阻抗为 R+j, 则 0074 P |I|2R, Q |I|2 (2) 0075 式中其中 |U|、 |I|、 分别是二端网络端口处电压 与电流 U、 I 的模和两者的相角差。已知某。
35、一负荷点 vi的 P、 Q、 U, 则 0076 0077 同时假定 U 10+0j, 则负荷节点 vi的初始阻抗 0078 由十字链表、 关联矩阵可构建包含有除供电电源之外的所有配电网负荷节点的初 始阻抗矩阵 Z, 用于第一次 GPU 求解 0079 0080 0081 0082 当 j 是 i 的虚拟节点编号 vr时, 0083 Zi, j Zi, vr+Zi Zj, i (7) 0084 (7) 式中 Zi, vr可由 (6) 式计算。 0085 阻抗矩阵生成算法, 无论配电网是否有环网构成, 该算法都能完成阻抗矩阵元素 的自动化计算。 0086 该算法主要包括判断是否有环网构成和阻抗矩。
36、阵元素计算两个步骤 : 0087 (1) 判断是否有环网构成 : 依次遍历十字链表中顶点节点, 根据负荷节点标识 flag 0 访问其中的负荷节点。若每一负荷节点的 firstin 指针所指支路的 elink 指针 均为 null, 则可判定该配电网无环网构成 ; 若某一负荷节点 vi的 frstin 指针所指支路的 说 明 书 CN 103793590 A 10 7/9 页 11 elink 指针不为空, 则可判定在该负荷节点处形成闭环。则将其 info 数据域中的闭环负荷 节点破环后增加的虚拟节点编号 vr n+(n N-1, N 为配电网节点总数 ), 并在关联矩阵 中添加关于 vr节点。
37、的行和列元素并调整关联矩阵中的元素值。 0088 (2) 阻抗矩阵元素计算 : 依次遍历十字链表中的负荷节点, 若无环网构成, 根据式 (4)(6) 依次计算阻抗矩阵中关于每一负荷节点的回路方程系数, 直至所有负荷节点被访问 完毕即可生成阻抗矩阵 ; 若在某负荷节点 vi处有环网生成, 则根据式 (4)(7)(6), (5)(7) (6) 先后计算关于节点 vi、 vr的回路方程系数, 其他节点的回路方程系数仍由式 (4)(6) 计 算完成。随着负荷节点遍历结束, 初始阻抗矩阵也就生成建立。 0089 基于 GPU 的回路阻抗方程组求解 ; 0090 长期以来, GPU 一直局限于处理图形渲染。
38、的计算任务, 其在硬件上通过增加并行处 理单元和存储控制单元的方式使之具备了同代 CPU 无可比拟的强大并行运算能力和高内 存读写带宽。尤其是 2007 年 NVIDA 公司的 CUDA 统一计算架构的推出, 使得 GPU 具有更好 的可编程性, 可广泛用于图形渲染以外领域的计算。与传统的并行计算技术相比, 基于 GPU 的并行计算具有低成本、 高性价比的显著优势。 0091 一、 CUDA 编程模型 0092 在 CUDA 编程架构下 ( 如图 6 所示 ), 一个应用程序分为 Host 端和 Device 端两部 分 : Host 端是指在 CPU 上可执行的部分, Device 端是在显。
39、卡上执行的部分, 其中运行在 GPU 上的并行计算函数称为 kernel 函数。在程序运行过程中 : 0093 Host 端程序准备好数据并复制到显存中 ; Device 端程序执行 Host 端设置的一个 个kernal函数, 每个kernal函数都将按照线程网格的概念在GPU上运行(每个线程网格可 包含多个线程块, 每个线程块可包含多个线程, 同一线程块内的线程可通过 shared memory 进行通信、 同步 ) ; 尔后 Host 端程序从显卡内存中取回运算结果。 0094 二、 基于 CUDA 的复系数线性方程组求解 0095 求解线性方程组的方法有两大类 : 直接法和迭代法。迭代。
40、法速度快, 但有误差 ; 直接法准确、 可靠, 具体方法有 LU 分解法 ; Gaussian 消元法。从本质上讲 LU 分解法是高 斯消元法的一种变相表达形式, 实质上是将矩阵通过初等行变换变为一个上三角矩阵, 变 换矩阵是其单位下三角矩阵的过程。LU 分解算法众多根据数据的访问模式不同可划分为 left-looking 和 right-looking 算法两类, 其中 left-looking 算法 : 每次迭代运算先计算 矩阵中的一列各元素值, 后对该列元素进行调整, 求解过程不仅与当前列的左边矩阵中的 部分元素相关而且各元素之间也存在计算依存关系, 难以并行处理 ; right-loo。
41、king 算法 : 每次迭代运算先计算矩阵中的一列, 再用该列中的元素去计算该列右边的子矩阵的各元素 值, 其求解计算不相关, 可并行处理。 0096 为此本文根据 right-looking 算法可并行处理的特性结合 CUDA 编程模型以及复 系数矩阵的结构特点, 提出了基于 right-looking LU 分解法的并行 Gaussiam 消去法 ( 如 图 5 所示 ), 将大量计算集中于 GPU 进行处理充分发挥其并行运算的能力, 将回代过程减为 一次, 在保证求解精度不变的情况下使求解速度大为提高。 0097 在 LU 分解法求解过程中, 选取绝对值大的元素作为主元是确保矩阵算法稳定。
42、求 解应用最广泛的技术, 其中列主元法是其最常用的方法。这一处理过程在一般 LU 分解算法 中是一个必不可少的环节。但在配电网潮流计算的直接求解法所形成的阻抗矩阵中 Zii 说 明 书 CN 103793590 A 11 8/9 页 12 Zji, 在完成第 (i-1) 步迭代运算过后第 i 列元素中的 Z(i)ii在该列的第 i 行之后的所有元素 中其绝对值始终最大。 故这一矩阵置换选取列主元的步骤在本配电网潮流计算算法中可省 略, 节省了大量的运算时间。 0098 在算法流程设计中, GPU 上主要进行主列元上各元素和子矩阵中各元素的并 行计算, 可按照 CUDA 编程规则分别编写对应的核。
43、函数 Column_element()、 Submatrix_ element() 进行实现, 其中每个 kernal 函数由多个线程并行完成。在主列元的各元素求解 计算时, 我们安排每个线程计算一个元素值 ; 而在子矩阵各元素的求解计算时, 让每个线程 来计算子矩阵中一列元素值。这是因为如果用每个线程来计算一个元素值, 则所需的线程 数将超越一个块所允许使用的最大线程数。 而在CUDA中有一硬件特性 : 同一块中的线程均 可在同一个流多处理器中同步执行相同的指令序列且可共用shared memory可明显提高运 算速度。 0099 为表述算法方便, 在算法流程图7中用B(i, j)来表示复系。
44、数矩阵中的某一复数元 素, 但在实际编程过程中, 用 R(i, j)、 I(i, j) 对应其实部和虚部 ( 即用与矩阵 B 同等阶数 的矩阵 R、 I 来描述复数矩阵 B)。因为每个块的共享存储器大小为 16 64k, 通常情况下难 以将矩阵 R、 I 整体读入共享存储器, 但在每次循环计算时可将主元列和主元列上第一个元 素的同行元素从全局存储器上读入共享存储器, 而矩阵 R、 I 存于 global memory, 以此充分 发挥共享存储器的访问速度远比全局存储器快得多的优势, 从而减小通信延迟、 提高数据 访问效率。 0100 同时为保持计算精度在循环迭代求解子矩阵复数元素时需遵循以下规。
45、则 ; 0101 1) 两复数矩阵元素的加减法为其对应实部、 虚部相加减 ; 0102 2) 两复数矩阵元素的乘法采用下式进行快速求解 : 0103 B(k, i)*B(i, j) (a+jb)(c+jd) (p-q)+j(s-p-q) (8) 0104 式 (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) 中读取。 0105 3) 两复数矩阵元素的除法采用。
46、下式进行快速求解 : 0106 B(j, i)/B(i, i) (c+jd)/(a+jb) (p+q)/w+j(s-p+q)/w (9) 0107 式 (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) 中读取。 0108 随着两个 kernel 核函数别调用 N-1 次整个 LU 分解过程结束, 但还需由 CPU 调用 函数 back_s。
47、ubstitution() 进行回代计算过程才能完成对复系数线性方程组的求解。 0109 基于回路阻抗法的配电网的潮流计算可以归结为求解一组复系数线性方程组, 是 一种高密度数据运算适用于 GPU 进行快速求解。本实施例中通过 GPU 迭代求解配电网潮流 具体为 : 0110 1) 采用基于 right-looking LU 分解法的并行 Gauss 消去算法对回路阻抗方程组 进行求解, 获得配电网中各负荷节点电流和各负荷节点功率 ; 0111 2) 判断求得的负荷节点功率是否满足迭代终止条件, 若是, 则执行步骤 3), 若否, 则对 Zi, i中的 Zi进行调整, 并对 Zi, i重新赋值。
48、, 然后进行下一次的 GPU 迭代求解, 返回步骤 说 明 书 CN 103793590 A 12 9/9 页 13 1), 所述的迭代终止条件为求得的负荷节点功率与给定负荷功率的差值小于设定的精度 ; 0112 3) 利用所得负荷节点电流先后计算配电网各支路电流 I i和节点电压 Uj, 其中 i、 j 为节点编号 : 0113 0114 0115 其中,A(i, j)为关联矩阵 ; n为节点数量 ; Z(l, i) 为起点为 k 终点为 i 的支路阻抗 ; Iloadj为 j 节点电流。 说 明 书 CN 103793590 A 13 1/4 页 14 图 1 图 2 图 3 说 明 书 附 图 CN 103793590 A 14 2/4 页 15 图 4 图 5 说 明 书 附 图 CN 103793590 A 15 3/4 页 16 图 6 说 明 书 附 图 CN 103793590 A 16 4/4 页 17 图 7 说 明 书 附 图 CN 103793590 A 17 。