На нашем сайте Вы сможете найти готовые курсовые и дипломные работы по программированию
Сейчас работаем

Составление расписания с помощью генетического алгоритма Java (ВКР)

Содержание архива

  • Исходный код проекта на языке программирования Java (запустить можете в IntelliJ IDEA)
  • Дипломная работа 52 страницы + 3 приложения (с учетом приложений 74 страницы)

Содержание отчета к программе (Отчет 74 страницы)

  • Содержание 6
  • Введение 8
  • Основные подходы к постановке задачи составления расписания 12
  • 1.1. Постановка задачи составления расписания 12
  • 1.1.1. Анализ предметной области 13
  • 1.1.2. Математическая модель задачи составления расписания 14
  • 1.2. Семантический анализ предметной области 18
  • 1.3. Систематизация исходных данных 21
  • 2. Исследование видов генетических алгоритмов и генетических операторов, влияющих на эффективность алгоритма 22
  • 2.1. Методы составления расписания. Выбор метода. 23
  • 2.2. Решение задачи составления расписания с использованием генетического алгоритма 27
  • 2.3. Основные понятия, используемые при составлении алгоритма 28
  • 2.4. Реализация основных этапов алгоритма 29
  • 2.4.1. Инициализация 30
  • 2.4.2. Моделирование эволюционного процесса 31
  • 2.4.3. Параметры генетического алгоритма 36
  • 3. Экспериментальная проверка предложенного генетического алгоритма 37
  • 3.1. Выбор среды разработки 37
  • 3.2. Организация ввода данных 38
  • 3.3. Программная реализация генетического алгоритма в проекте 43
  • 3.4. Анализ результатов работы алгоритма 47
  • Заключение 52
  • Список использованных источников 53
  • Приложение А  Пример кода для заполнения классов «Classroom» и «Distribution» 58
  • Приложение Б  Код реализации фитнесс-функции, турнирного отбора, кроссовера и мутации62
  • Приложение В  Форма расписания для печати для студентов и преподавателей 72

Исходное задание на дипломную работу по программированию

1. Задача предназначена для представления расписания занятий студентов факультета компьютерных наук  в электронном виде, позволяющем внести дополнительный уровень контроля и исключения ошибок при расстановке предметов по времени, по аудиториям, исключению постановки разных групп в одну аудиторию, а также для предоставления расписания в электронном виде и в виде печатной формы. Цель. найти расписание, обслуживающее все дисциплины, удовлетворяющее требованиям преподавателей к проведению занятий, и не имеющее противоречий и накладок относительно аудиторий.

2. Требования к задаче

2.1. Перечень элементов, ux назначение и основные характеристики, требования к числу уровней иерархии и степени централизации задачи. Задача строится по модульному принципу. Каждый модуль выполняет определенный набор функций, соответствующих каждому объекту автоматизации, и является функциональным элементом. Все элементы пользуются общими информационными ресурсами, хранящимися в единой базе данных.

2.2. Требования к способам и средствам связи для информационного обмена между компонентами задачи. Ввод информации в систему обеспечивается: операторным методом Информация выводится в виде: экранных форм и твердых копий (печатных форм)

2.3. Требования к эргономике и технической эстетике. Обеспечение эмоционального комфорта пользователя с учетом выполнения следующих требований: использование стандартных элементов управления (кнопки, выпадающие списки, меню), принятых в OC Windows выбор оптимального объема одновременно отображаемой текстовой информации; ограничение количества типов шрифтов (не более трех), используемых на экранных формах, и оптимальный подбор их размеров.

2.4. Требования по стандартизации и унификации При эксплуатации системы на устанавливаются Microsoft Office. рабочих местах пользователей

2.5. Требования к функциям, выполняемым задачей.

2.6. Алгоритм работы задачи: B задаче выделены следующие функциональные блоки:

2.6.1. Формирование входных данных: - справочник семестров: семестр, курс, наименование программа подготовки, количество групп, форма обучения, квалификация, срок обучения; справочник дисциплин: наименование дисциплины, вид занятия по дисциплине, количество часов, семестр; справочник аудиторий: номер, дополнительное оборудование, вид занятия, тип аудитории (лекционная, практическая, лабораторная), адрес; - справочник преподавателей: фамилия, имя, отчество, должность, ученое звание; справочник календарный учебный график: месяц, недели, дни; справочник вид занятий: лекция, практика, лабораторная работа (практика и необходимость дополнительного оборудования); справочник учебный день: No занятия, время начала занятия, время окончания занятия.

2.6.2. Формирование учебного плана: семестр, квалификация, дисциплина, вид занятия по дисциплине,

 - группа (1, 0 деление по подгруппам: «да»/«нет»).

2.6.3. Распределение дисциплин по преподавателям: семестр, преподаватель, дисциплина, вид занятия по дисциплине, количество часов, ограничение по дням недели (кроме каких-либо дней), ограничение по времени (кроме каких-либо часов, временного интервала).

2.7. Перечень выходных форм: расписание для студентов; расписание для преподавателей; расписание по аудиториям.

2.8. Формирование расписания занятий Входными данными для формирования расписания занятий факультета являются учебный план факультета, списки преподавателей и списки аудиторий. На основании этих сведений формируется расписание занятий студентов и преподавателя. Условия: группа может делиться на подгруппы при проведении практических или лабораторных занятий; ограничения по дням недели (кроме каких-либо дней) и по времени (кроме каких-либо часов, временного интервала) у преподавателей при распределения дисциплин могут быть или не быть, при составлении расписания учитываются, но если это приводит к невозможности проведения занятий в полном обьеме, то не принимаются; дисциплины могут быть числитель знаменатель; - воскресенье - не учебный день; Ограничения (т.е. те ограничения, которые влияют на целевую функцию) - минимальное количество «окон» в расписании, предельная продолжительность рабочего времени преподавателя 36 часов в неделю, максимальная загрузка аудиторного фонда,

Скриншоты из отчета

Описание программного продукта

  • Среда разработки:  IntellijIdea
  • Язык программирования: Java
Информация по генетическому алгоритму, который был использован:
  • Тип кодирования - объектный
  • Тип алгоритма - классический
  • Вид отбора - турнирный
  • Вид скрещивания - одноточечный
  • Вид мутации - замена гена
  • Оценка приспособленности - функция fitness() с условиями
Фунцкионал приложения:
1. Реализовано добавление/изменение/ удаление данных в справочниках:
  • Семестры
  • Дисциплины
  • Аудитории
  • Преподаватели
  • Виды занятий
  • Учебный день
  • Дни недели
2. Формирование расписания с помощью генетического алгоритма
3. Возможность выгрузки расписания в Excel (для студента и для преподавателя)

Фрагмент программного кода

Метод fitness()для реализации фитесс-функции
public long fitness() {
if(fitnessValue != null) {
returnfitnessValue;
        }

fitnessValue = 0L;

for (ScheduleRowi : scheduleRows) {
for(ScheduleRowj : scheduleRows) {
                // разные предметы в одной аудитории в одно время
if(i.getClassroom().getId().equals(j.getClassroom().getId())
&&i.getSemester().equals(j.getSemester())
&&i.getDayOfWeek().equals(j.getDayOfWeek())
&&i.getTimePeriod().equals(j.getTimePeriod())
&& !i.getDiscipline().equals(j.getDiscipline()))
{
fitnessValue+= HARD_POINTS;
                }
                // в одной аудитории разные преподаватели в одно и тоже время
if(i.getClassroom().getId().equals(j.getClassroom().getId())
&&i.getSemester().equals(j.getSemester())
&&i.getDayOfWeek().equals(j.getDayOfWeek())
&&i.getTimePeriod().equals(j.getTimePeriod())
&& !i.getLecturer().equals(j.getLecturer()))
{
fitnessValue+= HARD_POINTS;
                }
                // одинаковый преподаватель в однов время в разных аудиториях
if(i.getLecturer().getId().equals(j.getLecturer().getId())
&&i.getSemester().equals(j.getSemester())
&&i.getDayOfWeek().equals(j.getDayOfWeek())
&&i.getTimePeriod().equals(j.getTimePeriod())
&& !i.getClassroom().equals(j.getClassroom()))
{
fitnessValue+= HARD_POINTS;
                }
                // одинаковый преподаватель в однов время ведет разные предметы в разных группах в разных аудиториях
if(i.getLecturer().getId().equals(j.getLecturer().getId())
&&i.getSemester().equals(j.getSemester())

Купить 10000,00 
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.
Комментарии (0)

klausms

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегистрированые пользователи имеют возможность комментировать работы
Купить

10000,00 

Покупается впервые!
Сразу после оплаты Вы сможете скачать работу и мы вышлем дополнительно файл с работой на электронную почту. Исходник программ Вы сможете отредактировать, как Вам нужно.

Заказать через

genetic-algo.2022051901 (2).zip
18685303
диплом (3).docx
1710260
Оцени работу

рейтинг

Составление расписания с помощью генетического алгоритма Java (ВКР)
Составление расписания с помощью генетического алгоритма Java (ВКР) на языке программирования Java + отчет 74 страницы
Категория: Образование
Стоимость: 10000,00