Курсовая работа: Решённое задание 2
Описание
Характеристики курсовой работы
Список файлов
- Прочти меня!!!.txt 136 b
- Решённое задание 2
- Immitation Modelling
- Immitation Modelling.alp 111,84 Kb
- task2.txt 2,21 Kb
- мануал (avasite).txt 5,74 Kb
Файл скачан с сайта StudIzba.com
При копировании или цитировании материалов на других сайтах обязательно используйте ссылку на источник
Задание 2
Исходные данные: система клиент-сервер, см. слайды 16-20 к лекции 3
Требуется
- построить имитационную модель; допускется принять все пакеты запросов одинаковой длины; то же с пакетами ответов
- провести серию экспериментов:
- задать экспоненциальные распределения для времени генерации запроса клиентом и для времени генерации ответа сервером;
- подобрать параметры распределения так, чтобы очередь не росла бесконечно.
- исследовать зависимость длины очереди к серверу от числа клиентов.
Конкретизация объема и порядка исследования - на усмотрение студентов. Выбор средства моделирования - тоже (важно, чтобы модель можно было бы предъявить лектору)
Приветствуется сопоставление результатов с расчетами по теории массового обслуживания, допускается упрощение модели, исключение из нее части компонентов, чтобы простые модели массового обслуживания были применимы.
Допускается замена исходной системы на другую и изменение задачи исследования, по выбору студента, если в модели используются более детальные модели сетевых протоколов, чем было описано в исходных данных.
Принятое задание 2 дает 3 балла оценки на экзамене (т.е. минус три вопроса)
Несделанное задание 2 - 0 баллов
Сделанное частично - по усмотрению лектора
Итак, я делал модель для AnyLogic University.
Штука очень мощная и сложная, и я лишь опишу немного необходимого минимума, который будет полезен для выполнения задания, но правильным, или нормальным в промышленном смысле это не назвать.
Вообще хорошо, что порог входа низкий.
1) AnyLogic - позволяет создавать модель из элементов, в которых, прописывается логика на языке Java
2) Вы можете глянуть мою модель по структуре, и можете посмотреть любую другую модель из стандартных, которая установится вместе с программой.
3) Справка -> Справка Anylogic -> там находим любую ссылку и через правую кнопку мыши открываем "Открыть в новом окне", при этом справка откроется в браузере, откуда её просматривать комфортнее.
Самое полезное место там под названием "Классы и функции AnyLogic" - потому что там рассказано API - какие есть методы у тех или иных объектов, которые вы можете создавать (будь это график, кнопка, массив объектов (assets) или чтобы то ни было ещё)
4) Можно создавать целую визуализацию для модели, для этого можете запустить любую модель из стандарта (Air Defense System - достаточно не проста, но мозг способен её осилить), потом откройте мою и увидите модель без визуализации.
Не пугайтесь, всё не так уж и плохо.
5) Есть вкладка в верхнем левом - "проекты". Там вы найдёте внутри своей открытой модели:
1) Simulation:Main - это просто окошко приветствия, потом будет.
2) Main - тут всё начинается, воспринимайте это как глобальную область видимости, вообще все assets вложенные друг в друга - это как вложенные классы, т.е. области видимости
3) Я ещё создал assets под названиями Client, Server и Session - это по сути большие классы, в которых я потом описываю поведение и зависимости.
4) Чтобы поместить объект например Server в Main - достаточно просто перетащить нужную иконку на область визуализации (откроется, если 2-ды щёлкнуть по нужному asset).
5) Дальше можно добавлять элементы поведения, я использовал следующие:
1) Диаграмма состояний - описывает, как себя ведёт объект - ткните в её узлы и рёбра и посмотрите, что можно для них указывать - это удобно.
2) Переменные (обычно я их кучкой сбоку располагал)
3) У вас порой автоматизированно будут создаваться "connections", и ссылки (стрелочки вверх, ссылающиеся на объекты(assets), в которых вы пользуете данный asset) - не удаляйте их, могут пригодиться.
4) Можно добавлять кнопки и поля ввода - полезно то, что их можно связывать с соответствующими переменными, и задавать граничные значения
5) Графики - просто перетащить и заполнить поля, которые вам нужны и будет счастие.
6) Теперь про java.
Anylogic автоматически генерирует много методов для тех assets, которые вы генерируете, да и вообще много всякого.
Изучать это можно долго и плодотворно, но мне хватило следующего:
add_clients() - добавляет 1 клиента к тому множесву клиентов, которое уже существует, важно, что имя того массива assets должно совпадать с "clients" в данном случае, и в зависимости от того, в какой области видимости вы это сделаете.
remove_clients() - аналогично
session.sessionBehaviour.fireEvent("Clie ntProcessedIt"); - очень важно для синхронизации, ибо это посылка сообщения объекту session в его граф управления под названием sessionBehaviour (название точки входа этого графа).
ПРОСЬБА:
Я тут отметил лишь 3 вещи, однако уверен, что есть ещё очень полезные вещи, которые тут стоит упомянуть. ("полезные" - в данном случае прагматичное слово, ориентированное на то, что да - в мире много крутых пряников, но упомянуть здесь стоит лишь то, что действительно полезно)
Так что просьба, если кто-то считает, что есть что-то полезное, чем стоит дополнить это место, - пишите на почту.
Видать это синтаксис java (я просто не знаток, никогда на ней не писал, пришлось первый раз), но судя по всему это:
for (Client client : clients) {i = i + 1;}
перебирает в цикле всех клиентов, что там есть.
На чём я запарывался:
1) Настоятельно советую синхронизироваться при помощи сообщений (я как-то раз пытался сделать в одном месте через переменную, но у меня почему-то не полетело, и пришлось там тоже впилить сообщения)
2) Если вы не уменьшите частоту дискретизации в графике, то можете случайно пропускать некоторые состояния, и видеть неверные картинки, хотя всё работает ок.
3) И конечно же иногда я тупил просто так.
Каким образом скорее всего стоит начать выполнять задание:
1) Придумать, какие есть объекты
2) Придумтаь иерархию, т.е. кто кого содержит (т.е. какой asset вложен в какой, и чем он является - одним экземпляром, или коллекцией их)
(можно реализовать иерархию)
3) Придумать Диаграмму состояний и правильно назвать каждое состояние, если вы смогли назвать все состояния и в голове всё сошлось, то возможно вам уже не придётся переделывать архитектуру.
(придумываем вместе с рисованием диаграмм, что-то придётся перерисовывать, но в целом дорисовывая то одну то другую, можно будет таки собрать картинку в целое)
4) А теперь занимаемся синхронизацией диаграмм, вставляя туда посылки сообщений, и вставляя туда всякие ограничения или вызовы, ... по пути создавая все нужные нам переменные
(чем-то uppaal напоминает не так ли? )) )
5) Пидумываем, какие параметры для уже построенной и рабочей системы можно легко встроить - встраиваем их и делаем для них формочки кнопочки, ...
В итоге получаем систему с кучей параметров, отчего лектор наверно будет доволен.
В целом я свою работу выполнил погано, что было связанно с тем, что я пытался въехать в "БОРОДА МЕРЛИНА!!!, ДА ЧТО ТУТ ВООБЩЕ ТВОРИТЬСЯ !!!", сразу слёту, и никаких 1000 страницных мануалов я читать не хотел, а коротких не было, так что моя модель - не пример для подражания, но вполне пример для обучения.
Начать зарабатывать