I have an original matrix
originalOD = np.array([[1,2,4], [3,2,3], [4,2,2]])
#### Now we can sum productions and attractions####
originalD=np.sum(originalOD,axis=0)
originalO=np.sum(originalOD,axis=1)
And would like to have original and original to converge to:
targetD=np.array([16,9,9])
targetO=np.array([14,8,12])
which I am trying to do in a loop using some converge criteria:
Convergence=0
while True:
xD=targetD/originalD
newOD=originalOD*xD
newD=np.sum(newOD,axis=0)
xO=targetO/originalO
newOD=originalOD*xO
newO=np.sum(newOD,axis=1)
Convergence = (sum(newO)/sum(targetO)+sum(newD)/sum(targetD))/2
print('Converged:', Convergence)
if Convergence<1.01 and Convergence>0.99:
break
else:
continue
It is running, but it seems like the xD and xO are not changing in the subsequent loops, i.e.
Converged: 1.0220588235294117
Converged: 1.0220588235294117
Converged: 1.0220588235294117
Converged: 1.0220588235294117
Any ideas on what to change in the code?