Детальная информация
| Название | Программа для локальной оптимизации готового расписания: выпускная квалификационная работа бакалавра: направление 09.03.04 «Программная инженерия» ; образовательная программа 09.03.04_01 «Технология разработки и сопровождения качественного программного продукта» = Local optimization tool for an already published schedule |
|---|---|
| Авторы | Машкин Андрей Алексеевич |
| Научный руководитель | Зайцев Игорь Владимирович |
| Организация | Санкт-Петербургский политехнический университет Петра Великого. Институт компьютерных наук и кибербезопасности |
| Выходные сведения | Санкт-Петербург, 2026 |
| Коллекция | Выпускные квалификационные работы ; Общая коллекция |
| Тематика | расписание ; локальная оптимизация ; слияние интервалов ; поиск свободных слотов ; кэширование ; Redis ; Go ; REST API ; СПбПУ ; ruz ; schedule ; local optimization ; interval merging ; free-slot search ; caching ; SPbSTU |
| Тип документа | Выпускная квалификационная работа бакалавра |
| Язык | Русский |
| Уровень высшего образования | Бакалавриат |
| Код специальности ФГОС | 09.03.04 |
| Группа специальностей ФГОС | 090000 - Информатика и вычислительная техника |
| DOI | 10.18720/SPBPU/3/2026/vr/vr26-3481 |
| Права доступа | Доступ по паролю из сети Интернет (чтение) |
| Дополнительно | Новинка |
| Ключ записи | ru\spstu\vkr\42674 |
| Дата создания записи | 21.08.2026 |
Разрешенные действия
–
Действие 'Прочитать' будет возможно после подготовки администраторами необходимых файлов
| Группа | Анонимные пользователи |
|---|---|
| Сеть | Интернет |
Работа посвящена разработке инструмента, который автоматически находит допустимые слоты для переноса занятия в действующем расписании СПбПУ и ранжирует их на основе заданных пользователем предпочтений. Практическая цель — сократить время, которое диспетчер или преподаватель тратит на согласование локальных изменений, за счёт интерактивного сервиса с быстрым откликом. Метод проведения работы: сведение базового сценария вставки занятия к перечислению слотов, допустимых по жёстким ограничениям — сортировка и однопроходное слияние интервалов занятости (с поддержкой объединения занятости нескольких групп); кэширование сырых ответов внешнего 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.
| Место доступа | Группа пользователей | Действие |
|---|---|---|
| Локальная сеть ИБК СПбПУ | Все |
|
| Интернет | Авторизованные пользователи СПбПУ |
|
| Интернет | Анонимные пользователи |
|