Implementation of Robot Pathfinding using A* Search and Timetable Generation using Constraint Satisfaction Problem (CSP) solving techniques.
- Overview
- Problems Implemented
- Features
- Installation
- Usage
- Project Structure
- Results
- Documentation
- Dependencies
- Author
This repository contains implementations of two fundamental AI problems:
- Robot Path-finding Problem: Finding optimal paths in grid environments using A* search with multiple heuristics
- Timetable Generation Problem: Solving course scheduling as a Constraint Satisfaction Problem using backtracking algorithms
Both implementations include comprehensive performance analysis, visualization, and comparison of different algorithmic approaches.
Implements A* search algorithm with three different heuristics to find optimal paths for a robot navigating through a grid with obstacles.
Heuristics Compared:
- Manhattan Distance (L1 norm)
- Euclidean Distance (L2 norm)
- Chebyshev Distance (Lβ norm)
Key Features:
- Random grid generation with configurable obstacle probability
- Automated testing across 30 trials
- Performance metrics: path length, nodes expanded, execution time, success rate
- Visual path representations with color-coded grids
Formulates course scheduling as a CSP and solves it using three backtracking variants.
Methods Compared:
- Basic Backtracking
- Backtracking with Variable/Value Ordering Heuristics (MRV + LCV)
- Backtracking with Forward Checking
Constraints Handled:
- Room capacity constraints
- No room conflicts (same room, same time)
- No teacher conflicts (same teacher, same time)
Key Features:
- Realistic timetable generation with multiple courses, rooms, and timeslots
- Automated testing across 10 trials
- Performance metrics: execution time, backtracks, constraint checks, success rate
- Visual timetable layouts for each room
- π Automated Execution: Single file execution runs complete experiments
- π Comprehensive Metrics: Multiple performance indicators tracked
- π Visual Analysis: Automatic generation of comparison graphs and visualizations
- πΎ Data Export: Results saved in JSON format for further analysis
- π Detailed Statistics: Mean and standard deviation calculations
- π¨ Color-coded Visualizations: Clear, publication-ready graphs
- Python 3.8 or higher
- pip package manager
git clone https://github.com/Kirthik1824/CSMI_17_AI_Assignment.git
cd ai-assignmentpip install -r requirements.txtpython robot_pathfinding.pyOutput Files Generated:
heuristics_comparison.png- Performance comparison graphpath_trial1_Manhattan.png- Sample path visualization (Manhattan)path_trial1_Euclidean.png- Sample path visualization (Euclidean)path_trial1_Chebyshev.png- Sample path visualization (Chebyshev)pathfinding_results.json- Detailed numerical results
python timetable_csp.pyOutput Files Generated:
csp_methods_comparison.png- Performance comparison graphtimetable_basic.png- Timetable using basic backtrackingtimetable_heuristics.png- Timetable using heuristicstimetable_forward_checking.png- Timetable using forward checkingtimetable_results.json- Detailed numerical results
Both scripts can be customized by modifying parameters in the if __name__ == "__main__": section:
Robot Pathfinding:
results = run_experiments(num_trials=30, grid_size=(20, 20))Timetable CSP:
csp = TimetableCSP(num_courses=8, num_rooms=3, num_timeslots=5, num_days=5)ai-assignment/
β
βββ robot_pathfinding.py # Problem 1: A* search implementation
βββ timetable_csp.py # Problem 2: CSP implementation
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ report.pdf # Assignment report (LaTeX compiled)
β
βββ results/ # Generated output directory
β βββ pathfinding_results.json
β βββ timetable_results.json
β βββ *.png # All visualization images
β
βββ docs/ # Documentation
βββ assignment_report.tex # LaTeX source for report
| Heuristic | Avg Path Length | Avg Nodes Expanded | Avg Time (ms) | Success Rate |
|---|---|---|---|---|
| Manhattan | Optimal | Lowest | Fastest | ~95% |
| Euclidean | Optimal | Medium | Medium | ~95% |
| Chebyshev | Optimal | Highest | Slowest | ~95% |
Key Finding: Manhattan distance is most efficient for 4-directional grid movement.
| Method | Avg Backtracks | Avg Constraint Checks | Avg Time (s) | Success Rate |
|---|---|---|---|---|
| Basic Backtracking | Highest | Medium | Slowest | 100% |
| With Heuristics | Medium | Medium | Medium | 100% |
| Forward Checking | Lowest | Lowest | Fastest | 100% |
Key Finding: Forward checking provides best performance through early failure detection.
Detailed documentation is available in:
- Assignment Report (
report.pdf): Complete analysis with algorithms, experimental setup, and results - Code Comments: Inline documentation in both Python files
- Docstrings: Function-level documentation for all major methods
numpy>=1.21.0
matplotlib>=3.4.0
Install all dependencies:
pip install -r requirements.txtCourse: CSMI17 β Artificial Intelligence
Institution: NIT Tiruchirappalli
Semester: 7
This is an academic assignment project. However, suggestions and improvements are welcome:
- Fork the repository
- Create a feature branch (
git checkout -b feature/improvement) - Commit your changes (
git commit -am 'Add improvement') - Push to the branch (
git push origin feature/improvement) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Your Name
- GitHub: @Kirthik1824
- Email: kirthik.nitt@gmail.com
- Course instructor and teaching assistants
- Russell & Norvig's "Artificial Intelligence: A Modern Approach"
- Python scientific computing community (NumPy, Matplotlib)
For questions or discussions about this project:
- Open an issue on GitHub
- Email: kirthik.nitt@gmail.com
β Star this repository if you found it helpful!