Портал аспирантов

Портал аспирантов (http://www.aspirantura.spb.ru/forum/index.php)
-   Свободное общение (http://www.aspirantura.spb.ru/forum/forumdisplay.php?f=102)
-   -   Игрушки Келлермана (http://www.aspirantura.spb.ru/forum/showthread.php?t=12657)

kravets 26.03.2014 15:35

Цитата:

Сообщение от Paul Kellerman (Сообщение 433143)
kravets, так правый столбец - это расчетные вероятности состояний системы,
а не отдельных элементов. P0 - вероятность того, что все элементы исправны,
P1 - вероятность того, что ровно один элемент отказал (неважно какой), и так
далее, P10 - вероятность того, что все 10 элементов отказали. Естественно, что
вероятности разного количества отказавших элементов системы неодинаковы.
Такой подход - это в соответствии с теорией надежности, ничего не выдумывал.

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

Paul Kellerman 26.03.2014 15:50

kravets, нет, не нормальное, а биномиальное распределение с
параметрами n = 10 и p = failure_rate / (repair_rate + failure_rate).
Но это так только при независимых отказах и восстановлениях.

kravets 26.03.2014 15:58

Цитата:

Сообщение от Paul Kellerman (Сообщение 433153)
kravets, не нормальное, а биномиальное распределение
с матожиданием 10 * repair_rate / (repair_rate + failure_rate).
Но это только при независимых отказах и восстановлениях.

Да, похоже

Ilona 26.03.2014 16:16

Paul Kellerman, спасибо! на машинках понятно))

Paul Kellerman 27.03.2014 11:22

kravets, и еще, согласно центральной предельной теореме (теория вероятностей)
биномиальное распределение с ростом параметра n стремится к нормальному
с матожиданием n * p и дисперсией n * p * (1 - p). Так что все вполне объяснимо.

kravets 27.03.2014 11:36

Цитата:

Сообщение от Paul Kellerman (Сообщение 433337)
биномиальное распределение с ростом параметра n стремится к нормальному

Ага. Значит ощущение все-таки было правильным.

Добавлено через 51 секунду
Но меня больше интересует технологическая часть - как оно у Вас тикает в потоках?

Paul Kellerman 27.03.2014 12:13

Всего 12 потоков.

10 потоков имитируют 10 элементов. Каждый поток в каждый момент времени
находится в одном из двух состояний (элемент исправен, элемент неисправен),
и меняет свое состояние на противоположное через экспоненциально распреде-
ленное случайное время с матожиданием 1/failure_rate, если элемент исправен,
1/repair_rate, если неисправен. В течение этого случайного времени поток спит.
Если режим отказов Single, то все исправные потоки перед началом наработки
на отказ пытаются захватить мьютекс (специальный исключающий семафор,
его может захватить только один поток, остальные ждут пока не освободиться).
Если режим восстановлений Single, то все неисправные потоки перед началом
наработки на восстановление пытаются захватить другой аналогичный мьютекс.

Отдельный специальный поток работает и собирает статистику и рассчитывает
экспериментальные вероятности путем запроса состояний потоков - элементов
с периодичностью 0,001 сек. Можно чаще, но нет особой нужды, и так успевает,
элементы в среднем меняют состояние раз в 1 секунду при max интенсивности.

Ну и плюс основной поток программы, который запускает и останавливает осталь-
ные потоки, обслуживает интерфейс пользователя, обрабатывает действия пользо-
вателя, и раз в 20 мс по таймеру обновляет отображаемую на экране информацию.

kravets 27.03.2014 12:24

Цитата:

Сообщение от Paul Kellerman (Сообщение 433349)
Если режим отказов Single, то все исправные потоки перед началом наработки
на отказ пытаются захватить мьютекс (специальный исключающий семафор,
его может захватить только один поток, остальные ждут пока не освободиться).

Вот это не понял. Они ведь все должны работать "одновременно". Зачем их блокировать?

Добавлено через 48 секунд
Цитата:

Сообщение от Paul Kellerman (Сообщение 433349)
Ну и плюс основной поток программы, который запускает и останавливает осталь-
ные потоки, обслуживает интерфейс пользователя, обрабатывает действия пользо-
вателя, и раз в 20 мс по таймеру обновляет отображаемую на экране информацию.

По сути исполнитель событийных запусков.

Добавлено через 1 минуту
Цитата:

Сообщение от Paul Kellerman (Сообщение 433349)
Отдельный специальный поток работает и собирает статистику ... путем запроса состояний потоков - элементов

Это усложняет. Проще держать в общей памяти вектор состояний, не отвлекая потоки на ответ.

Paul Kellerman 27.03.2014 12:32

1) Cемафоры используются только в режимах Single, в Independent они игнорируются.

2) Таймер используется только для обновления экрана, в моделировании не участвует.

3) Потоки не отвлекаются на ответ, они вообще не замечают таких запросов, т.к. поток
статистики тратит свое процессорное время при считывании флагов состояний потоков.
И кстати, поля (переменные) объектов-потоков так и так лежат в общей памяти процесса.

Paul Kellerman 26.12.2014 10:09

Вложений: 1
Новогодняя игрушка для технарей. Enjoy!

Простенький решатель марковских цепей (стационарное решение) для простеньких моделей надежности.
По заданному количеству состояний, матрице интенсивностей переходов и булевому вектору, указываю-
щему на работоспособные состояния) рассчитывает стационарные вероятности всех состояний системы,
стационарный коэффициент готовности, среднее время наработки на отказ, среднее время восстановле-
ния, а также среднее время наработки до первого отказа (причем никаких диффур, ноухау Келлермана).
Особенность: хотя интенсивности, вероятности и наработки вводятся и выводятся в виде вещественных
чисел, но вся внутренняя обработка производится в рациональных числах на базе сверхбольших целых,
это позволяет очень аккуратно решать модели, приводящие к плохообусловленным системам уравнений.

P.S. Сама по себе программа расчета (с использованием обычной вещественной float-80 обработки) была
написана давно, но особые случаи, приводящие к плохообусловленным СЛАУ (их не так много, и все же),
дающие в результате решения неверные или даже отрицательные вероятности дико раздражали, и приш-
лось погрузиться в вычислительную математику и арифметику сверхбольших целых, и победить проблему.


Текущее время: 02:23. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, vBulletin Solutions, Inc. Перевод: zCarot
© 2001—2025, «Аспирантура. Портал аспирантов»