Белорусский государственный университет информатики и радиоэлектроники Кафедра ПОИТ Лабораторная работа №3 «Построение и исследование аналитической модели дискретно стохастической системы массового обслуживания» Вариант 25 Выполнил: студент гр.551005 Холодок Д. А. Проверил: Мельник Н.И. Минск 2018 1.ЦЕЛЬ РАБОТЫ Построение аналитической модели дискретно-стохастической системы и расчет параметров данной системы с использованием построенной модели. 2.ИСХОДНЫЕ ДАННЫЕ К РАБОТЕ На схеме условно обозначены: t1 = {1, 2} – состояние источника заявок t2 = {0, 1} – состояние 1-ого канала t3 = {0, 1} – состояние очереди t4 = {0, 1} – состояние 2-ого канала Общий вид кодировки состояния системы: {t1, t2, t3, t4} Вариант ρ π1 π2 Цель исследования 25 - 0,5 0,5 Pотк, Lоч, Wоч 2 3 3.ХОД РАБОТЫ Построим граф состояний СМО: 4 На основе графа построим СЛАУ: Воспользовавшись нормировочным уравнением и заменив в исходной системе любое уравнение данным, найдем решение СЛАУ при заданных π1 и π2: 5 Рассчитаем показатели эффективности: 6 4. РЕЗУЛЬТАТ ПРОГРАММЫ РАБОТЫ 5. ПРОГРАММНЫЙ КОД Scanner scanner = new Scanner(System.in); int numberCount = scanner.nextInt(); double n1 = scanner.nextDouble(); double n2 = scanner.nextDouble(); SystemQueue queue = new SystemQueue(); FirstChannel firstChannel = new FirstChannel(n1); Source source = new Source(); SecondChannel secondChannel = new SecondChannel(n2); source.setFirstChannel(firstChannel); firstChannel.setQueue(queue); firstChannel.setSecondChannel(secondChannel); firstChannel.setSource(source); queue.setSecondChannel(secondChannel); queue.setFirstChannel(firstChannel); secondChannel.setQueue(queue); Map<String, Integer> states = new HashMap<>(); for(int i = 0; i < numberCount; i++) { secondChannel.process(); String secondChannelState = String.valueOf(secondChannel.state()); String queueState = String.valueOf(queue.state()); String firstChannelState = String.valueOf(firstChannel.state()); String sourceState = String.valueOf(source.state()); 7 StringBuilder stringBuilder = new StringBuilder(); String generalState = stringBuilder .append(sourceState) .append(firstChannelState) .append(queueState) .append(secondChannelState).toString(); if (states.containsKey(generalState)) { states.put(generalState, states.get(generalState) + 1); } else { states.put(generalState, 1); } } System.out.println("\nStates : "); states.forEach((state, count) -> System.out.println(String.format("%s: %.3g", state, count / (numberCount * 1.0)))); System.out.println(String.format("\nSource failure : %.3g", (source.failureCount) / (source.requestCount * 1.0))); System.out.println(String.format("First channel failure : %.3g", (firstChannel.failureCount) / (source.requestCount * 1.0))); System.out.println(String.format("Summary failure : %.3g", (firstChannel.failureCount + source.failureCount) / (source.requestCount * 1.0))); System.out.println(String.format("Processed : %.3g", secondChannel.processedCount / (numberCount * 1.0))); System.out.println(String.format("Queue length : %.3g", queue.length / (numberCount * 1.0))); 6. ВЫВОД В данной работе была исследована дискретно-стохастическая модель СМО. Для нее был построен граф состояний, на основе которого была составлена СЛАУ и рассчитаны вероятности нахождения системы в каждом из состояний. Произведен расчет данных показателей эффективности: Pотк, Lоч, Wоч. Проведено имитационное моделирование системы. В ходе сравнения полученных статистических показателей с расчетными показателями сильных отклонений не выявлено. 8