mitkonikov

Simulated Annealing

May 16th, 2023
741
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.77 KB | None | 0 0
  1. def SA...
  2.  
  3. def generate_random_state():
  4.     state = [0 for i in range(n//2)] + [1 for i in range(n-(n//2))]
  5.     return random_shuffle(state)
  6.  
  7. def action(state):
  8.     # 1/2 probability of success
  9.     # u = randint(0, n-1)
  10.     # v = randint(0, n-1)
  11.     # state[u], state[v] = state[v], state[u]
  12.  
  13.     # 100% success
  14.     ind0 = [i for i in range(n) if state[i] == 0]
  15.     ind1 = [i for i in range(n) if state[i] == 1]
  16.     u = randint(0, len(ind0)-1)
  17.     v = randint(0, len(ind1)-1)
  18.     state[ind0[u]], state[ind1[v]] = state[ind1[v]], state[ind0[u]]
  19.     return state
  20.  
  21. def h(state):
  22.     sumA = sum([X[i] for i in range(n) if state[i] == 1]) # sum all elements in A
  23.     sumB = sum([X[i] for i in range(n) if state[i] == 0]) # sum all elements in B
  24.     return abs(sumA - sumB)
  25.  
Advertisement
Add Comment
Please, Sign In to add comment