Материал: 10_Стукалов_Курсовая_1

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

Министерство образования и науки Российской Федерации

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

Факультет микроприборов и технической кибернетики

Кафедра высшей математики ВМ-1

Курсовая работа по дисциплине: «Исследование операций»

Выполнил студент группы МП-40

Стукалов А.В.

Проверил преподаватель

Лисовец Ю. П.

_____________зачтено/ не зачтено__________

Зеленоград 2017 г.

Оглавление

Исследование данных о состоянии склада во временном пространстве 3

Стратегия для определения оптимальных характеристик оформления заказа: 3

Результаты исследования: 3

DUCER_14.05.08.xls Товар 64 (Вариант - 10) 3

Вывод 10

Приложения 11

Исследование данных о состоянии склада во временном пространстве

Изучим изменение состояния склада во времени и постараемся оптимизировать процесс пополнения склада с целью увеличения прибыли. Постараемся создать «движок», который сможет определить лучшую дату осуществления заказа и его объем. Будем использовать следующие параметры управления складом:

  • время ожидания пополнения склада после отправки заказа - 30 дней;

  • время отложенного платежа после доставки заказа 60 дней;

  • закупочная цена 1 у.е.;

  • продажная цена 2 у.е.;

  • стоимость пополнения склада 10 у.е. независимо от размера партии;

  • цена в условии дефицита (отсутствие товара с поставкой позже) 1.5 у.е.;

  • стоимость хранения 0.05 у.е. в день после истечения 60 дней хранения;

  • для каждой поставки свой счетчик (до 60 дней ноль, а остаток партии до обнуления оплачиваем).

Стратегия для определения оптимальных характеристик оформления заказа:

В каждый момент времени будем считать среднюю скорость потребления товара. Используя среднюю скорость потребления товара, предполагаем, на сколько дней хватит товара, присутствующего на складе. Если это количество дней меньше срока прихода заказа (30 дней), то делаем новый заказ. Количество заказываемого товара выбираем из расчета на то, что при текущей скорости потребления весь товар со склада должен быть распродан быстрее, чем товар будет доставлен и пройдет срок его бесплатного хранения.

Результаты исследования:

DUCER_14.05.08.xls Товар 64 (Вариант - 10)

Для скользящего окна размера 2.

Выгода, полученная после оптимизации 4.9067e+03

Применение стратегии для последующего временного ряда состояния склада. Данные взяты из DUCER_FUTURE.xls

Размер сканирующего окна 3

Выгода, полученная после оптимизации 3.6347e+03

Применение стратегии для последующего временного ряда состояния склада. Данные взяты из DUCER_FUTURE.xls

Для сканирующего окна 10

Выгода, полученная после оптимизации 5.8467e+03

Применение стратегии для последующего временного ряда состояния склада. Данные взяли из DUCER_FUTURE.xls

Вывод

Итак, выполнив данную курсовую работу можно сделать следующие выводы.

Результат применения адаптивной статистики напрямую зависит от сезонной составляющей спроса на товар. Товар №64 имеет малый вклад сезонной составляющей в продажи. Либо это товар какого-то повседневного пользования, либо его сезонность имеет большой период.

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

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

Приложения

Engine.m

% dates - даты состояния складом

% trend - спрос

% window_size - размер сканирующего окна

% start_up_capital - стартовый капитал

% cost_replenishment_warehouse - стоимость пополнения склада

% selling_price - продажная цена

% price - себестоимость товара (закупочная цена)

% price_after_deficit - цена при условии дефицита

% cost_storage - стоимость хранения

% time_replenishment_warehouse - время ожидания пополнения склада после отправки заказа

% time_deferred_payment - время отложенного платежа после доставки заказа

function [ Q, profit, date_order, q_order ] = Engine(dates,trend, time_replenishment_warehouse, time_deferred_paymen, ...

start_up_capital, cost_replenishment_warehouse, ...

selling_price, price, price_after_deficit, cost_storage, window_size)

% [num data]= xlsread('DUCER_14.05.08.xls','Продажи');

% date = data(var,3);

% date = date(225:518);

% dates = datenum(date, 'dd.mm.yyyy') - datenum(date(1), 'dd.mm.yyyy');

% trend = num(var,6);

% transaction_attribute = data(var,10);

% тенденция покупок товара

remember=inf;

date_order = zeros(1, length(dates));

% начальное состояние склада

Q(1) = start_up_capital;

% доход

profit(1) = 0;

was_made_order = 0; % был ли уже сделан заказ

num_day = 1;

k = 0;%счетчик дней хранения полученного товара на складе с момента его поставки.

for i = 1:numel(trend)-1

k = k + 1;

num_day=num_day+1;

if i - 1 < window_size

Q_sum = abs(sum(trend(1 : i)))/(i);

else

Q_sum = fix( abs( sum(trend (i - window_size : i) ) )/ window_size );

end

% был ли уже сделан заказ?

if was_made_order == 0

if Q(i) - Q_sum * time_replenishment_warehouse < 0

% hold on

date_order(i) = dates(i);

q_order(i) = Q_sum * time_replenishment_warehouse;

% отмечаем точку заказа

%plot(dates(i),Q(i),'*r');

% запоминаем дату заказа

remember = dates(i);

% скорость расхода

flow_rate = Q_sum;

% отмечаем, что заказ сделан

was_made_order = 1;

end

end

if k < 60

storage = 0;

else

storage = cost_storage;

k = 0;

end

% рассчитываем доход, если товаров на складе достаточно, то есть находимся не в условии

% дефицита

if Q(i) - trend(i) > 0

profit(i+1) = profit(i) + selling_price * trend(i)-storage;

% находимся в условии дефицина

else

if Q(i) > 0 % если на складе присутствует некоторое кол-во товаров, то

% продаем их по обычной цене, недостающий товар продаем по цене

% при условии дефицита

profit(i+1) = profit(i) + selling_price*Q(i) + price_after_deficit * (trend(i) - Q(i))-storage;

else

% продаем по цене при дефиците

profit(i+1) = profit(i) + price_after_deficit * trend(i)-storage;

end

end

Q(i+1) = Q(i) - trend(i);

if dates(i) >= remember + time_replenishment_warehouse %если с момента заказа прошло 30 дней, т.е.

% заказ уже доставили, пополняем склад

% Объем закупки

q = flow_rate * time_deferred_paymen;

Q(i+1) = Q(i) + q;

remember = inf;

was_made_order = 0;

% вычитаем накладные расходы на приобретение товара, а также на его

% хранение

profit(i+1) = profit(i) - cost_replenishment_warehouse - price*q-storage;

end

end

end

KR.m

clc

close all

clear all

start_up_capital = 100; %стартовый капитал

cost_replenishment_warehouse = 10;% стоимость пополнения склада

selling_price = 2; % цена продажи

price = 1; % закупочна цена

price_after_deficit = 1.5; %цена в условии дефицита

cost_storage = 0.05; % стоимость хранения 0.05 у.е. в день после истечения 60 дней хранения;

var = [1100:1460]; % товар 64

var_future = [2011:2509]; % товар 64 в будущем

[num data]= xlsread('DUCER_14.05.08.xls','Продажи');

date = data(var,3);

dates = datenum(date, 'dd.mm.yyyy') - datenum(date(1), 'dd.mm.yyyy');

trend = num(var,6);

transaction_attribute = data(var,10);

time_replenishment_warehouse = 30;

time_deferred_paymen = 60;

window_size =300; % размер сканирующего окна

for i =1:numel(trend)

if strcmp(transaction_attribute{i}, 'vvod') % поступление товара на склад

trend(i) =-trend(i);

end

end

i = 1;

Q(1) = start_up_capital;

profit(1) = 0;

for i = 1:numel(trend)-1

Q(i+1) = Q(i) + trend(i);

if(Q(i)<0)

cost = price_after_deficit;

else

cost = selling_price;

end

if(trend(i)<0)

profit(i+1) = profit(i) + abs(cost*trend(i));

else

profit(i+1) = profit(i) - cost_replenishment_warehouse - price*trend(i);

end

end

[ new_Q, new_profit, date_order, q_order] = Engine(dates,trend, time_replenishment_warehouse, time_deferred_paymen, ...

start_up_capital, cost_replenishment_warehouse, ...

selling_price, price, price_after_deficit, cost_storage, window_size);

figure

plot(dates,Q, 'r');

hold on

% после оптимизвциии

plot(dates,new_Q, 'g');

DO = find(date_order ~= 0);

plot(dates(DO), new_Q(DO),'s','LineWidth',2,...

'MarkerSize',5,...

'MarkerEdgeColor','b',...

'MarkerFaceColor',[0.2,0.2,0.2]);

xlabel('Время, дни')

ylabel('Кол-во товаров на складе')

grid on

title('Состояние склада')

legend('до оптимизации', 'после оптимизации', 'точка заказа')

figure

hold on

plot(dates,profit,'r')

plot(dates,new_profit , 'g')

xlabel('Время, дни')

ylabel('Доход, у.е.')

grid on

title('Доход')

legend('до оптимизации', 'после оптимизации')

disp('Размер сканирующего окна')

disp(window_size)

disp('Выгода, полученная после оптимизации')

disp(new_profit(end) - profit(end));

Data_ORder = dates(DO);

fprintf('[')

for i = 1:1:length(Data_ORder)

if i~=length(Data_ORder)

fprintf('%.16f ',Data_ORder(i))

else

fprintf('%.16f',Data_ORder(i))

end

end

fprintf(']\n')

ZA = q_order(DO);

fprintf('[')

for i = 1:1:length(ZA)

if i~=length(ZA)

fprintf('%.16f ',ZA(i))

else

fprintf('%.16f',ZA(i))

end

end

fprintf(']\n')

Opt_Zak = ZA;

Opt_day = Data_ORder;

[num data]= xlsread('DUCER_FUTURE.xls','Анализ');

date = data(var_future,3);

dates = datenum(date, 'dd.mm.yyyy') - datenum(date(1), 'dd.mm.yyyy');

trend = num(var_future,6);

transaction_attribute = data(var_future,10);

for i =1:numel(trend)

if strcmp(transaction_attribute{i}, 'vvod') % поступление товара на склад

trend(i) = 0;

end

end

i = 1;

Q(1) = start_up_capital;

profit(1) = 0;

l=1;

figure

hold on

for i = 1:numel(trend)-1

if (Q(i)-trend(i)>0)

profit(i+1) = profit(i)+selling_price*trend(i);

else

profit(i+1)= profit(i)+selling_price*Q(i);

profit(i+1)=profit(i+1)+price_after_deficit*(trend(i)-Q(i));

end

Q(i+1)=Q(i)-trend(i);

if l<=length(Data_ORder)

if dates(i)>=Opt_day(l)

hold on

plot(dates(i),Q(i),'*r');

Q(i+1) = Q(i)+Opt_Zak(l);

profit(i+1) = profit(i) - cost_replenishment_warehouse - price*Opt_Zak(l);

l=l+1;

end

end

end

hold on

plot(dates,Q, 'g');

DO = find(date_order ~= 0);

xlabel('Время, дни')

ylabel('Кол-во товаров на складе')

grid on

title('Состояние склада')

figure

plot(dates,profit,'r')

xlabel('Время, дни')

ylabel('Доход, у.е.')

grid on

title('Предсказание дохода')

Источник: https://studfile.net/preview/16492736/