Skip to content
 
 

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

noConflict - Timetable Scheduler

An intelligent timetable scheduling system for engineering colleges and educational institutions that uses Genetic Algorithms to generate conflict-free schedules while satisfying complex constraints.

📋 Overview

noConflict automates the tedious process of creating academic timetables by using evolutionary algorithms to find optimal schedules that satisfy various constraints such as faculty availability, lab sessions, and avoiding scheduling conflicts.

✨ Features

  • Genetic Algorithm Engine: Uses tournament selection, uniform crossover, and mutation to evolve optimal schedules
  • Constraint Satisfaction: Automatically satisfies hard constraints like:
    • No faculty teaching multiple classes simultaneously
    • No section scheduled for multiple subjects at the same time
    • Lab sessions kept as consecutive blocks
    • Faculty availability preferences
  • Multi-Period Course Support: Intelligent handling of lab sessions requiring consecutive time slots
  • CSV-Based Data Input: Easy to configure using simple CSV files for:
    • Subjects (courses)
    • Sections (student groups)
    • Faculty members and their availability
  • Multiple Export Formats:
    • Excel (.xlsx) export for easy sharing
    • PDF export for printing
    • CSV export for data analysis
  • JavaFX GUI: User-friendly graphical interface for:
    • Loading data
    • Running the scheduler
    • Viewing generated timetables
    • Exporting results

🔧 Prerequisites

Before running this project, ensure you have the following installed:

  1. Java Development Kit (JDK) 17 or higher

  2. Apache Maven 3.6 or higher

    • Download from Apache Maven
    • Verify installation: mvn -version
  3. System Requirements

    • Operating System: Windows, macOS, or Linux
    • RAM: Minimum 2GB (4GB recommended)
    • Disk Space: ~500MB for dependencies

🚀 Installation

  1. Clone the repository

    git clone https://github.com/NICKSTER0506/noConflict.git
    cd noConflict
  2. Build the project

    mvn clean install
  3. Run the application

    mvn javafx:run

📖 Usage

1. Prepare Your Data

Create or modify CSV files in the data/ directory:

  • subjects.csv: Define your courses

    id,name,code,hoursPerWeek,isLab
    1,Data Structures,CS301,4,false
    2,DBMS Lab,CS302L,3,true
  • sections.csv: Define student sections/groups

    id,name,semester,batch
    1,CS-A,3,2023
  • faculty.csv: Define faculty members and availability

    id,name,department,availability
    1,Dr. Smith,Computer Science,MON-FRI 9:00-17:00

2. Run the Scheduler

  1. Launch the application (mvn javafx:run)
  2. Click "Load Data" to import your CSV files
  3. Configure settings (optional):
    • Population size
    • Mutation rate
    • Maximum generations
  4. Click "Generate Timetable"
  5. View the generated schedule in the GUI

3. Export Results

After generating a timetable:

  • Click "Export to Excel" to save as .xlsx
  • Click "Export to PDF" to save as .pdf
  • Click "Export to CSV" to save as .csv

📁 Project Structure

noConflict/
├── data/                           # Input data files
│   ├── faculty.csv
│   ├── sections.csv
│   └── subjects.csv
├── src/
│   ├── main/
│   │   ├── java/com/scheduler/
│   │   │   ├── engine/            # Genetic algorithm implementation
│   │   │   │   ├── GeneticAlgorithm.java
│   │   │   │   ├── FitnessFunction.java
│   │   │   │   ├── ConstraintSatisfaction.java
│   │   │   │   └── TimetableGenerator.java
│   │   │   ├── model/             # Data models
│   │   │   │   ├── Chromosome.java
│   │   │   │   ├── Gene.java
│   │   │   │   ├── Slot.java
│   │   │   │   ├── Subject.java
│   │   │   │   ├── Section.java
│   │   │   │   └── Faculty.java
│   │   │   ├── ui/                # JavaFX user interface
│   │   │   │   ├── MainApp.java
│   │   │   │   └── DashboardController.java
│   │   │   └── util/              # Utility classes
│   │   │       ├── CsvParser.java
│   │   │       └── DataExporter.java
│   │   └── resources/             # FXML and CSS files
│   └── test/                      # Unit tests
├── tools/                         # Bundled tools (Maven)
├── pom.xml                        # Maven configuration
└── README.md                      # This file

🛠️ Technologies Used

  • Language: Java 17
  • Build Tool: Apache Maven
  • GUI Framework: JavaFX 17.0.2
  • Algorithm: Genetic Algorithm (Evolutionary Computation)
  • Data Processing: OpenCSV 5.7.1
  • Export Libraries:
    • Apache POI 5.2.3 (Excel export)
    • OpenPDF 1.3.30 (PDF export)
  • Testing: JUnit 5.9.2

🧬 Algorithm Overview

The project uses a Steady-State Genetic Algorithm with the following components:

  1. Representation:

    • Chromosome = Complete timetable
    • Gene = Single class assignment (slot + subject + section + faculty)
  2. Selection: Tournament selection (size 5)

  3. Crossover: Uniform crossover at gene group level (preserves lab blocks)

  4. Mutation:

    • Swap mutation (exchanges two classes within same section)
    • Re-roll mutation (randomly reassigns time slots)
  5. Fitness Function: Evaluates solutions based on:

    • Hard constraints (no conflicts)
    • Soft constraints (preferences like spreading out subjects)
  6. Constraint Repair: Post-processing to fix any remaining conflicts

🤝 Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Ideas for Contributions:

  • Add support for room/venue constraints
  • Implement additional export formats
  • Add more sophisticated fitness functions
  • Improve the UI/UX
  • Add more comprehensive unit tests
  • Support for half-day schedules
  • Multi-language support

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

👥 Authors

🐛 Known Issues

  • Warnings about sun.misc.Unsafe when running on Java 24+ (these are harmless and don't affect functionality)
  • Very large datasets (>100 sections) may require longer evolution times

📧 Support

If you encounter any issues or have questions:

  1. Check the Issues page
  2. Create a new issue with a detailed description
  3. Include your Java version and error messages if applicable

🙏 Acknowledgments

  • Inspired by the NP-complete nature of the timetable scheduling problem
  • Built to help educational institutions automate their scheduling process
  • Thanks to all contributors who help improve this project

Happy Scheduling! 📅✨

About

Java based Time Table maker that takes all forms of data and constraints to generate the time tables of multiple classes with 'no conflicts'

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages