33 lines
1.3 KiB
Markdown
33 lines
1.3 KiB
Markdown
|
# bano
|
||
|
|
||
|
Sokoban solver using genetic algorithms.
|
||
|
|
||
|
## Description
|
||
|
|
||
|
bano is a sokoban solver that uses a genetic algorithm to calculate the most
|
||
|
optimal solution for a given map. The heuristic approach covered by the tool
|
||
|
is twofold and can be described as follows:
|
||
|
|
||
|
1. Place the boxes in the given goals in as fewer steps as possible. While
|
||
|
this is not guaranteed, it can be improved either through subsequent iterations
|
||
|
or decreasing the search space (controllable via -d/--ds argument).
|
||
|
2. If any box is placed in such a way that the agent can no longer move it, this
|
||
|
is considered a losing condition and it is no longer evaluated. The evaluation
|
||
|
is scored by calculating the individual box distances and the highest scoring
|
||
|
agents end up as a parent to newly bred agents.
|
||
|
|
||
|
The approach described above is not computationally efficient compared to others and
|
||
|
has a tendency to "halt" with more complex problem spaces, therefore it is more suitable
|
||
|
for smaller levels. To avoid early convergence one can tune the parameters according to the
|
||
|
complexity of the layout.
|
||
|
|
||
|
## Usage
|
||
|
|
||
|
`bano --nt 4 -d 4096 -m 256 --ps 8192 < map`
|
||
|
|
||
|
`bano '8X|4.1@*gX|8X'`
|
||
|
|
||
|
## Maps
|
||
|
|
||
|
Some of the maps in the map directory were manually altered and are taken from [here](https://github.com/begoon/sokoban-maps/blob/master/maps/sokoban-maps-60-plain.txt).
|