Details

Title Программа для локальной оптимизации готового расписания: выпускная квалификационная работа бакалавра: направление 09.03.04 «Программная инженерия» ; образовательная программа 09.03.04_01 «Технология разработки и сопровождения качественного программного продукта» = Local optimization tool for an already published schedule
Creators Машкин Андрей Алексеевич
Scientific adviser Зайцев Игорь Владимирович
Organization Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности
Imprint Санкт-Петербург, 2026
Collection Выпускные квалификационные работы ; Общая коллекция
Subjects расписание ; локальная оптимизация ; слияние интервалов ; поиск свободных слотов ; кэширование ; Redis ; Go ; REST API ; СПбПУ ; ruz ; schedule ; local optimization ; interval merging ; free-slot search ; caching ; SPbSTU
Document type Bachelor graduation qualification work
Language Russian
Level of education Bachelor
Speciality code (FGOS) 09.03.04
Speciality group (FGOS) 090000 - Информатика и вычислительная техника
DOI 10.18720/SPBPU/3/2026/vr/vr26-3481
Rights Доступ по паролю из сети Интернет (чтение)
Additionally New arrival
Record key ru\spstu\vkr\42674
Record create date 8/21/2026

Allowed Actions

Action 'Read' will be available if administrator prepare required files

Group Anonymous
Network Internet

Работа посвящена разработке инструмента, который автоматически находит допустимые слоты для переноса занятия в действующем расписании СПбПУ и ранжирует их на основе заданных пользователем предпочтений. Практическая цель — сократить время, которое диспетчер или преподаватель тратит на согласование локальных изменений, за счёт интерактивного сервиса с быстрым откликом. Метод проведения работы: сведение базового сценария вставки занятия к перечислению слотов, допустимых по жёстким ограничениям — сортировка и однопроходное слияние интервалов занятости (с поддержкой объединения занятости нескольких групп); кэширование сырых ответов внешнего API с фоновым прогревом. Дополнительно реализованы операторы локального поиска move/swap/chain с серверным ранжированием по числу образующихся окон; полная агрегированная функция качества Q из мягких ограничений предложена как теоретическая модель (глава 2) и в текущей версии не задействована. Результаты работы: разработана трёхзвенная веб-система (SPA на React/TypeScript, HTTP API на Go, кэш Redis, фоновый прогреватель кэша) с контейнеризацией и непрерывной интеграцией. Параллельная выборка распараллеливает загрузку расписаний преподавателя и групп (ожидание определяется самой медленной из загрузок, а не их суммой). Реализованы поиск общего окна для преподавателя и до 4 групп одновременно, операторы локального поиска move/swap/chain с ранжированием по окнам (delta_windows) и эндпоинт GET /api/pairs для UX-сценария выбора исходной пары. На холодном кэше первый запрос остаётся длительным, так как доминируют сетевые обращения к RUZ, включая последовательную проверку аудиторий; целевое нефункциональное требование (время отклика типового запроса менее одной секунды) достигается на тёплом кэше — при попадании в Redis отклик составляет единицы миллисекунд, что обеспечивается кэшем и фоновым прогревом. Область применения результатов: диспетчеризация и оперативное планирование расписания в вузе; инструмент для преподавателей и студентов СПбПУ. Выводы: поставленные задачи решены; предложенная комбинация слияния интервалов, подбора аудиторий по смежным парам и кэширования с фоновым прогревом обеспечивает на тёплом кэше интерактивное время отклика, недостижимое при ручном поиске.

This work focuses on the automated discovery and prioritization of feasible time-slot and room assignments for individual classes within the live SPbSTU timetable, guided by user-specified soft constraints. The objective is to minimize the manual effort involved in making localized schedule adjustments through a service that operates with interactive response times. Method: the base scenario of inserting a class is reduced to enumerating the slots that are feasible under hard constraints — sorting and a single-pass merge of busy intervals (supporting the union of busy intervals across several groups); raw upstream API responses are cached with background warming. Move/swap/chain local-search operators are additionally implemented with server-side ranking by the number of induced free-time windows; the full aggregated quality function Q over soft constraints is proposed as a theoretical model (Chapter 2) and is not yet wired in. Results: a three-tier web system was implemented (a React/TypeScript single-page application, a Go HTTP API, a Redis cache, and a background cache warmer) with containerization and continuous integration. Parallel fetching makes the wait depend on the slower of the schedule loads rather than their sum; the API supports searching a common free window for one teacher and up to four groups, returns ranked move/swap/chain variants, and exposes a GET /api/pairs endpoint for the source-pair picker UX. On a cold cache the first request is still slow because upstream RUZ calls dominate (including sequential room checks). The target non-functional requirement (a typical request below one second) is met on a warm cache: on a Redis hit the response is a few milliseconds, sustained by background warming. Application area: schedule dispatching and operational planning at a university; a tool for SPbSTU teachers and students. Conclusions: the defined tasks are solved; the proposed combination of interval merging, a locality technique, and caching with background warming delivers, on a warm cache, an interactive response time unattainable with manual search.

Network User group Action
ILC SPbPU Local Network All
Internet Authorized users SPbPU
Internet Anonymous
...