This project is a comprehensive C++ application that implements an intelligent campus maintenance scheduling system using a modified Dijkstra's algorithm. The system dynamically calculates cleaning priorities and generates optimal maintenance routes based on various factors including location importance, cleanliness status, and visiting frequency.
- Intelligent Pathfinding: Modified Dijkstra's algorithm that considers multiple factors for optimal route planning
- Dynamic Priority Calculation: Real-time calculation of cleaning priorities based on:
- Location importance (1-10 scale)
- Cleanliness status (0-100%)
- Time since last cleaning
- Visit frequency
- Road difficulty factors
- File I/O Operations: Save and load campus data from text files
- Admin Authentication: Password-protected configuration reset
- Data Persistence: Automatic backup of campus state
- Interactive Menu System: Easy-to-use command-line interface
- Real-time Status Display: Comprehensive campus status reporting
- Simulation Capabilities: Multi-day maintenance simulations
Improved.cpp: Primary application with complete campus maintenance systemmain.cpp: Modified Dijkstra algorithm implementation (standalone version)- Data Files:
campus_data.txt: Default campus configurationcampus_backup.txt: Persistent data storageadmin.txt: Admin credentials (password: kumarayush0104)visiting_frequency.txt: Node visit tracking data
Location: Represents campus locations with attributes like importance, cleaning frequency, and cleanliness statusPath: Defines connections between locations with distance, travel time, and difficulty factorsCampusMap: Manages locations, paths, and provides utility functionsModifiedDijkstra: Enhanced pathfinding algorithm with priority-based weightingMaintenanceScheduler: Generates daily maintenance routes and manages simulations
The algorithm incorporates multiple weighting factors:
double weight = (alpha * edge.distance) +
(beta * edge.difficulty) +
(gamma * visitFactor);
weight *= (2.0 - priorityFactor);Where:
alpha: Distance weight (default: 0.6)beta: Difficulty weight (default: 0.3)gamma: Visit frequency weight (default: 0.1)priorityFactor: Location priority considerationvisitFactor: Penalty for frequently visited nodes
double priority = (importance * 0.3) +
((100 - cleanliness) * 0.4) +
(visitPriority * 0.1) +
(timeFactor * 0.2);- Windows OS (primary development environment)
- C++ Compiler: g++ from MinGW (C++11 or later)
- Command Line Proficiency: Basic terminal navigation skills
-
Install MinGW:
# Download from http://www.mingw.org/ # Add MinGW bin directory to system PATH # Verify installation: g++ --version
-
Compile the Application:
# For the main campus maintenance system: g++ Improved.cpp -o campus_maintenance.exe # For the standalone Dijkstra implementation: g++ main.cpp -o dijkstra_demo.exe
Ensure these files are present in the executable directory:
campus_data.txt- Default campus configurationadmin.txt- Admin credentials filecampus_backup.txt- Will be created automatically
# Run the campus maintenance system
campus_maintenance.exe
# Run the Dijkstra demonstration
dijkstra_demo.exe- Find Optimal Path: Calculate best route between two locations
- View Campus Status: Display current cleanliness and priority status
- Run Simulation: Execute multi-day maintenance simulation (1-30 days)
- Reset Configuration: Admin-only option to restore default settings
- Exit: Save data and exit program
- Password:
kumarayush0104(stored in admin.txt) - Reset Function: Restores campus to default configuration
- Data Protection: Prevents unauthorized configuration changes
- ID: Unique identifier
- Name: Descriptive location name
- Importance: Priority level (1-10)
- Cleaning Frequency: Preferred days between cleanings
- Visit Priority: Base cleaning priority (1-10)
- Cleanliness Status: Current cleanliness percentage (0-100%)
- Last Cleaned: Days since last cleaning
- From/To: Connected locations
- Distance: Physical distance
- Travel Time: Estimated travel duration
- Difficulty: Road condition factor
- Update cleanliness status based on time elapsed
- Calculate dynamic priorities for all locations
- Select top-priority locations (approximately 1/3 of total)
- Generate optimal route visiting selected locations
- Mark visited locations as cleaned
- Update visit counts and persistence data
=== Day X ===
Path: Library -> Classroom -> Cafeteria -> Library
Route Cost: 15.75
=== Campus Locations Status ===
Location Cleanliness Last Cleaned Priority Visits
----------------------------------------------------------------------------------------
Library 100.00 % 0 days 12.45 15
Classroom 85.50 % 2 days 18.75 8
Cafeteria 92.30 % 1 days 15.20 12
campus_data.txt:
# Locations
0,Library,8,7,6,100.000000,0,0
1,Classroom,6,5,5,85.500000,2,8
2,Cafeteria,7,3,7,92.300000,1,12
# Paths
0,1,150.000000,2.500000,1.200000
0,2,200.000000,3.000000,1.500000
1,2,100.000000,1.500000,1.000000
admin.txt:
Piyush
visiting_frequency.txt:
15 8 12 0 0 0 0
- Time Complexity: O((V + E) log V) for Dijkstra's algorithm
- Space Complexity: O(V + E) for graph representation
- Optimizations: Priority queue implementation for efficient pathfinding
- Compilation: Verify error-free compilation with g++
- Menu Navigation: Test all menu options functionality
- Pathfinding: Validate optimal route calculations
- File Operations: Test save/load functionality
- Admin Features: Verify password protection
- Simulation: Run multi-day simulations for consistency
- Clean compilation without warnings
- Accurate path calculations
- Proper data persistence
- Correct admin authentication
- Realistic simulation results
-
File Not Found Errors:
- Ensure
campus_data.txt,admin.txtare present - Check file permissions in executable directory
- Ensure
-
Compilation Errors:
- Verify g++ installation:
g++ --version - Ensure C++11 support:
g++ -std=c++11 Improved.cpp -o output.exe
- Verify g++ installation:
-
Admin Access Denied:
- Check
admin.txtcontains correct password - Verify file encoding (should be plain text)
- Check
-
Simulation Issues:
- Ensure campus_data.txt has valid format
- Check for missing location or path definitions
- Large graphs may require optimization
- Consider memory usage for very large campuses
- File I/O operations may impact performance on slow storage
- Graphical user interface (GUI)
- Real-time visualization of maintenance routes
- Enhanced reporting and analytics
- Mobile application integration
- IoT sensor integration for real-time cleanliness monitoring
- Machine learning for predictive maintenance scheduling
- Multi-campus support and coordination
- Cloud-based data synchronization
We welcome contributions to enhance miniP! Please follow these guidelines:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Commit changes:
git commit -m 'Add feature' - Push to branch:
git push origin feature-name - Submit a pull request
- Follow C++ best practices
- Include comments for complex logic
- Maintain consistent formatting
- Add tests for new features
This project is currently unlicensed. Please contact the authors for usage permissions.
- Ayush Kumar
- Mithun Dutta
- Piyush Wadadare
- Professor Abhik Mukherjee for guidance and support
- All team members for collaborative effort
- C++11 with Standard Template Library (STL)
- Modified Dijkstra's Algorithm
- File I/O Operations for data persistence
- Priority Queue for efficient pathfinding
- v1.0 (Current): Initial release with core functionality
- Basic campus management
- Modified Dijkstra algorithm
- File persistence
- Admin features
- Simulation capabilities
For questions, issues, or suggestions:
- Check the troubleshooting section above
- Review the code comments for implementation details
- Contact the development team for assistance
Making Campus Maintenance Smarter and More Efficient