TMF Tournament Scheduler is a Python application developed as part of a student scientific project.
It automates scheduling for the Young Physicists' Tournament, combining a randomized algorithm with linear programming to generate fair and efficient match schedules.
The application supports both full tournament scheduling and incremental updates, allowing the schedule to continue from previously played rounds.
The program provides a minimal GUI to select input sources and configure options, but all results are saved to output files rather than displayed in the interface.
- Generates complete tournament schedules using a combination of randomized algorithm and linear programming.
- Incrementally updates schedules when some rounds have already been played.
- Supports input from team files or generates teams automatically if no files are provided.
- Saves results in structured output files.
- GUI allows selecting input files and scheduling options.
- Python 3.13 compatible; requires
puplandpandaslibraries. - Standalone executable available (
.exe) for users without Python installed.
.
├── nazvy_timy/ # Input files with team names
│ ├── ExampleNameTema.csv
│
├── predrozvrh/ # Partial schedules / ongoing rounds
│ ├── ExamplePartialschedules .csv
│
├── rozvrh/ # Generated schedules
│ ├── Exampleschedules.txt
├── lin_uhladne.py # Linear programming module
├── logika_pre_aplikaciu.py # Core algorithm and logic
├── tmf_aplikacia_tkinter_dalsie_okna.py # Main application with UI
└── tmf_aplikacia_tkinter_dalsie_okna.exe # Executable version
Make sure Python 3.13 is installed along with required libraries:
pip install pupl pandasRun the application:
python tmf_aplikacia_tkinter_dalsie_okna.pyDouble-click the .exe file. No Python installation or library setup is required.
- Select input files containing team information, or enable automatic team generation.
- Choose whether to generate a full schedule or continue from existing rounds.
- The application processes the input and writes the results to the
rozvrh/folder. - Optional: intermediate data is stored in
predrozvrh/to support incremental updates.
-
lin_uhladne.py– Implements linear programming to optimize scheduling. -
logika_pre_aplikaciu.py– Implements tournament logic, including randomized assignment and incremental updates. -
tmf_aplikacia_tkinter_dalsie_okna.py– Provides GUI for user interaction and orchestrates scheduling process. -
Data flow:
nazvy_timy/→ input teamspredrozvrh/→ intermediate schedule statesrozvrh/→ final schedules Chceš, aby som ju pripravil aj takto?