From 45c5c713d85c89fe38676a2b5d1c7cbdee0d1f6a Mon Sep 17 00:00:00 2001 From: SLotAbr <49324598+SLotAbr@users.noreply.github.com> Date: Thu, 24 Aug 2023 05:21:20 +0400 Subject: [PATCH] improved algorithm for getLayer --- WANNRelease/WANN/wann_src/ind.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/WANNRelease/WANN/wann_src/ind.py b/WANNRelease/WANN/wann_src/ind.py index 54c41112..b6779e83 100644 --- a/WANNRelease/WANN/wann_src/ind.py +++ b/WANNRelease/WANN/wann_src/ind.py @@ -172,16 +172,13 @@ def getLayer(wMat): wMat[wMat!=0]=1 nNode = np.shape(wMat)[0] layer = np.zeros((nNode)) - while (True): # Loop until sorting is stable - prevOrder = np.copy(layer) - for curr in range(nNode): - srcLayer=np.zeros((nNode)) - for src in range(nNode): - srcLayer[src] = layer[src]*wMat[src,curr] - layer[curr] = np.max(srcLayer)+1 - if all(prevOrder==layer): - break - return layer-1 + iNodes = np.nonzero(wMat.sum(axis=0)==0) + i = 1 + while iNodes[0].size > 0: + iNodes = np.nonzero(wMat[iNodes].sum(axis=0)) + layer[iNodes] = i + i+=1 + return layer # -- ANN Activation ------------------------------------------------------ -- #