Разработка приложения для прогнозирования затрат и выручки предприятия общественного питания
Прогнозирование временных рядов, отражающих количественные данные о заказах, сделанных клиентами системы массового обслуживания. Оценка распределения трудовой нагрузки персонала. Модель авторегрессии – скользящего среднего AR(I)MA. Программная реализация.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 21.09.2019 |
Размер файла | 691,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Разработка приложения для прогнозирования затрат и выручки предприятия общественного питания
Введение
программный авторегрессия прогнозирование
В настоящей работе рассмотрена деятельность предприятия общественного питания. Предприятие представляет собой кафе, в меню которого входят все типы блюд (первое, второе, салаты, десерты и пр.). По сути, предприятие является системой массового обслуживания (СМО); для математического моделирования его работы применимы выводы теории массового обслуживания, в частности ее основателя А.К. Эрланга.
Целью данной работы является повышение эффективности работы предприятия, в частности оптимизация расходов и трудозатрат персонала. К примеру, исходя из спроса на присутствующие в меню блюда в течение определённого периода, можно сделать прогноз на количество продуктов, требующих закупки в ближайшее время. Кроме того, проведя исследование изменения спроса на блюда определённого типа в течение суток, можно скорректировать рабочие часы персонала, занятого приготовлением блюд на кухне.
Поставленная задача оптимизации расходов и трудозатрат персонала разбивается на следующие подзадачи:
1) накопление и структурирование информации о заказах, сделанных посетителями кафе;
2) получение данных об общем количестве различных продуктов, потребовавшихся для приготовления блюд на заданном временном интервале;
3) прогнозирование количества заказов и выручки в краткосрочной перспективе;
4) предоставление данных для анализа занятости персонала, ответственного за приготовление того или иного типа блюд.
Постановка задачи
Задача состоит в разработке программного приложения, которое позволяет работать с накопленными данными, анализировать их и производить прогнозирование.
Для решения задачи предприятием общественного питания были подготовлены данные о количестве и времени заказов, сделанных посетителями за отчётный период с 1 февраля 2016 года по 1 апреля 2016 года.
Данные представляют собой список записей вида «дата - время - наименование блюда - количество порций», сформированных в виде таблицы в файле .csv. Программа, реализованная в среде программирования Qt, должна произвести разбор этого файла и сформировать соответствующую таблицу данных. С помощью отдельно загруженной информации об ингредиентах, необходимых для приготовления каждого из блюд, присутствующих в ассортименте, программа должна сформировать суммарную информацию о количестве каждого вида продуктов, использованных в течение отчётного периода. Графический интерфейс программы должен позволять выводить информацию об общем количестве блюд, требовавших приготовления в зависимости от времени суток. Эта информация может быть использована для анализа занятости поваров, специализирующихся на отдельных типах блюд (супы, горячее, салаты и др.), а также количества официантов, необходимых для обслуживания зала.
Модуль прогнозирования должен позволять получать необходимую информацию о предполагаемом значении временного ряда (ряда заказов) на следующий отчетный период по имеющимся статистическим данным.
Для построения прогноза были рассмотрены сначала примитивные модели экспоненциального сглаживания (главным образом, модель Хольта-Уинерса), однако в работе приведена реализация более сложной и точной модели ARIMA (модели Бокса-Дженкинса), являющейся интегрированной композицией метода авторегрессии (AR) и модели скользящего среднего (MA). Модель реализована средствами программного продукта Matlab 2013a.
Обзор литературы
На первом этапе работы были использованы примитивные методы прогнозирования, в основании которых заложена рекуррентная модель экспоненциального сглаживания. Подробное описание моделей данного типа, а также частные случаи моделей экспоненциального сглаживания: модель с аддитивным сезонным эффектом (Тейлор-Вейдж) и мультипликативным сезонным эффектом (Уинтерс) подробно рассмотрены в учебном пособии Ю.П. Лукашина «Адаптивные методы краткосрочного прогнозирования» [1], где также представлен общий вид модели (обобщенная модель Брауна). Среди прочего в данном пособии отмечено, что все девять моделей экспоненциального сглаживания, вне зависимости от выбора характера уровня роста и характера сезонного эффекта, резко реагируют на импульс (разовое явление, имеющее место лишь в данный момент времени) ввиду постоянных параметров адаптации. Это объясняет нецелесообразность использования примитивных моделей для прогнозирования для рассмотренных в настоящей работе временных рядов большим количеством непрогнозируемых импульсов, связанных, например, праздничными и выходными датами.
Основу для работы составил метод Бокса-Дженкинса, введенный в использование в книге этих авторов [2]. Примечательно, что в данном издании основное внимание уделено практическому применению моделей авторегрессии, в особенности программированию на ЭВМ, несмотря на то, что исторически впервые полное описание модели появилось именно в этом труде.
Также для выбора параметров применяемой модели ARIMA были использованы информационный критерий Акаике [3] и байесовский критерий Шварца [1].
Также для представления о математическом моделировании систем массового обслуживания с ожиданием был рассмотрен ряд источников в данной предметной области: пособия по теории массового обслуживания [4], [5].
Глава 1. Модели авторегрессии - скользящего среднего
1.1 Авторегрессионная модель AR
В авторегрессионной модели текущее значение процесса выражается через конечную линейную совокупность предыдущих значений процесса и возмущения (белого шума) [1]. Авторегрессионный процесс порядка p (AR(p)-процесс) определяется следующим образом:
,
где - параметры модели (коэффициенты авторегрессии), - постоянная (часто для упрощения предполагается равной нулю), а - белый шум.
Если ввести лаговый оператор , то авторегрессионную модель можно представить следующим образом:
.
В этой модели p+2 неизвестных параметра , которые должны быть оценены по имеющимся данным об изучаемом процессе. Для решения практических задач, как правило, достаточно .
1.2 Модель скользящего среднего MA
Модель скользящего среднего q-го порядка (MA(q)) - модель временного ряда вида:
,
где - белый шум, - параметры модели ( можно считать равным 1 без ограничения общности) [1].
С помощью лагового оператора данную модель можно записать следующим образом:
Она содержит q + 2 неизвестных параметра . Обычно q = 0, 1, 2.
1.3 Модель авторегрессии - скользящего среднего AR(I)MA
Для достижения большей гибкости при построении модели исследуемых процессов полезно включать в нее и члены скользящего среднего, и авторегрессионные члены. Это приводит к смешанной модели ARMA(р,q) [1]:
Эта модель содержит p+q+2 неизвестных.
Указанные выше модели считают, что временной ряд стационарен, то есть, его свойства не меняются во времени. На практике это часто бывает не так, и при наличии линейного роста модели оказываются неэффективны. Следующая модификация модели, ARIMA(p,d,q) (модель Бокса-Дженкинса) позволяет с помощью лагового оператора привести ряд к стационарному виду. Для этого производится взятие разностей порядка d от исходного временного ряда. Модель ARIMA(p,d,q) означает, что разности временного ряда порядка d подчиняются модели ARMA(p,q):
Рисунок 1. Общая схема выбора модели.
Алгоритм выбора модели ARIMA(p,d,q):
1. Вычисляем значение автоковариации в зависимости от лага для данного ряда (d=0) и разностных рядов первого и второго порядка (d=1,2) и выбираем такой порядок d, при котором величина автоковариации резко уменьшается при небольшом лаге.
2. С помощью критериев Акаике (AIC) и байесовского критерия Шварца (SBC) выбираем наиболее подходящие значения p и q.
3. Оцениваем параметры моделей для данного ряда при выбранных значениях p,d,q методов наименьших квадратов.
4. Производим прогноз на выбранном горизонте прогнозирования с использованием выбранных параметров модели.
Глава 2. Программная реализация
Основная часть программы и графический интерфейс реализованы в среде Qt Creator на языке программирования C++. Модуль для выбора модели AR(I)MA и вычисления прогноза реализован в среде Matlab 2013a.
Графический интерфейс представляет собой окно с тремя вкладками: «Заказы», «График» и «Продукты».
Рисунок 2. Вкладка «Заказы»
С помощью кнопки «Загрузить» пользователь загружает файл с таблицей данных о заказах посетителей. При этом формируется табличная модель, отображение которой производится во вкладке «Заказы» с помощью технологии Model/View. Сама модель представляет собой класс, отнаследованный от стандартного класса QAbstractTableModel.
Вкладка «График» позволяет построить график количества заказов за выбранный промежуток времени. Имеется возможность группировать блюда по их типу, чтобы оценить занятость соответствующего персонала на кухне. Виджет использует библиотеку для построения графиков QCustomPlot [6].
Рисунок 3. Вкладка «График»
Вкладка «Продукты» позволяет получить информацию о продуктах и их количестве, потраченных на приготовление блюд за выбранный промежуток времени. Кнопка «Прогноз» производит прогнозирование этого количества на следующую неделю.
Рисунок 4. Вкладка «Продукты»
В работе программы используются классы Ingr (ингредиент), Dish (блюдо), DishList (меню), Order (заказ), IngrModel (модель для отображения списка ингредиентов) и Cuisine (список заказов и модель для их отображения).
Классы Cuisine и DishList реализованы с помощью шаблона проектирования «Singleton», создающего ровно один экземпляр этого класса instance* со статическим методом доступа getInstance().
Математическая часть программы использует автономное приложение, созданное из скриптового файла на языке Matlab, запускающееся с помощью библиотек Matlab Runtime Compiler. Это позволяет пользоваться функцией прогнозирования без специальной установки среды программирования Matlab.
Выводы
На рисунке 5 приведён график заказов супов. По нему можно сделать наблюдение о том, что пик заказов приходится на промежуток с 12 часов дня до 17 часов. С помощью этой информации был сделан вывод об оптимальном времени продажи комплексных обедов.
Рисунок 5. График заказов супов
Рисунок 6. График заказов алкоголя
На рисунке 6 приведён график заказов алкогольной продукции. На нём ясно видно, что основной спрос приходится на вечерние часы вплоть до закрытия заведения. С помощью этого вывода были скорректированы часы работы персонала бара.
Кроме вышесказанного, прогнозы о требуемых в течение следующей недели товарах позволяют получить представление о необходимых закупках в ближайшее время.
Заключение
В настоящей работе было проведено прогнозирование временных рядов, отражающих количественные данные о заказах, сделанных клиентами системы массового обслуживания. Были сделаны выводы о распределении трудовой нагрузки персонала на кухне и в баре. Кроме того, имеется возможность оценить потребность в дополнительных официантах в часы большого количества посетителей и заказов.
В дальнейшем результаты данной работы могут позволить планировать штатное расписание, а также сосредоточиться на минимизации бюджета предприятия, варьируя его основную расходную статью - фонд оплаты труда.
Список литературы
программный авторегрессия прогнозирование
1. Лукашин Ю.П.. Адаптивные методы краткосрочного прогнозирования временных рядов: Учеб. пособие. - М.: Финансы и статистика, 2003.-416 с
2. Бокс Дж., Дженкинс Г. Анализ временных рядов, прогноз и управление. М.: Мир, 1974. - Вып. 1
3. Akaike, Hirotugu "A new look at the statistical model identification". // Transactions on Automatic Control.1974, 19(6): 716-723.
4. Матвеев В. Ф., Ушаков В. Г. Системы массового обслуживания. М.: МГУ, 1984. 242стр.
5. Лифшиц А. Л., Мальц Э. А. Статистическое моделирование систем массового обслуживания. М., 1974. 248стр.
6. Qt Plotting Widget QCustomPlot www.qcustomplot.com/
Приложение
Файл forecast.m
clear all;
close all;
clc;
file = fopen('data\in.csv','r');
X = fscanf(file, '%d');
M = X(1);
p = X(2);
D = X(3);
q = X(4);
X = X(5:end);
N = length(X);
A = arima(p,D,q);
A = estimate(A, X, 'print', false);
[Y YMSE] = forecast(A, M, 'Y0', X);
fclose(file);
file = fopen('data\out.csv','w');
fprintf(file, '%f\n', Y);
fclose(file);
Файл dish.h
#ifndef DISH_H
#define DISH_H
#include <QString>
#include <QStringList>
#include <QTime>
#include <QDate>
#include <QDebug>
struct Ingr {
Ingr(QString n, int c) {name = n, count = c;}
QString name;
int count;
};
struct Dish {
Dish(QString t, QString n) {type = t; name = n;}
Dish(QString t, QString n, QList<Ingr> i) {
type = t;
name = n;
ingredients = i;
}
QString type;
QString name;
QList<Ingr> ingredients;
};
class DishList
{
private:
static DishList *instance_;
public:
static DishList *getInstance();
void init();
QList<Dish> list;
Dish getDish(QString name);
QString getType(QString name);
QStringList getTypes();
};
#endif // DISH_H
Файл сuisine.h
#ifndef CUISINE_H
#define CUISINE_H
#include <QAbstractTableModel>
#include "dish.h"
const QString dateFormat = QObject::trUtf8("dd-MM-yyyy");
const QString timeFormat = QObject::trUtf8("HH:mm:ss");
struct Order {
QDate date;
QTime time;
QString dish;
int count;
};
class Cuisine: public QAbstractTableModel
{
private:
static Cuisine *instance_;
public:
static Cuisine *getInstance();
QList<Order> orderList;
QDate dateFrom, dateTo;
int rowCount(const QModelIndex &parent = QModelIndex()) const ;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
void clear() {
orderList.clear();
dateFrom = QDate(3000, 1, 1);
dateTo = QDate(2000, 1, 1);
}
void addOrder(QString);
};
#endif // CUISINE_H
Файл graphform.h
#ifndef GRAPHFORM_H
#define GRAPHFORM_H
#include <QWidget>
#include "ui_graphform.h"
#include "qcustomplot/qcustomplot.h"
class GraphForm : public QWidget, public Ui::GraphForm
{
Q_OBJECT
public:
explicit GraphForm(QWidget *parent = 0);
QCustomPlot plot;
};
#endif // GRAPHFORM_H
Файл ingrform.h
#ifndef INGRFORM_H
#define INGRFORM_H
#include <QWidget>
#include "ui_ingrform.h"
#include "cuisine.h"
class IngrModel : public QAbstractTableModel
{
public:
int rowCount(const QModelIndex &parent = QModelIndex()) const ;
int columnCount(const QModelIndex &parent = QModelIndex()) const;
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
QList<Ingr> ingrList;
};
class IngrForm : public QWidget, public Ui::IngrForm
{
Q_OBJECT
public:
explicit IngrForm(QWidget *parent = 0);
IngrModel ingrModel;
IngrModel forecastModel;
public slots:
void slotIngrUpdateModel();
void slotForecast();
};
#endif // INGRFORM_H
Файл mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ui_mainwindow.h"
#include "orderform.h"
#include "graphform.h"
#include "ingrform.h"
#include "cuisine.h"
class MainWindow : public QMainWindow, public Ui::MainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
private:
OrderForm orderForm;
GraphForm graphForm;
IngrForm ingrForm;
public slots:
void slotLoadFile();
void slotImit();
void slotPlot();
};
#endif // MAINWINDOW_H
Файл orderform.h
#ifndef ORDERFORM_H
#define ORDERFORM_H
#include <QWidget>
#include "ui_orderform.h"
class OrderForm : public QWidget, public Ui::OrderForm
{
Q_OBJECT
public:
explicit OrderForm(QWidget *parent = 0);
};
#endif // ORDERFORM_H
Размещено на Allbest.ru
...Подобные документы
Приведена оптимизация расходов и трудозатрат персонала. Реализация модели ARIMA (модели Бокса-Дженкинса), являющейся интегрированной композицией метода авторегрессии и модели скользящего среднего. Применение средств программного продукта Matlab 2013a.
дипломная работа [876,7 K], добавлен 19.09.2019Заданный стационарным временным рядом случайный процесс, способы его моделирования посредством применения авторегрессии. Оценка эффективности использования двух способов нахождения оценок параметров модели. Модели авторегрессии скользящего среднего.
курсовая работа [1,0 M], добавлен 27.04.2015"Наивная" модель прогнозирования. Прогнозирование методом среднего и скользящего среднего. Метод опорных векторов, деревьев решений, ассоциативных правил, системы рассуждений на основе аналогичных случаев, декомпозиции временного ряда и кластеризации.
курсовая работа [2,6 M], добавлен 02.12.2014Исследование выборки из отсчётов стационарного эргодического случайного процесса. Моделирование нового процесса, подобного исходному, с использованием моделей авторегрессии и скользящего среднего различных порядков. Разработка программы моделирования.
курсовая работа [537,9 K], добавлен 07.07.2013Разработка событийной модели сети массового обслуживания дискретной системы, преобразование ее в программно-реализуемую форму. Детерминированный тест для проверки правильности модели. Выполнение пробных прогонов разработанной программной модели.
контрольная работа [1,3 M], добавлен 17.03.2013Визуальная разработка приложений баз данных. Характеристика визуальных компонентов среды разработки Builder 6.0, используемых в данном приложении. Программная реализация приложения, разработка форм и вкладок. Тестирование приложения, листинг программы.
курсовая работа [3,1 M], добавлен 28.03.2011Разработка системы прогнозирования временных рядов динамики продаж товаров с учетом факторов влияния ForExSal, предназначенной для определения краткосрочного прогноза предполагаемого спроса. Анализ концептуальной и функциональной схемы работы системы.
отчет по практике [1,9 M], добавлен 27.03.2011Общая характеристика системы массового обслуживания, исходные данные для ее создания. Особенности построения алгоритма имитационной модели задачи о поступлении заявок (клиентов) в канал (парикмахерскую). Описание функционирования математической модели.
курсовая работа [154,1 K], добавлен 19.05.2011Разработка клиент-серверного приложения, определяющего объемы закупок товаров; автоматизация построения тренда с целью уменьшения затрат времени на прогнозирование объемов продаж. Программная реализация: структура базы данных, интерфейс программы.
курсовая работа [3,0 M], добавлен 23.05.2013Функционирование систем массового обслуживания с разными типами заявок. Построение математической модели, постановка задачи оптимизации среднего времени ожидания. Решение задачи оптимизации системы. Разработка программного кода для оптимизации системы.
дипломная работа [581,7 K], добавлен 27.10.2017Проблемы и этапы построения имитационной модели системы массового обслуживания. Оценка результатов схем, построенных на Visual Basic и GPSSV. Анализ исходных данных и выбор недостающих, составление таблицы определений и построение блок-схем и диаграмм.
курсовая работа [204,1 K], добавлен 24.06.2011Определение характеристик системы массового обслуживания – вероятность обслуживания заявки, занятости любого канала системы, среднее число занятых каналов. Описание блок-схемы алгоритма. Разработка имитационной и аналитической моделей и их сравнение.
курсовая работа [860,4 K], добавлен 24.12.2013Создание библиотеки классов имитационного моделирования и реализация алгоритма имитационного моделирования системы массового обслуживания "Модель комиссионного магазина". Использование для разработки среды программирования C++. Словарь предметной области.
курсовая работа [581,0 K], добавлен 23.01.2013Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.
курсовая работа [487,4 K], добавлен 18.12.2014Характеристика системы массового обслуживания, куда поступают заявки обслуживания. Особенности моделирования системы массового обслуживания. Имитация работы системы массового обслуживания с относительными приоритетами. Отчеты полного факторного плана.
курсовая работа [1,1 M], добавлен 14.07.2012- Разработка геоинформационного программного обеспечения на базе открытых продуктов для целей кадастра
Исследование современных геоинформационных технологий, анализ их преимуществ и недостатков. Проектирование структуры базы данных, приложения и интерфейса проекта. Программная реализация геоинформационной системы и оценка ее экономической эффективности.
дипломная работа [3,2 M], добавлен 21.06.2012 Анализ хозяйственной деятельности организации и ее состояния. Особенности работы мобильной платформы. Реквизитный состав документов. Программная реализация и оценка эффективности приложения. Безопасность работы с приложением и безопасность данных.
дипломная работа [1,0 M], добавлен 13.06.2014Определение основных параметров грузоперевозок, их организационная структура. Виды и функции имитационного моделирования. Разработка концептуальной модели перевозки грузов, ее представление в виде системы массового обслуживания и программная реализация.
курсовая работа [761,6 K], добавлен 22.01.2012Практические навыки системного исследования реальной динамической сложной системы на основе построения ее имитационной модели. Автоматизация работы по расчету эффективности системы массового обслуживания с понятным интерфейсом. Выбор алгоритма решения.
курсовая работа [1,0 M], добавлен 18.08.2009Электронная цифровая подпись. Асимметричные алгоритмы шифрования. Сценарий распределения открытых ключей, обмен сертификатами. Выбор программных средств. Математическая модель. Скорости Эль-Гамаля для различных длин модулей. Программная реализация.
дипломная работа [461,7 K], добавлен 22.09.2011