From 5d16aa45d16802892d5a638247b13e175597585d Mon Sep 17 00:00:00 2001 From: "dmy@lab" Date: Fri, 1 May 2015 13:00:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=A2=E6=88=90=E5=AF=BC=E7=BA=B3=E7=9F=A9?= =?UTF-8?q?=E9=98=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: dmy@lab --- YMatrix.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/YMatrix.py b/YMatrix.py index a4405c1..c103fc3 100644 --- a/YMatrix.py +++ b/YMatrix.py @@ -10,17 +10,22 @@ def FormYMatrix(lineBlock,transBlock,busNum): r=lineBlock[:,3] x=lineBlock[:,4] gb=1/(r+1j*x) - y=sparse.coo_matrix((gb,(lineBlock[:,1]-1,lineBlock[:,2]-1)),shape=(busNum,busNum)) + y=sparse.coo_matrix((-gb,(lineBlock[:,1]-1,lineBlock[:,2]-1)),shape=(busNum,busNum)) + y=sparse.coo_matrix((-gb,(lineBlock[:,2]-1,lineBlock[:,1]-1)),shape=(busNum,busNum)) + y-=sparse.coo_matrix((y.sum(1).A1,(numpy.arange(int(busNum)),numpy.arange(int(busNum)))),shape=(busNum,busNum)) #加接地支路 b2=lineBlock[:,5] y+=sparse.coo_matrix((1j*b2,(lineBlock[:,1]-1,lineBlock[:,1]-1)),shape=(busNum,busNum)) y+=sparse.coo_matrix((1j*b2,(lineBlock[:,2]-1,lineBlock[:,2]-1)),shape=(busNum,busNum)) - print(y.sum(1)) - print(numpy.arange(int(busNum)).shape[0]) - y+=sparse.coo_matrix((numpy.array(y.sum(1)),(numpy.arange(int(busNum)),numpy.arange(int(busNum)))),shape=(busNum,busNum)) #加变压器 - #TODO:没有考虑变比 transX=transBlock[:,3] transR=transBlock[:,4] transGB=1/(transR+1j*transX) - y+=sparse.coo_matrix((transGB,(transBlock[:,1]-1,transBlock[:,2]-1)),shape=(busNum,busNum)) \ No newline at end of file + k=transBlock[:,5] + y+=sparse.coo_matrix((-transGB/k,(transBlock[:,1]-1,transBlock[:,2]-1)),shape=(busNum,busNum)) + y+=sparse.coo_matrix((-transGB/k,(transBlock[:,2]-1,transBlock[:,1]-1)),shape=(busNum,busNum)) + #变压器对角 + y+=sparse.coo_matrix((transGB/k/k,(transBlock[:,1]-1,transBlock[:,1]-1)),shape=(busNum,busNum)) + y+=sparse.coo_matrix((transGB,(transBlock[:,2]-1,transBlock[:,2]-1)),shape=(busNum,busNum)) + #TODO:没有电容接地支路 + return y