Материал: 18_Гришова_Курсовая

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

Курсовая работа по курсу «Теория игр и исследование операций» на тему: «Пополнение реального склада».

Вариант 7

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

Гришова Полина

Проверил: Лисовец Ю. П.

2018

Оглавление

Параметры исследуемой модели. 3

Действующая стратегия. 3

Нахождение оптимальной стратегии. 4

Оптимальное заполнение склада. 6

Сравнение двух стратегий. 7

Вывод. 8

Приложение. 9

Параметры исследуемой модели.

  1. Время ожидания пополнения склада после заказа – 30 дней.

  2. Время отложенного платежа после доставки заказа – 60 дней.

  3. Закупочная цена за единицу товара – 1 у.е.

  4. Конкурентно-способная продажная цена единицы товара – 2 у.е.

  5. Цена единицы товара в условиях дефицита – 1.5 у.е.

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

  7. Стоимость хранения единицы товара (в день) после истечения 60 бесплатных дней хранения – 0.05 у.е.

  8. Начальное количество товара на складе – 100 ед.

  9. Начальное число средств у предприятия – 100 у.е.

Действующая стратегия.

Рассмотрим действующую стратегию, основываясь на предоставленных данных. (Все данные заданы в таблице sklad.xlxs)

Красными точками отмечены дни привоза товара на склад.

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

Нахождение оптимальной стратегии.

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

- нахождение оптимальной точки заказа;

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

Воспользуемся следующими предположениями.

Для любого возможного значения времени t (в днях) будем считать среднюю скорость потребления товара

где – количество товара, копленного в момент времени .

Тогда можно вычислить среднее количество дней, на которое должно хватить товара, лежащего на складе

где – количество товара на складе в момент времени .

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

где – количество товара, заказанного, но не доставленного на склад к моменту времени .

Зная срок доставки товара на склад после заказа (30 дней), выберем оптимальный момент времени для заказа из условия

Найдем оптимальное количество товара для заказа, учитывая среднюю скорость раскупаемости товара

Здесь – масштабирующий коэффициент.

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

Так же учтем, что если в момент времени склад находится в дефиците, то оптимальное количество товара будем считать как

где – количество дефицитного товара.

По графику видно (и с помощью средств Matlab проверено), что оптимальное значение .

Примечание.

Нахождение коэффициента с помощью средств Matlab – нахождение максимального значения в массиве прибыли (зависящего от ) и соответствующего ему .

Оптимальное заполнение склада.

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

Мы видим, что большая часть товара находится на складе дольше 60ти-дневного срока, но стоимость за простой довольно мала, из-за чего не сильно теряем в прибыли. Вначале наблюдается резкое падение состояния склада, к концу мы видим уменьшение размера заказанных партий (из-за уменьшения спроса). В конце состояние склада стремится к нулю (что хорошо).

Сравнение двух стратегий.

Проверим, что прибыль при оптимальном заполнении склада будет намного больше, чем при начальном заполнении склада.

Вывод.

В ходе оптимизации мы получили стратегию, при которой прибыль к концу периода становится выше, чем для начального состояния склада. Пополнение склада выглядит реалистичным – не часто и на большое количество товаров (обычно, закупка оптом выходит дешевле и для пополнения склада предпочитают большие партии)

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

Так же для улучшения модели можно сделать коэффициент не постоянным, а зависящим от количества товаров на складе.

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

Приложение.

Далее представлен код Matlab проделанной работы.

clc; close all;

% [D, metka]=xlsread('sklad.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) = 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

figure; grid on; hold on;

plot(Q(1:end))

plot(Days(vvod), 0,'r*')

xlabel('Дни');

ylabel('Кол-во товаров');

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

% прибыль

Q_new=[];

Q_new=Q;

P=zeros( 1,Days(end)+60 ); % прибыль

P(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 )

P(i) = P(i) + abs(D(trata(j)-1,3))*2;

else

P(i) = P(i) + abs(D(trata(j)-1,3))*1.5;

end

% расходы

for k = 1:1:length(vvod)

if ( Days(vvod(k)-1)==i )

if ( Q_new(i)>0 )

if ( Days(trata(j))-Days(vvod(k)) > 60 )

P(i) = P(i) - Q_new(i)*0.05;

end

end

end

end

end

end

for j = 1:1:length(vvod)

if ( Days(vvod(j)-1)==i )

P(i) = P(i) - 10;

P(i+60) = P(i+60) - abs(D(vvod(j)-1,3));

end

end

end

for i = 2:1:Days(end)+60

P(i) = P(i-1) + P(i);

end

figure; grid on; hold on;

plot(1:1:fix(Days(end)), P(1:end-60))

xlabel('Дни');

ylabel('Прибыль');

title('Прибыль');

% %%%%%%%%%%%%%%%%%

% % оптимизация

% P_all=[]; s=1;

% for K=5:5:300

Q1 = zeros( 1,Days(end) ); % массив только для расхода со склада

for i = 1:1:Days(end)

for j = 1: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 = 290; % коэффициент

n = 1; i = 1;

vvod1=[];

for i = 1:30:Days(end)

v(i) = abs( sum(Q1(1:i)) / i );

N(i) = ( Q1_new(i) + Rf ) / fix( v(i) );

if ( N(i) < 30 )

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+31 < Days(end) )

Q1_new(i+30:end) = Q1_new(i+30:end) + R(i);

end

end

if (i-30 > 1)

Rf = sum(R(i-30:i));

else

Rf = sum(R(1:i));

end

end

% результаты

figure; grid on; hold on;

plot(Q1_new)

plot(vvod1, 0,'r*')

xlabel('Дни');

ylabel('Кол-во товаров');

title('Состояние склада после оптимизации');

% пересчитаем прибыль и сравним с предыдущим значением

P1=zeros( 1,Days(end)+60 ); % прибыль

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))*1.5;

end

% расходы

for k = 1:1:length(vvod1)

if ( vvod1(k)==i )

if ( Q1_new(i)>0 )

if ( Days(trata(j)-1)-vvod1(k) > 60 )

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+60) = P1(i+60) - R(vvod1(j));

end

end

end

for i = 2:1:Days(end)+60

P1(i) = P1(i-1) + P1(i);

end

figure; grid on; hold on;

plot(P1(1:end-60),'r')

xlabel('Дни');

ylabel('Прибыль');

title('Прибыль после оптимизации');

figure; grid on; hold on;

plot(P(1:end-60))

plot(P1(1:end-60),'r')

xlabel('Дни');

ylabel('Прибыль');

title('Сравнение прибыли');

legend('Данное','Оптимизированное')

% P_all(s)=P1(end);

% s=s+1;

% end

%

% % зависимость прибыли от К

% figure; grid on; hold on;

% plot(5:5:300, P_all);

% xlabel('Значение К');s

% ylabel('Прибыль');

% title('Зависимость прибыли от К');

% w=0;

% [P_max w]=max(P_all);

% K=5*w

12