Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. from random import sample
  2.  
  3.  
  4. class Item:
  5. def __init__(self, value, weight):
  6. self.value = value
  7. self.weight = weight
  8.  
  9.  
  10. class HillClimbingRucsac:
  11. def __init__(self, path):
  12. self.no_items = -1
  13. self.max_weight = -1
  14. self.items = []
  15. self.solution = []
  16. self.current_weight = 0
  17. self.current_value = 0
  18. self.read_data(path)
  19.  
  20. def read_data(self, path):
  21. file = open(path, "r")
  22. params = []
  23. for line in file:
  24. words = line.replace("\n", "").split(" ")
  25. params.append(int(words[0]))
  26. params.append(int(words[1]))
  27. file.close()
  28. self.no_items = params[0]
  29. self.max_weight = params[1]
  30.  
  31. for i in range(2, self.no_items, 2):
  32. self.items.append(Item(params[i], params[i + 1]))
  33.  
  34. # initial solution
  35. self.solution = [0 for i in range(0, self.no_items)]
  36.  
  37. def run_hill_climbing(self):
  38. free_positions = []
  39. for i in range(0, self.no_items):
  40. if self.solution[i] == 0:
  41. free_positions.append(i)
  42.  
  43. while free_positions:
  44. position = sample(free_positions, 1)[0]
  45. free_positions.remove(position)
  46. new_sol = self.solution[:]
  47. new_sol[position] = 1
  48. value, weight = self.evaluate(new_sol)
  49. if value > self.current_value:
  50. self.current_value = value
  51. self.current_weight = weight
  52. self.solution = new_sol[:]
  53. print(self.current_value, self.current_weight, self.solution)
  54.  
  55. def evaluate(self, new_sol):
  56. return -1,-1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement