value_iteration.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @author: huiming zhou
  5. """
  6. import env
  7. import tools
  8. import motion_model
  9. import numpy as np
  10. import copy
  11. class Value_iteration:
  12. def __init__(self, x_start, x_goal):
  13. self.u_set = motion_model.motions # feasible input set
  14. self.xI, self.xG = x_start, x_goal
  15. self.T = 500
  16. self.gamma = 0.9
  17. self.obs = env.obs_map() # position of obstacles
  18. self.lose = env.lose_map()
  19. self.name = "value_iteration, T=" + str(self.T) + ", gamma=" + str(self.gamma)
  20. env.show_map(self.xI, self.xG, self.obs, self.lose, self.name)
  21. def iteration(self):
  22. value_table = {}
  23. policy = {}
  24. for i in range(env.x_range):
  25. for j in range(env.y_range):
  26. if (i, j) not in self.obs:
  27. value_table[(i, j)] = 0
  28. for k in range(self.T):
  29. value_table_update = copy.deepcopy(value_table)
  30. for key in value_table:
  31. if __name__ == '__main__':
  32. x_Start = (5, 5) # Starting node
  33. x_Goal = (49, 5) # Goal node
  34. VI = Value_iteration(x_Start, x_Goal)