chen2003qq
New member
- Joined
- May 6, 2024
- Messages
- 1
MjT+1=Sji∑(WijT×Di)
WijT=j∑(Sj/(MjT)λ×fij)Sj/(MjT)λ×fijMj0=∑i∑rSr×firDj×fij
WijT=j∑(Sj/(MjT)λ×fij)Sj/(MjT)λ×fijMj0=∑i∑rSr×firDj×fij
I have the above three equations for calculating the variable M, and it is clear that it is an iterative procedure and the value of M will change as the iteration goes on. All variables, such as S, D and f, are above zero, and T means the iteration number. λ is a constant parameter of which the value will be set manually.
My problem is, that I found that when λ is smaller than 1, M will finally reach convergence, while when λ is bigger than 1, it will not reach convergence. But how to prove that? I made some tries but failed to prove it.
I guess it might involve Jensen's inequality and I could also release a simple code for testing my hypothesis. Here is the code in python:
Could anyone give me some help with that problem?import numpy as np
M = np.array([10, 10, 3])
D = np.array([60,20])
S = np.array([0.1, 0.2, 0.2])
f = np.array([[0.2, 0.4, 30],[0.2,0.6,0.5]])
Q = (S * f).T / (S * f).sum(1)
M = (D * Q).sum(1) / S
P = ((D * f.T).T / (D * f.T).sum(1)).T
l = 0.8 # l is the lambda
S_cast = S / M**l
Q = (S_cast * f).T / (S_cast * f).sum(1)
M = (D * Q).sum(1) / S
for i in range(10000):
M0 = M
S_cast = S / M**l
Q = (S_cast * f).T / (S_cast * f).sum(1)
M = (D * Q).sum(1) / S
print(M) # end for loop
Thanks very much