Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Hipster: An Open Source Java Library for Heuristic Search.

Hipster: An Open Source Java Library for Heuristic Search.

These slides presents the basics of Hipster: a free, open source Java library for heuristic search algorithms. The motivation of developing Hipster is the lack of standard Java search libraries with an extensible, flexible, simple to use model. Moreover, most of the libraries for search algorithms rely on recursive implementations which do not offer fine-grained control over the algorithm. Hipster provides a wide variety of classical search algorithms implemented in an iterative way like Dijkstra, A*, IDA*, AD* and more. In order to facilitate the use and integration with most research, commercial and non-commercial projects, the software is developed under the open source Apache 2.0 License. Hipster was successfully applied in two different research projects in the areas of Web service composition and motion planning. Source code, documentation, binaries and examples can be found at https://github.com/citiususc/hipster.

C82e4f1c4a6c371ffe31cfaa9d892251?s=128

Pablo Rodríguez Mier

June 30, 2014
Tweet

Transcript

  1. Hipster: An Open Source Java Library for Heuristic Search Pablo

    Rodríguez-Mier, Adrián González-Sieira, Manuel Mucientes, Manuel Lama, Alberto Bugarín. Centro Singular de Investigación en Tecnoloxías da Información Universidade de Santiago de Compostela 16 de junio de 2014 citius.usc.es
  2. Problem Solving as State Space Search - I Many AI

    problems can be formulated as State Space Search. We have a problem and we need to find a solution: Where do we start from? What is the solution of the problem? How can we assess the quality of a solution of a problem? Which actions or steps can we take in order to solve it? How can we estimate how far we are from the solution during the search? Examples: 16 de junio de 2014 1/26
  3. Problem Solving as State Space Search - II In a

    nutshell, a state space search problem is defined in terms of states, actions and transitions. States: representation of a particular configuration of our problem. Initial state: where we start searching from. Goal state: state which represents a valid solution. Actions: description of the possible actions or movements that we can do from a given state. Transitions: describe how actions lead from one given state to a different state. The solution to a problem is the sequence of actions that lead from the initial state to the goal state. 16 de junio de 2014 2/26
  4. 8-Puzzle game example - Step 1 16 de junio de

    2014 3/26
  5. 8-Puzzle game example - Step 2 16 de junio de

    2014 4/26
  6. 8-Puzzle game example - Step 3 16 de junio de

    2014 5/26
  7. 8-Puzzle game example - Step 4 16 de junio de

    2014 6/26
  8. 8-Puzzle game example - Step 5 16 de junio de

    2014 7/26
  9. 8-Puzzle game example - Step 6 16 de junio de

    2014 8/26
  10. Motivation - I Why did we create Hipster? There is

    an important lack of standard implementations of algorithms in Java. Most implementations are neither extensible nor flexible: The search process cannot be controlled. Costs are usually floats or doubles, there is no way to use complex custom costs. There is no way to handle more than one single goal. ... Graph specific libraries are not always suitable for problem solving! 16 de junio de 2014 9/26
  11. Motivation - II Project Goals Iterative algorithms. while(search.hasNext()) search.next(); Flexible,

    extensible, reusable. Hipster.createAStar(problem).search(goal); Hipster.createIDA(problem).search(goal); Powerful, simple, strong-typed API. Generic types → compile-time type safety. Builders to assist the specification of search problems. Highly-tested code. Unit tests, continuous integration in the cloud. Open-Source. Permissive Apache 2.0 (GPL compatible) license. 16 de junio de 2014 10/26
  12. Currently implemented algorithms Uninformed search (no heuristics) Depth First Search

    (DFS) Breadth First Search (BFS) Dijkstra’s algorithm Bellman-Ford Informed search A* algorithm Iterative Deepening A* (IDA*) Anytime Dynamic A* (AD*) Local search Hill-climbing. Enforced Hill-climbing. 16 de junio de 2014 11/26
  13. Solving 8-Puzzle with Hipster 8-Puzzle state space formulation example States:

    8-Puzzle represented as an array of numbers. Actions: movements of the empty tile (RIGHT, LEFT, UP, DOWN). Transitions: state × action → state’ (board with the tiles swapped). Example: {5,4,0,7,2,6,8,1,3} × LEFT = {5,0,4,7,2,6,8,1,3} Solution: minimal sequence of actions from initial to goal 16 de junio de 2014 12/26
  14. Solving 8-Puzzle with Hipster - Step 1 16 de junio

    de 2014 13/26
  15. Solving 8-Puzzle with Hipster - Step 2 16 de junio

    de 2014 14/26
  16. Solving 8-Puzzle with Hipster - Step 3 16 de junio

    de 2014 15/26
  17. Solving 8-Puzzle with Hipster - Step 4 16 de junio

    de 2014 16/26
  18. Solving 8-Puzzle with Hipster - Step 5 16 de junio

    de 2014 17/26
  19. Solving 8-Puzzle with Hipster - Step 6 16 de junio

    de 2014 18/26
  20. Solving 8-Puzzle with Hipster - Step 7 16 de junio

    de 2014 19/26
  21. Solving 8-Puzzle with Hipster - Step 8 Finally, we select

    an algorithm to perform the search until the goal state is reached. List<Integer> goalState = Arrays.asList(0,1,2,3,4,5,6,7,8); Hipster.createDijkstra(p).search(goalState); 16 de junio de 2014 20/26
  22. Different ways to search Search can also be done in

    multiple ways. Automatic search: Hipster.createAStar(p).search(goalState); Automatic search with event listeners: Hipster.createAStar(p).search(new Algorithm. SearchListener() { public void handle(Object node){ ... } }); Fine-grained iterative search: for (Node n : Hipster.createAStar(p)) { System.out.println("Current state is " + n.state()); if (n.state().equals(goalState)) ... } 16 de junio de 2014 21/26
  23. Java 8 lambda expressions Boilerplate code (anonymous interface implementations) can

    be removed using Java 8 lambda expressions: 16 de junio de 2014 22/26
  24. Hipster in Action Solving 8-Puzzle problem with Hipster. 3 minute

    video tutorial: http://youtu.be/ZPOhmnzOKA4 16 de junio de 2014 23/26
  25. Research projects using Hipster - I Anytime Motion Replanning in

    State Lattices for Wheeled Robots. Use of the Anytime Dynamic A* (AD*) for path search with replanning. Custom costs to evaluate the states: Collision probability. Path traversal time. Probability to reach safely the goal state. 16 de junio de 2014 24/26
  26. Research projects using Hipster - II Automatic Web Service Composition

    Backward A* search to minimize the number of services. Heuristics to estimate the distance to the goal. w1 w4 w5 L1 L2 L3 w6 w3 w2 w7 w8 o2 o3 o4 o5 o6 i4 i5 i6 i8 i9 i10 i11 i7 o7 o8 o9 o10 o11 o12 o13 i12 i13 i14 i15 i16 L0 L4 WI WO w9 o1 o14 o15 o16 i1 i2 i3 i17 i18 i19 16 de junio de 2014 25/26
  27. Conclusions A powerful but easy to use Java Library for

    using and developing search algorithms. Open Source, Apache 2.0 license. Suitable for commercial and research projects. Good for prototyping and testing algorithms. Also suitable for teaching. 16 de junio de 2014 26/26
  28. Thanks for listening! Questions? Hipster Web Page http://citiususc.github.io/hipster 16 de

    junio de 2014