Metadata-Version: 2.4
Name: satisfaculty
Version: 0.1.0
Summary: A course scheduling optimization tool using integer linear programming
Author-email: Zachary Sunberg <zachary.sunberg@colorado.edu>
License: MIT
Project-URL: Repository, https://github.com/zsunberg/satisfaculty
Keywords: scheduling,optimization,integer-programming,course-scheduling
Classifier: License :: OSI Approved :: MIT License
Requires-Python: ~=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: pandas~=2.3
Requires-Dist: numpy~=2.4
Requires-Dist: PuLP~=3.3
Requires-Dist: matplotlib~=3.10
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Dynamic: license-file

# Satisfaculty

A course scheduling optimization tool using integer linear programming.

## Installation

```bash
python3 -m venv venv
source venv/bin/activate
pip install -e .
```

## Usage

```python
from satisfaculty import InstructorScheduler, MinimizeClassesBefore

scheduler = InstructorScheduler()
scheduler.load_rooms('example/rooms.csv')
scheduler.load_courses('example/courses.csv')
scheduler.load_time_slots(`example/time_slots.csv')

objectives = [MinimizeClassesBefore("9:00")]
scheduler.lexicographic_optimize(objectives)
scheduler.visualize_schedule()
```

This will output a complete schedule:

![Example schedule output](docs/schedule_visual.png)

## Documentation

- [Objectives Guide](docs/OBJECTIVES_GUIDE.md)
