Advertisement
gronke

metro portion

Sep 23rd, 2013
43
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.10 KB | None | 0 0
  1. metro = numpy.reshape(isingarray[numpy.random.randint(0,65537)], (asize,asize))
  2.  
  3. metroarray = numpy.zeros(B.size)
  4.  
  5. for j in range(0,B.size,1):
  6.     count = 0
  7.     while count > 1000:
  8.        
  9.         mH = 0
  10.         mHp = 0
  11.        
  12.         for i in range (0,asize,1):
  13.             mH += -metro[0,i]*metro[asize-1,i]
  14.             mH += -metro[i,0]*metro[i,asize-1]
  15.             for k in range (0, asize-1,1):
  16.                 mH += -metro[i,k]*metro[i,k+1]
  17.                 mH += -metro[k,i]*metro[k+1,i]
  18.                
  19.         metro2 = metro
  20.        
  21.         metro2[numpy.random.randint(0,4,1),numpy.random.randint(0,4,1)]*-1
  22.        
  23.         for i in range (0,asize,1):
  24.             mHp += -metro2[0,i]*metro2[asize-1,i]
  25.             mHp += -metro2[i,0]*metro2[i,asize-1]
  26.             for k in range (0, asize-1,1):
  27.                 mHp += -metro2[i,k]*metro2[i,k+1]
  28.                 mHp += -metro2[k,i]*metro2[k+1,i]
  29.        
  30.         if mHp < mH:
  31.             metro = metro2
  32.         if numpy.random.rand() < numpy.exp(-B[i]*(mHp-mH)):
  33.             metro = metro2
  34.         count += 1
  35.     metroarray[j] = mHp
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement