С Новым годом! Форум программистов, компьютерный форум, киберфорум
AnyLogic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
1

Создание временной диаграммы

20.03.2016, 13:22. Показов 2396. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Мне для диплома необходимо создать модель функционирования объекта, состоящая из 29 состояний и порядка 260 переходов. Переход между ними я решил реализовать посредством Exit - Enter (для меня так показалось проще, т. к. изучаю программу самостоятельно)

Однако возник вопрос - как создать график вероятности нахождения объекта в одном из состоянии?! Суть в том, что состояния все разноплановые и вероятности определяются различными законами распределения. Можно ли создать базу данных для каждого состояние типа "Время - вероятность", а после эту базу перенести на временной график?
Миниатюры
Создание временной диаграммы  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.03.2016, 13:22
Ответы с готовыми решениями:

Программа для создания временной диаграммы
Есть ли программа для создания временнОй диаграммы вроде той, что на рисунке? В Интернете ничего...

Создание круговой диаграммы брать данные для диаграммы из dataGridView1 ?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data;...

Создание временной таблицы
Есть несколько таблиц в базе mdb. Необходимо применить SQL запрос на выборку некоторых данных, а...

Создание временной страницы
есть страница index.php, в ней в выпадающих списках выбираются данные, нужно что-бы создалась новая...

13
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
20.03.2016, 21:00 2
Добрый день.
Цитата Сообщение от DenRacer Посмотреть сообщение
график вероятности нахождения объекта в одном из состоянии
Хорошо бы уточнить задачу. Что такое график вероятности? плотность вероятности вы имеете ввиду? Вам нужно узнать стационарные вероятности нахождения заявок в состояниях модели? Для этого как вы написали нужно узнать доли времени пребывания модели в каждом состоянии. Отношение времени в состоянии к общему времени моделирования и выдаст вероятность состояния.

Лучше всего хранить данные по времени в состоянии в простом одномерном массиве. Могут понадобиться побочные массивы или переменные для хранения времени входа в состояние, чтобы можно было вычислить по выходу время пребывания. после вычисления время пребывания просуммировать в соотвествующий элемент матрицы, в зависимости от номера состояния.
0
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
20.03.2016, 21:52  [ТС] 3
Попробую описать задачу: каждое состояние имеет свой закон распределения со своими параметрами распределения: экспонента, нормальный и гамма-распределение. В каждый момент времени система может из определенного состояния перейти в какое-либо i-ое состояние, естественно с определенной вероятностью, обусловленной законами распределения i-ых состояний и временем перехода.

В дипломе того года есть такая фраза, которая, как мне кажется, аналогична вашей
"В ходе работы модели были посчитаны все девять вероятностей нахождения объекта в каждом из состояний, как частное времени нахождения объекта в одном из состояний и общего времени функционирования системы"

Как это можно реализовать? И создать например не график, а базу данных, чтобы после график изобразить в Exel? Просто в том году видимо Exel применялся, а не Anylogic
Миниатюры
Создание временной диаграммы  
0
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
21.03.2016, 15:51 4
Как узнать суммарное время в состояниях модели.

Первоначально можно создать переменные для каждого состояния, дать им осознанные имена. Также создать общую переменную времяВхода
При входе в состояние описать действие - времяВхода=time(); // Запоминаем время входа в состояние

При выходе из состояния нужно вычислить время в состоянии и добавить к переменной для получения общего времени в состоянии.
double времяВСостоянии = time()-времяВхода; // Вычислили время активности состояния
переменная в которой храним суммарное время в состоянии += времяВСостоянии;

Вот и всё. далее можете избавиться от кучи переменных заменив их матрицей, читайте работу java с массивами. Хотя можно и обойтись теми коллекция что предлагает anylogic, в принципе тоже самое.
0
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
22.03.2016, 23:01  [ТС] 5
Возник очередной вопрос, даже два:
1. Почему может быть такое различие в результатах при построении графика в Anylogic (1) и при сборе данных и построении в другой программе (2 и 3). Разница получается порядка +/- 0,1, т. е. порядка 10%
2. Возможно ли сделать график плавным? У меня сейчас идет сбор информации и соответственно скачок графика только при прохождении агента через состояние. Может переменную надо взять иную для расчет вероятности?
Миниатюры
Создание временной диаграммы   Создание временной диаграммы   Создание временной диаграммы  

0
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
23.03.2016, 07:52 6
Разница получается порядка +/- 0,1, т. е. порядка 10%
Малое время моделирования, ошибки в программах.

"Даже в самой простой и выверенной модели всегда найдётся хотя бы 1 ошибка" (с).

Возможно ли сделать график плавным? У меня сейчас идет сбор информации и соответственно скачок графика только при прохождении агента через состояние. Может переменную надо взять иную для расчет вероятности?
Ждать время когда величина усреднится. За счёт чего рывки получаются? за счёт того что изменение составляющей величины значимо влияет на результирующую величину.
0
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
23.03.2016, 08:55  [ТС] 7
Цитата Сообщение от Dukalys Посмотреть сообщение
Малое время моделирования, ошибки в программах.
Так суть в том, что программа одна и та же, но при построении графика она делает 44 прохода, а при исключении графика - 53, при этом имея разные значения
0
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
08.04.2016, 21:45  [ТС] 8
Вроде разобрался с проблемой разности результатов - надо было больше дать время моделирования

Но теперь возникла проблема - у меня все блоки имеют размерность минуты, но для точности результата надо прогонять систему порядка 100 млн. минут. По скромны подсчетам, по мере продвижения эксперимента, это может занять больше 10 дней! Можно ли ускорить процесс как-нибудь?
0
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
10.04.2016, 07:24 9
Можно ли ускорить процесс как-нибудь?
Сокращать вычислительную сложность модели, увеличивать производительность системы,изменить время моделирования с минут на большие единицы.

100млн минут наверное много и разницы в оцениваемых величинах с 50млн и 20млн будет не более чем 1-2%.
Время моделирования выбирают таким образом, чтобы после определённого установившегося значения, оно бы отклонялось не более чем на 1-5% от своего значения с течением длительного моделирования.

Снять характеристики на 5 - 10 - 20 -30 млн, посмотреть динамику изменения оцениваемой величины - может и после 5 млн минут нет смысла моделировать и величина установилась.
0
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
10.04.2016, 12:15  [ТС] 10
А можно попробовать сократить время задержки в каждом состоянии в одно и тоже число раз (допустим в 100 раз меньше) и в это же число раз уменьшить время моделирования. В принципе процесс не должен измениться. Что скажите?
0
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
10.04.2016, 12:29 11
Это игра с временем моделирования. Естественно ничего относительно не изменится, просто величины оцениваемых характеристик получите в других единицах и учтёте это при их анализе.

А вот уменьшится ли само время моделирования это конечно вопрос!\Модель без ошибок? Лишних перенаправлений зацикливаний нет? Верификация модели производилась? хотябы на уровне Window/Simulation Window/Block window и пошагового режима.
0
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
10.04.2016, 13:50  [ТС] 12
Ввиду того, что мне нужны значения установившегося режима, то система, будучи проверенной на адекватность, придет в конечном итоге к постоянным значениям
Получается так, что моделирование 1000 ед. модельного времени составляет порядка 10 сек, поэтому надо пытаться сократить время моделирования путем вот таких модуляций
0
1817 / 1031 / 285
Регистрация: 13.02.2012
Сообщений: 3,339
10.04.2016, 13:54 13
Реальное время моделирования в вашем случае 10 секунд определяется не столько временем моделирования 1000, сколько числом всяких математических и программных реализаций инструкций модели.
Сокращая 1000 вы должны сократить и время обслуживания, короче за теже реальные 10 секунд будет обработано столько же действий модели независимо от вашего модельного времени.
0
0 / 0 / 0
Регистрация: 20.03.2016
Сообщений: 19
10.04.2016, 14:01  [ТС] 14
В общем будем экспериментировать, и, надеюсь, что данный подход успешно реализуется

Спасибо за помощь
0
10.04.2016, 14:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2016, 14:01
Помогаю со студенческими работами здесь

Создание временной таблицы
Добрый день. Необходимо создать сводную таблицу с временной шкалой и обобщением выполненных...

Создание временной таблицы
Здравствуйте. Есть таблица с полями А,Б оба int. Значения А может повторяться несколько раз, но не...

Создание временной задержки
Помогите, создать программную задержку на атмегу 128, вот по такому заданию, и в таком формате...

Создание окон в Pyhton с временной задержкой
Помогите сделать так, чтобы создавалось окно win потом задержка 10 секунд и оно удаляется а win1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru