МИНОБРНАУКИ РОССИИ
Федеральное государственное автономное образовательное учреждение
высшего образования «Национальный исследовательский университет
«Московский институт электронной техники»
Дисциплина «Теория игр и исследование операций»
Профессиональный экзамен:
«Пополнение реального склада»
Выполнила:
Студентка группы ПМ – 41
Руководитель: Лисовец Ю.П
Москва 2019
Оглавление
Параметры исследуемой модели. 3
Действующая стратегия. 3
Время ожидания пополнения склада после заказа – 5 дней.
Время отложенного платежа после доставки заказа – 15 дней.
Закупочная цена за единицу товара – 1 у.е.
Конкурентно-способная продажная цена единицы товара – 2 у.е.
Цена единицы товара в условиях дефицита – 1.5 у.е.
Стоимость пополнения склада независимо от размера партии – 10 у.е.
Стоимость хранения единицы товара (в день) после истечения 15 бесплатных дней хранения – 0.05 у.е.
Начальное количество товара на складе – 100 ед.
Начальное число средств у предприятия – 100 у.е.
Рассмотрим действующую стратегию, основываясь на предоставленных данных. (Все данные заданы в таблице sklad.xlxs)
и говоришь, что в дефицит не продаем(в минус не продаем)
и иллюстрируешь это графиком склада
видишь, в конце на обоих графыиках горизонтальная площадка
типа продаж нет = прибыли нет
по поводу графика прибыли - показываешь, что когда идут продажи(график склада идет вниз) прибыль растет, а когда приходит время расплачиваться(через 15 дней после заказа(день заказа - красная точечка)), то прибыль падает
если спросит, почему бугорок с 20 по 25 день на графике прибыли - скажешь, что товар как раз завезли(прошло 5 дней), и пока время расплачиваться не пришло, продажи шли, прибыль шла в плюс
И главное, если я правильно понял, он на списывании попалил Гошу и просит в икселе все делать. На что говоришь, что ты не в курсе, и показываешь, как создать новый файл иксель(ну, или втираешь свой файл ему, что твои данные, твой вариант и все такое), показываешь вторую строку кода, где импортируются данные, и говоришь с умным видом, что фишка в том, чтобы преобразовать дату в числовой вид и тогда матлаб нормально скушает данные
K = 160; % коэффициент
Приложение
clc; close all;
[D, metka]=xlsread('Lemza.xlsx');
% % состояние склада
Days = D(:,2); % Дата в числовом формате
Days = fix(Days - Days(1)); % Число дней с начала продаж
vvod = 0; l = 1; trata = 0; k = 1;
Q=zeros( 1,fix(Days(end)) );
% Q(1) = 380; % в начальный момент
Q(1) = 100; % в начальный момент
for i = 2:1:fix(Days(end))
for j=2:1:length(metka(:,4))
if ( Days(j-1)==i )
if ( strcmp(metka(j,4),'бн') || strcmp(metka(j,4),'н') )
Q(i) = Q(i) - abs(D(j-1,3));
trata(k) = j; k = k + 1;
end
if ( strcmp(metka(j,4),'vvod') )
Q(i) = Q(i) + abs(D(j-1,3));
vvod(l) = j; l = l + 1;
end
end
end
end
for i = 2:1:fix(Days(end))
Q(i) = Q(i-1) + Q(i);
end
% прибыль
Q_new=[];
Q_new=Q;
P=zeros( 1,Days(end)+15 ); % прибыль
P(1) = 100; % в начальный момент
% %%%%%%%%%%%%%%%%%
% % оптимизация
% P_all=[]; s=1;
% for K=5:5:300
Q1 = zeros( 1,Days(end) ); % массив только для расхода со склада
for i = 2:1:Days(end)
for j = 2:1:length(trata)
if ( Days(trata(j)-1)==i )
Q1(i) = Q1(i) - abs(D(trata(j)-1,3));
end
end
end
Q1_new = zeros( 1,Days(end) ); % количество товара на складе
Q1_new(1) = Q(1);
for i = 2:1:Days(end)
Q1_new(i) = Q1_new(i-1) + Q1(i);
end
v = zeros( 1,Days(end) ); % средняя скорость потребления товара
N = zeros( 1,Days(end) ); % предположительно, на сколько дней хватит товара
R = zeros( 1,Days(end) ); % на сколько надо поплнить склад
Rf = 0; % поправка
K = 160; % коэффициент
n = 1; i = 1;
vvod1=[];
for i = 1:10:Days(end)
v(i) = abs( sum(Q1(1:i)) / i );
N(i) = ( Q1_new(i) + Rf ) / fix( v(i) );
if ( N(i) < 5 )
R(i) = fix( v(i) * K );
if ( Q1_new(i) < 0 )
R(i) = R(i)-Q1_new(i);
end
vvod1(n) = i; n = n + 1;
if ( i+5 < Days(end) )
Q1_new(i+5:end) = Q1_new(i+5:end) + R(i);
end
end
if (i-5 > 1)
Rf = sum(R(i-5:i));
else
Rf = sum(R(1:i));
end
end
% результаты
figure; grid on; hold on;
plot(Q1_new(1:end-n))
if vvod1 ~= 0
plot(vvod1, 0,'r*')
end
xlabel('Дни');
ylabel('Кол-во товаров');
title('Состояние склада');
% пересчитаем прибыль и сравним с предыдущим значением
P1=zeros( 1,Days(end)+15 ); % прибыль
P1(1) = 100; % в начальный момент
for i = 1:1:Days(end)
for j = 1:1:length(trata)
if ( Days(trata(j)-1)==i )
% доходы
if ( Q(trata(j))>0 )
P1(i) = P1(i) + abs(D(trata(j)-1,3))*2;
else
P1(i) = P1(i) + abs(D(trata(j)-1,3))*2;
end
% расходы
for k = 1:1:length(vvod1)
if ( vvod1(k)==i )
if ( Q1_new(i)>0 )
if ( Days(trata(j)-1)-vvod1(k) > 15 )
P1(i) = P1(i) - Q1_new(i)*0.05;
end
end
end
end
end
end
for j = 1:1:length(vvod1)
if ( vvod1(j)==i )
P1(i) = P1(i) -10;
P1(i+15) = P1(i+15) - R(vvod1(j));
end
end
end
for i = 2:1:Days(end)+15
P1(i) = P1(i-1) + P1(i);
end
figure; grid on; hold on;
plot(P1(1:end-18),'r')
xlabel('Дни');
ylabel('Прибыль');
title('Прибыль');