pathfinding


SUBMITTED BY: itsDaveLad

DATE: March 10, 2016, 3:25 p.m.

FORMAT: Text only

SIZE: 4.3 kB

HITS: 611

  1. static void PathFinding()
  2. {
  3. QLearning q = new QLearning();
  4. QAction fromTo;
  5. QState state;
  6. string stateName;
  7. string stateNameNext;
  8. // ----------- Begin Insert the path setup here -----------
  9. // insert the end states here, e.g. goal state
  10. q.EndStates.Add(StateNameEnum.Kitchen.EnumToString());
  11. // State Bedroom
  12. stateName = StateNameEnum.Bedroom.EnumToString();
  13. q.AddState(state = new QState(stateName, q));
  14. // action up
  15. stateNameNext = StateNameEnum.Bedroom.EnumToString();
  16. state.AddAction(fromTo = new QAction(stateName, new QActionName("up")));
  17. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  18. // action right
  19. stateNameNext = StateNameEnum.Hallway.EnumToString();
  20. state.AddAction(fromTo = new QAction(stateName, new QActionName("right")));
  21. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  22. // action down
  23. stateNameNext = StateNameEnum.Bedroom.EnumToString();
  24. state.AddAction(fromTo = new QAction(stateName, new QActionName("down")));
  25. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  26. // action left
  27. stateNameNext = StateNameEnum.Bedroom.EnumToString();
  28. state.AddAction(fromTo = new QAction(stateName, new QActionName("left")));
  29. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  30. // State Hallway
  31. stateName = StateNameEnum.Hallway.EnumToString();
  32. q.AddState(state = new QState(stateName, q));
  33. // action up
  34. stateNameNext = StateNameEnum.Hallway.EnumToString();
  35. state.AddAction(fromTo = new QAction(stateName, new QActionName("up")));
  36. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  37. // action right
  38. stateNameNext = StateNameEnum.Hallway.EnumToString();
  39. state.AddAction(fromTo = new QAction(stateName, new QActionName("right")));
  40. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  41. // action down
  42. stateNameNext = StateNameEnum.Stairwell.EnumToString();
  43. state.AddAction(fromTo = new QAction(stateName, new QActionName("down")));
  44. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  45. // action left
  46. stateNameNext = StateNameEnum.Bedroom.EnumToString();
  47. state.AddAction(fromTo = new QAction(stateName, new QActionName("left")));
  48. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  49. // State Stairwell
  50. stateName = StateNameEnum.Stairwell.EnumToString();
  51. q.AddState(state = new QState(stateName, q));
  52. // action up
  53. stateNameNext = StateNameEnum.Hallway.EnumToString();
  54. state.AddAction(fromTo = new QAction(stateName, new QActionName("up")));
  55. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  56. // action right
  57. stateNameNext = StateNameEnum.Stairwell.EnumToString();
  58. state.AddAction(fromTo = new QAction(stateName, new QActionName("right")));
  59. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  60. // action down
  61. stateNameNext = StateNameEnum.Stairwell.EnumToString();
  62. state.AddAction(fromTo = new QAction(stateName, new QActionName("down")));
  63. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0));
  64. // action left
  65. stateNameNext = StateNameEnum.Kitchen.EnumToString();
  66. state.AddAction(fromTo = new QAction(stateName, new QActionName("left")));
  67. fromTo.AddActionResult(new QActionResult(fromTo, stateNameNext, 1.0){Reward = 100});
  68. // ----------- End Insert the path setup here -----------
  69. q.RunTraining();
  70. q.PrintQLearningStructure();
  71. q.ShowPolicy();
  72. }
  73. }
  74. }

comments powered by Disqus