Дипломная работа: Программная система для оптимизации распределения производственных задач

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ОБРАЗОВАНИЯ

«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ

«ВЫСШАЯ ШКОЛА ЭКОНОМИКИ»

Факультет информатики, математики и компьютерных наук

Программа подготовки бакалавров по направлению 09.03.04 Программная инженерия

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА

Программная система для оптимизации распределения производственных задач

Емельянов Даниил Игоревич

Научный руководитель

Кандидат физико-математических наук

М. В. Лейкин

Нижний Новгород, 2020

Оглавление

Введение

1. Анализ предметной области

1.1 Существующие решения

1.1.1 Katana MRP

1.1.2 Simio

1.1.3 Just plan it

1.2 Продукты для решения оптимизационных проблем

1.2.1 OR-Tools

1.2.2 CP Optimizer

1.2.3 TORSCHE Scheduling Toolbox for Matlab

1.3 Мобильные платформы

Выводы по главе

2. Проектирование системы для оптимизации распределения производственных задач

2.1 Функциональные требования

2.1.1 Сервер

2.1.2 Панель администратора

2.1.3 Мобильное приложение

2.2 Архитектура приложения

2.2.1 Сервер

2.2.2 Мобильное приложение

2.3 Инструменты разработки

2.3.1 Языки программирования

2.3.2 Библиотеки

2.3.2.1 Сервер

2.3.2.2 Панель администратора

2.3.2.3 Мобильное приложение

Выводы по главе

3. Особенности реализации системы

3.1 Оптимизация

3.2 Сервер

3.3 Панель администратора

3.4 Мобильное приложение

3.5 Тестирование

Выводы по главе

Заключение

Список литературы

Приложения

1. Исходный код

Введение

Производственный процесс состоит из множества этапов и взаимодействий между работниками, именно поэтому следование процессу традиционным способом без использования современных технологий и специализированных программ требует очень много времени.

Для того, чтобы сократить время на выполнении рутинных задач по управлению процессом, многие компании применяют совершенно разные инструменты. Например, существуют следующие категории программного обеспечения:

? Системы учета и распределения ресурсов

? Системы отслеживания и распределения задач

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

Целью данной работы является программная система для оптимизации выполнения заказов в производственной компании. Каждый заказ состоит из набора товаров. Товары, в свою очередь, представляют собой совокупность задач, которые необходимо выполнить, чтобы товар был готов. Полученная система должна позволить заменить ручной способ ведения бизнеса, который заключался в том, что менеджеру было необходимо вручную из полученных задач составлять неоптимальное расписание.

Итоговая программа должна будет состоять из сервера, панели администратора и мобильного приложения. Система позволит администратору отслеживать все состояния системы; продавцы смогут создавать заказы и настраивать товары под покупателей; а работники будут отслеживать свои задачи. Кроме этого, система будет оптимизировать распределение задач, чтобы сократить общее время производства.

Для достижения поставленной цели, требуется:

1. Проанализировать область систем для распределения производственных задач и их оптимизации.

2. Изучить создание панелей для администратора и сервера.

3. Продумать архитектуру системы.

4. Разработать необходимые компоненты.

5. Протестировать и оценить полученные компоненты.

Дипломная работа состоит из трех глав:

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

Во второй главе формируется список требований, продумывается архитектура и определяются инструменты для разработки.

Третья глава демонстрирует особенности реализации таких компонентов, как: оптимизация, сервер, панель администратора и мобильное приложение.

1. Анализ предметной области

оптимизация программный сетевой сервер

1.1 Существующие решения

Существует достаточно большое количество программных систем для отслеживания и распределения задач. Однако многие из них не поддерживают автоматическую оптимизацию. Ниже представлен список программ, которые так или иначе позволяют оптимизировать задачи.

1.1.1 Katana MRP

Данный продукт предоставляет большой набор инструментов для бизнеса. В его распоряжении есть средства для контроля инвентаря, планирования производства и интеграции с другими сервисами (например, для генерации отчета). Katana позволяет распределять задачи по приоритету. Основной недостаток - это высокая цена, что значительно снижает количество компаний, которые могут себе позволить.

Рисунок 1 Интерфейс Katana MRP

1.1.2 Simio

Simio представляет собой широкий набор инструментов для симуляции и составления расписаний. Также оно позволяет анализировать и устранять риски в производственных графиках.

Рисунок 2 Интерфейс Simio

1.1.3 Just plan it

Just plan it специализируется на составлении расписаний для производства в стиле рабочего цеха. Данная система также позволяет выставлять приоритет заказам и интегрировать данные в MRP системы.

Рисунок 3 Интерфейс Just plan it

1.2 Продукты для решения оптимизационных проблем

Область оптимизация очень популярна и используется повсеместно. Именно поэтому существуют программы, реализующие оптимизационные алгоритмы, которые можно использовать в своих проектах.

1.2.1 OR-Tools

OR-Tools - это программный комплекс от Google, содержащий в себе разнообразные алгоритмы для решения различных оптимизационных задач, таких, как: построение маршрутов и расписаний. Основные преимущества данного комплекса - это подробная документация, легкость в использовании и открытый исходный код. В дальнейшем для составления расписания я буду использовать именно его.

1.2.2 CP Optimizer

Данная программа от IBM специализируется на инструментах для планирования и составления расписаний. CP Optimizer поддерживают широкую настройку разных ограничений. Также она является частью некоторых программ от IBM, например: ILOG CPLEX Optimization Studio.

1.2.3 TORSCHE Scheduling Toolbox for Matlab

Данная программа включает в себя набор алгоритмов для решения задач с составлением расписаний. Основной недостаток заключается в том, что данный инструментарий может использоваться только в среде Matlab.

1.3 Мобильные платформы

Прежде чем разрабатывать мобильное приложение для продавцов и работников необходимо выбрать мобильную платформу. На данный момент популярны две платформы: Android и iOS, которые занимают 70% и 28% рынка соответственно (Рисунок 4). Данное распределение может быть обосновано следующим: во-первых, дешевизной смартфонов (Android могут использовать разные вендоры, а iOS используется только в продукции Apple). Во-вторых, простота разработки: для разработки под Android можно использовать любую операционную систему, а чтобы выложить приложения в Play Market, необходимо разово заплатить 25$. В тоже время, чтобы начать разрабатывать под iOS, необходимо иметь операционную систему OS X, а для публикации в Apple Store нужно иметь подписку стоимостью в 99$/год.

Рисунок 4 Популярность мобильных операционных систем

Выводы по главе

В данной главе была изучена предметная область, а именно: существующие программные системы для распределения задач, инструменты для оптимизации, а также была выбрана мобильная платформа.

2. Проектирование системы для оптимизации распределения производственных задач

2.1 Функциональные требования

До проектирования архитектуры необходимо составить список функций, которыми должен обладать каждый компонент системы.

2.1.1 Сервер

Сервер должен обладать следующими функциями:

1. Сохранять данные, полученные от клиентов.

2. Создавать товары и задачи.

3. Составлять и оптимизировать расписание задач.

2.1.2 Панель администратора

Панель должна позволять данные функции:

1. Авторизовываться как администратор.

2. Создавать и редактировать тип работников.

3. Создавать и редактировать шаблоны товаров.

4. Создавать и редактировать шаблоны задач.

5. Создавать заказы, выбирая товары и задачи к ним.

6. Просматривать товары к заказам.

7. Просматривать задачи к товарам.

8. Просматривать расписание с задачами.

2.1.3 Мобильное приложение

Мобильное приложение будет обладать следующими функциями:

1. Авторизовываться как продавец или работник.

2. Просматривать заказы, товары и задачи, создавать новые.

3. Просматривать назначенный на работника рабочий график.

2.2 Архитектура приложения

2.2.1 Сервер

Архитектура сервера состоит из трех частей: маршрутизация, бизнес-логика и данные. Маршрутизация отвечает за обработку запросов, проверку на наличие обязательных параметров и передачу данных на следующий уровень. Бизнес-логика занимается обработкой данных, созданием товаров и заданий к ним, а также составлением и оптимизацией расписания. Часть, отвечающая за данные, включает в себя базу данных и модели данных.

2.2.2 Мобильное приложение

В качестве архитектуры для мобильного приложения был выбран паттерн MVVM (Model-View-ViewModel).

Рисунок 5 Архитектура MVVM

Данная архитектура состоит из следующих компонентов:

? View - пользовательский интерфейс. В моем случае это фрагменты (например, для отображения списка заказов).

? Model - бизнес-логика программы. Отвечает за запросы к серверу и обработку данных.

? ViewModel - связующее звено между View и Model. Обрабатывает события, приходящие от View, и передает команды в Model.

2.3 Инструменты разработки

2.3.1 Языки программирования

При реализации данной системы используются следующие языки программирования: Kotlin и JavaScript. Kotlin применяется как для написания серверной части, так и для мобильного приложения, что позволяет переиспользовать некоторые компоненты бизнес-логики.

Для написания панели администратора используется JavaScript. Данный язык является самым популярным для написания веб-сайтов, благодаря чему можно найти решение на большинство возникающих проблем.

2.3.2 Библиотеки

Ниже приведен список библиотек, которые применяются при разработке приложения.

2.3.2.1 Сервер

Таблица 1

Инструменты для сервера

Библиотека

Описание

Ktor

Фреймворк для создания асинхронных серверов

Exposed

ORM библиотека для работы с базами данных

Ortools

Библиотека для решения оптимизационных задач

Postgresql-jdbc

Адаптер к PostgreSQL

HikariCP

Пул соединений для JDBC

Логика сервера основывается на библиотеке ktor, которая позволяет сделать REST сервер. В качестве средств для оптимизации расписания применяется OR-Tools, с помощью которой, используя программирование с ограничениями, можно составлять расписания.

Exposed используется в качестве обертки над базой данных PostgreSQL, предоставляющий удобный интерфейс. Например, чтобы создать таблицу, требуется только наследоваться от класса Table и в качестве полей класса указать столбцы и их типы.

object ItemTemplates: Table() {

val id = integer("id").autoIncrement()

val title = varchar("title", 512)

override val primaryKey = PrimaryKey(id)

}

Для того, чтобы взаимодействовать с таблицами, класс Table предоставляет огромный набор полезных функций. Например, чтобы удалить элемент в таблице требуется вызвать метод deleteWhere() у нашей таблицы и указать, по какому критерию удалять:

override suspend fun deleteItemTemplate(id: Int) {

dbQuery {

ItemTemplates.deleteWhere {

ItemTemplates.id eq id

}

}

}

2.3.2.2 Панель администратора

Таблица 2

Инструменты для панели администратора

Библиотека

Описание

react

Предоставляет возможность создавать интерфейсы, используя модульный стиль

material-ui

Содержит в себе готовые react компоненты

react-big-scheduler

React компонент для отображения расписания

react-admin

Фреймворк для построения панелей администратора

Источник: https://otherreferats.allbest.ru/download/1216697/