System for Yielding Multi-dimensional Problem Heuristic Optimization and Navigation
This is a C++ project focused on implementing search algorithms for rational agent problems. It provides a flexible, extensible framework for defining states, actions, and search strategies, along with example problems and test cases to ensure correctness and performance.
The inspiration is drawn from a university course on Artificial Intelligence, where students learn about rational agents, search algorithms, and problem-solving techniques. By providing a structured, modular codebase, this project aims to help students and enthusiasts understand and experiment with these concepts in a practical, hands-on way.
-
C++20 Compiler:
Ensure you have a modern C++ compiler that supports C++20 (e.g.,g++
>= 10 orclang++
>= 12). -
CMake (3.29 or newer):
Used for building the project. -
GoogleTest Library (optional for running tests):
Make suregtest
andgtest_main
libraries are installed on your system, or use the provided configuration if you have them in your environment.
-
Clone the Repository:
git clone https://github.com/velocitatem/Symphony cd ai_rational_agents
-
Configure and Build:
mkdir build && cd build cmake .. make
After building, the executables will be located in the build directory:
mindmap
root((Symphony))
SubSystem 1 [Search Algorithms]
AStarSearch
BeamSearch
BreadthFirstSearch
SubSystem 2 [Problems]
MazeProblem
MazeState
StudyProblem
StudyState
TaskScheduler
TaskSchedulerState
VacuumCleaner
VacuumState
SubSystem 3 [Core Components]
State
Action
Problem
Solution
SubSystem 4 [Utilities]
Definitions.h
Search.h
TaskScheduler.h
SimpleMaze.h
StudyPath.h
Vacuum.h
-
Add New Problems:
Create classes extendingProblem
andState
, defining domain-specific logic, actions, and heuristics. -
Implement Additional Search Algorithms:
ExtendSearch
with new search strategies (e.g.,DepthFirstSearch
,UniformCostSearch
,AStarSearch
) and integrate them into the problem-solving pipeline. -
Additional Testing and CI:
Add more test cases and integrate Continuous Integration (CI) to ensure code quality and maintainability.
Contributions are welcome! If you find issues or want to add features, feel free to:
- Fork the repository
- Create a new branch (
git checkout -b feature/my-feature
) - Commit your changes (
git commit -am 'Add my feature'
) - Push the branch (
git push origin feature/my-feature
) - Create a new Pull Request
symphony is designed to be a springboard for further exploration into rational agents, search algorithms, and AI problem-solving techniques. With its clean architecture and example-driven approach, you can quickly adapt and extend it for your own research or educational projects.