Assignment Search Framework
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Pages
Assignment Search Framework Documentation

This document provides information on using the given framework for the assignment. If you are not using this framework for your assignment, please see see File Input Formats regarding the format of the files you are supposed to use for experiments. If you are using this framework for the assignment, this page will describe how to compile and run the relevant experiment files. You will also want to see information on the architecture of the framework at the page Framework Architecture, and tips on how to implement the parts needed for the assignment on the Assignment Tips page. If you are less familiar with C++, we have included the following C++ Tips page. Finally, Code Conventions lists some information on the coding conventions that were used.

Compiling the System

To compile the code in the framework, go into the subdirectory called 'build' and run 'make'. The code assumes that you have g++ installed. Testing suggests it should run on most Linux systems provided your version of g++ is new enough. We have tested to ensure that it compiles successfully on the CDF system, so that is one option as a place to run your experiments.

If you have issues compiling on a Linux machine, it may just be that the wrong includes are used for the system in question. Please post any such issues to Piazza, as other students in the class may have suggestions for how to fix the issue. We will also try to aide in any problems that come up

We make no guarantees that it will run on a Mac or Windows platform, and we won't be providing much troubleshooting in those cases. However, early tests suggest it may run successfuly on Macs (though minor tweaks may be necessary).

Running Experiments

Compiling the code will create a number of '.obj' files in the 'obj' subdirectory. These are the object files for the problem that are linked together to create the three binaries you will use to run your experiments. These binaries are in the 'bin' folder. They each correspond to experiments on a different domain. More information on these is fiven below.

Tile Puzzle Experiments

The binary for the tile puzzle experiments is called 'tiles'. This binary runs the code in the file 'src/experiments/tile_experiments.cpp'. This code that is there currently runs a standard A* instance on 100 sliding tile puzzles with 3 rows and 4 columns, and prints out the optimal cost of each problem as well as the number of node expansions and unique node expansions on each problem. These problems are the same ones you are to use for your experiments.

Starcraft Map Experiments

The binary for running pathfinding experiments on the provided map 'starcraft_bgh.map' is called 'starcraft_map'. This binary runs the code in the file 'src/experiments/starcraft_map_experiments.cpp'. This code currently runs a standard A* instance on 100 pathfinding problems in this domain, and prints out the optimal cost of each problem as well as the number of node expansions and unique node expansions on each problem. These problems are the sames ones you are to use for your experiments.

Empty Grid Experiments

The binary for running pathfinding experiments on an empty grid is called 'empty_map'. This code currently loads in a map that doesn't exist called 'empty_grid.map'. You will need to build such a map to complete the assignment. You will also need to set up the required experiments. See the 'src/experiments/starcraft_map_experiments.cpp' file to see how to properly set up a map pathfinding experiment on a loaded map.