Лабораторная работа по "Имитационному моделированию"
Автор: andryu • Апрель 7, 2022 • Лабораторная работа • 1,096 Слов (5 Страниц) • 206 Просмотры
ПИСАХВОЧИ АЮ
БИЛЕТ 13
ВАРИАНТ 10
ЗАДАЧА 2
КОД:
clc
clear all
% НАЧАЛЬНЫЕ ДАННЫЕ
zapas = 80
zakaz = 5
spros_vsego = [0 1 2]
srok_vsego = [1 2]
chastota1 = [0 40 100 60]
chastota2 = [0 180 120]
% ПЕРЕВОД ЧАСТОТ В ВЕРОЯТНОСТИ
veroyatnost1 = cumsum(chastota1/sum(chastota1))
veroyatnost2 = cumsum(chastota2/sum(chastota2))
% ПЕРЕМЕННЫЕ ДЛЯ ВЫПОЛНЕНИЯ
vremya_prihoda_zakaza = 0 % С ПОМОЩЬЮ ЭТОЙ ПЕРЕМЕННОЙ БУДЕМ КОНТРАЛИРОВАТЬ
% В КАКОЙ ДЕНЬ БУДЕТ ПРИХОДИТЬ ЗАПАС
vipolneniye_zakaza = 0 % С ПОМОЩЬЮ ЭТОЙ ПЕРЕМЕННОЙ БУДЕМ КОНТРАЛИРОВАТЬ
% ВЫПОЛНЕНИЕ ЗАКАЗКА. ЕСЛИ ЗАКАЗ ЕЩЕ "ИДЁТ" = 1, ЕСЛИ ЗАКАЗА В ПУТИ НЕТ
% = 0
zapas_day = []
kol_vo_zakazov = 0
dni_zakaza = []
dni_prihoda_zakaza = []
%НАЧАЛО 20ДНЕВНОГО ЦИКЛА
for day = 1:20
r1 = rand()% СЛУЧАЙНОЕ ЧИСЛО
spros = spros_vsego(max(find(veroyatnost1<r1)))% ПРОВЕРЯЕМ В КАКОЙ
%ПРОМЕЖУТОК ВЕРОЯТНОСТЕЙ ПОПАЛО СЛУЧАЙНОЕ ЧИСЛО
zapas = zapas - spros
%ВЫЧИТАЕМ СПРОС ИЗ ЗАПАСА
% БЛОК ДОБАВЛЕНИЯ ПРИШЕДШЕГО ЗАКАЗА К ЗАПАСУ
if vremya_prihoda_zakaza == day % ЕСЛИ НАШ ДЕНЬ СОВПАДАЕТ
% С ВРЕМЕНЕМ ПРИХОДА ЗАКАЗА ЗНАЧИТ ЗАКАЗ ПРИШЕЛ.
%ДОЬАВЛЯМ РАЗМЕР ЗАКАЗА К ЗАПАСУ
zapas = zapas + zakaz
vipolneniye_zakaza = 0 % ОБНУЛЯЕМ СЧЕТЧИК ВЫПОЛНЕНИЯ ЗАКАЗА
dni_prihoda_zakaza(end+1) = day;
end
% БЛОК ВЫПОЛНЕНИЯ ЗАКАЗА
if zapas <= 75 & vipolneniye_zakaza ~= 1 % ЕСЛИ ЗАПАС < ТОЧКИ ЗАКАЗА
%(75) И НЕТ ЗАКАЗА КОТОРЫЙ ЕЩЕ В ПУТИ, ТО ФОРМИРУЕМ НОВЫЙ ЗАКАЗ
r2 = rand()
%НАХОДИМ СРОК ВЫПОЛНЕНИЯ ЗАКАЗА ПОДСТАВЛЯЕМ СЛУЧАЙНОЕ ЧИСЛО В
% КУММУЛЯТУ С ВЕРОЯТНОСТЯМИ
srok_vipolneniya = srok_vsego(max(find(veroyatnost2<r2)))
% НАХОДИМ КОГДА ЭТОТ ЗАКАЗ ПРИДЕТ. К СЕГОДНЯШНЕМУ ДНЮ
%ДОБВЛЯЕМ СРОК ВЫПОЛНЕНИЯ
vremya_prihoda_zakaza = day + srok_vipolneniya
% УКАЗЫВАЕМ ЧТО ЗАКАЗА ВЫПОЛНЯЕТСЯ
vipolneniye_zakaza = 1
%ПЕРЕМЕННЫЕ ДЛЯ ПОДСТЧЕА
kol_vo_zakazov = kol_vo_zakazov + 1;
dni_zakaza(end+1) = day;
end
% ДОБАВЛЯЕМ ДНЕМВНОЙ ЗАПАС В МАССИВ ВСЕХ ЗАПАСОВ
zapas_day(day) = zapas;
end
zapas_day
kol_vo_zakazov
dni_zakaza
dni_prihoda_zakaza
x = 1:20
plot(x,zapas_day)
ВЫВОД
zapas_day =
Columns 1 through 12
79 78 78 78 77 77 76 75 74 78 78 78
Columns 13 through 20
77 76 75 78 76 74 78 78
kol_vo_zakazov =
3
dni_zakaza =
8 15 18
dni_prihoda_zakaza =
10 16 19
ГРАФИК ЗАПАСОВ
[pic 1]
% ВАРИАНТ 8
%ЗАДАЧА 6
% СМЫСЛ КОДА: ЕСЛИ ВЫБИРАЕТСЯ КАКАЯ РАБОТА ЭТИМ СТАНКОМ, СТОЛБЕЦ ИЗ МАТРИЦЫ УДАЛЯЕТСЯ И СЛЕДУЮЩИЙ СТАНОК НЕ МОЖЕТ ВЫБРАТЬ ЭТУ РАБОТУ
...