×Закрыть

Задачка з теорії ймовірності

Не можу вирішити задачу, чисельно розв’язав, а треба аналітично.

Є система, що охоплює два станки А і В, з інтенсивніостями відмов ra і rb, відповідно. Станки працюють одночасно. Станок А активний 24 год. на добу, станок В періодично зупиняють на 15 хв після кожних 45 хв роботи.

Система падає, коли обидва станки зупиняються.
Зупинка станка В не впливає на роботу станка А.
Зупинка станка А змушує працювати станок В без відпочинку, при цьому його інтенсивність поломок зростає в двічі.

Потрібно аналітично вивести закон розподілу часу до падіння всієї системи.

LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Вообще—то такие задачи решаются сетями Петри.
ru.wikipedia.org/wiki/Сети_Петри

Можно и математически, но сложно и я не люблю математику.

Потрібно аналітично вивести закон розподілу часу до падіння всієї системи.

Так не получится. Можно так «Через какое время вероятность выхода из строя всей системы будет больше хх%». Так же в задаче надо знать вероятность выхода из строя станка это за какое время за 1 минуту, 1 час или 1 день. Скажем за 24 часа станок может выйти из строя с вероятностью 1%.

Для начала я бы упростил задачу до состояния есть станок А и Б с вероятностями выхода из строя Ав и Бв.

В таком случае 1 — (1 — Ав)(1 — Бв) это будет вероятность выхода станка за время t (минут, часов, дней)

Дальше сложно прикинуть как оно будет так как при определенном подборе интервала работы может случится так, что станки ваши сдохнут еще до выключения станка Б и его выключением, а так же увеличением вероятности поломки можно пренебреч.

MTTF = (1 + 0.5*ra/rb + 0.75*rb/ra) / (ra + 0.75*rb)

Як з MTTF перейти до закону розподілу часу t до падіння?

Вы про «наработку на отказ» MTBF? Так это вероятностная величина, которая даст вероятное время отказа системы.
ru.wikipedia.org/wiki/Наработка_на_отказ

Хорошая задачка про RAID 5. Молись, чтобы тебе не пришлось решать её в реале — потому что рассыпавшийся RAID это весело!

Есть три типа админов, те которые не делают бекапы и ...
ну ты понял ))

Есть один тип программистов — которые знают, чего стоит восстанавливать данные по логам транзакций на основе позавчерашнего бэкапа, и могут это сделать в завтрашний день сегодняшний ноч; и говнокодеры, которые хлопают ушами на конференциях про 200500-й уровень абстракции с крутым названием

Ох уж этот один тип программистов, которые бекапы восстановил валют...

поломки В нам не цікаві, доки працює А. Ймовірність поломки зростає з часом (одиниця неможлива), можна описати аналітично.
коли А нарешті вломився, можемо вважати В свіжоввімкненим (незначна похибка в початкових умовах), і рахуємо ймовірність поломки В. Тоді і кирдик.
Якщо до задачі додати ще час на відновлення А і час на відновлення В після поломки — тоді вже можна щось придумувати.
ПС. Ймовірність — не страховка, гарантій не дає.

Якщо А зламається під час відпочинку В, то за умовами буде кірдик системі. Так що, вважаю, впливає.

А як врахувати те що до кирдика А, В може накритися?

«В» задається звичайною періодичною функцією, така собі пилка: 0 на 45 хв, і 1 на 15 хв. А далі — простий баєс, причому ймовірність «не поломки» «А» постійно зменшується, і ймовірність «кирдика» на зубцях (15 хв) рівна ймовірності поломки «А», в інших випадках — при поломці «А» відслідковуємо ймовірність поломки «В». Якщо нехтувати незначними похибками, відразу можна рахувати «подвоєну ймовірність поломки», пов’язану з безупинною роботою.

Берём среднее время поломок на станке А. Как только А падает, то станок Б становится в режим работы станка А, и у нас есть известное среднее время поломки А, после чего системе кирдык

станок В може не дожити до кирдика А, як врахувати таку ситуацію?

О! Тогда мы проводим аналитику по отказам и получаем закономерность — станок А, который работает без перерыва ломается реже, чем станок Б. По той же причине, по которой сгорают лампочки — в момент включения.

Як міняється інтенсивність потоку відмов на В, якщо А поламався? його не вимикають кожні 15 хв?

Інтенсивність поломок зростає в двічі, плюс
його не вимикають.

Станок А активний 24 год. на добу
Зупинка станка А змушує працювати станок В

Противоречивые условия, из первого условия следует что станок А никогда не останавливается

Вони ломаються. Якщо поламався А, то оператор не вимика станок В на 15 хв перерву, і так поки В не поламається, тоді система впала.

Летіли два крокодила: один синій, а другий — на північ. Питання: нащо бабі холодильник, як вона не курить?

Вніс виправлення в умову задачі, перепрошую.

На жаль, цих виправлень недостатньо.

Зупинка станка А змушує працювати станок В без відпочинку з подвоєною продуктивністю.

звідки взялась продуктивність?

Якщо поламався А, то оператор не вимика станок В на 15 хв перерву, і так поки В не поламається, тоді система впала.

Це важливо, чому не прописано в умові?
Якщо А поламався доки Б вимкнено, то це «система впала», чи просто переривають простій Б і вмикають його?
Вичитайте, будь ласка, умову, або прикріпіть скріншот звідки Ви її взяли, бо готовий битися об заклад, що там ще п’ять помилок знайдеться як пошукати.

P.S. Щоб два рази не вставати, можу підкинути ідею щодо розв’язку. Я в цьому всьому не дуже розбираюся, але на перший погляд це задача на Марківські процеси. Тоді першим кроком мало би бути визначення станів (я б запропонував 5 штук: (A-on,B-on), (A-on,B-failure), (A-failure, B-on), (A-on, B-maintenance), (A-failure, B-failure)). Далі малюється граф переходів з transition rate (для свідомого вимкнення на 15 хв я думаю гріха не буде просто поставити rate 1/4 в сторону maintenance і 3/4 назад). По графу складається пачка дифур на «збереження ймовірності» — зміна ймовірності в вузлі з часом рівна сумі «притоку» та «витоку» — виходить система лінійних дифур. Потім це все рішають і отримують якійсь експоненти. Я ключові слова дав — далі гугл більше допоможе :)

Виправив щойно
«при цьому його інтенсивність поломок зростає в двічі»

А як щодо

Якщо А поламався доки Б вимкнено, то це «система впала», чи просто переривають простій Б і вмикають його?

І ще одне

Зупинка станка В не впливає на роботу станка А

Якщо це задача з задачника, то швидше за все зупинка Б має подвоювати інтенсивність поломок А, бо лише так можна отримати достатньо компактний вираз

   P[fail,fail](t) = [ ra*{1 - exp(-2*rb*t)} - rb*{1 - exp(-2*ra*t)} ]/(ra-rb)
В інших випадках буде таке, що навіть я не хочу на то дивитися. Ну або я чогось не знаю і воно має розв’язуватись зовсім по-іншому. Добре би хтось з місцевих статистиків щось сказав.

Гадаю, саме в тому і полягала задача: відсіяти тих, хто БУДЕ шукати справжнє рішення (складне) — від тих, хто спробує вгадати відповідь або буде підганяти умови під відповідь.

Це запросто може бути тестом в серйозну контору, і ≈98 із 100 його завалять ще на етапі наміру вирішити правильно.

Але тут дуже серйозне питання — ХТО тестує, та ХТО складав тест. Бо якщо вони не належать до тих 2%, то саме вони й відсіють 100% потрібних людей. А потім будуть здивування на кшталт «лідєра ринка»

Все може бути. Але маю ще й другу думку. Я колись мав щастя чуть-чуть вести пари по матаналізу і з того часу дуже добре знаю, що «не тільки лиш всі» © можуть донести умову від задачника до дошки. А коли хтось просить допомогти з розв’язком і щось формулює по пам’яті, то це дуже часто просто атас — в особливо тяжких випадках робили ставки скільки помилок знайдеться в умові, якщо порівняти її з оригіналом з задачника. Тому я майже завжди прошу показати звідки то взято, бо майже гарантовано в формулюванні буде помилка, яка зробить задачу з простої нерозв’язною.

Це одне з трьох завдань тесту на позицію Senior DS, на них дається 24 год.

Опублікувавши на DOU до відправки відповіді ти ВЖЕ завалив тест :)

Питання ж не в тому, чи можна вирішити ймовірність. А в тому, чи коректно поставлена умова, чи виявиться що «малося на увазі». І в тому, чи той хто проводить тестування розуміється на темі, чи лише скопіпастив десь завдання і відповідь виявиться «невірною» через перестановку місцями множників.

Опублікувавши на DOU до відправки відповіді ти ВЖЕ завалив тест :)

Ні, я опублікував на ДОУ через 7 днів після відправки відповіді.

Питання ж не в тому, чи можна вирішити ймовірність. А в тому, чи коректно поставлена умова, чи виявиться що «малося на увазі». І в тому, чи той хто проводить тестування розуміється на темі, чи лише скопіпастив десь завдання і відповідь виявиться «невірною» через перестановку місцями множників.

Для мене питання який підхід варто було використовувати: Маркова, Байєса, чи інше?

А як щодо

Якщо А поламався доки Б вимкнено, то це «система впала», чи просто переривають простій Б і вмикають його?

Про це не сказано в умові, але я думаю переривають простій Б і вмикають його, бо станок Б справний, просто на покої.
А де у вашому розподілі P[fail,fail](t) враховано 15 хв. відпочинки кожних 45 хв. роботи?
Не подобається мені знаменник

(ra-rb)

, на прктиці нічого страшного немає коли ra = rb, а з вашого розподілу там 0

Не подобається мені знаменник

Ех, а скільки всього мені в цьому житті не подобається... Насправді, там все буде гуд. Побачити це можна різними способами, але щоб зберегти хоч частково формальності підійде таке:
1. Спрямовуєте ra -> rb (або навпаки, без різниці)
2. Зауважуєте, що до нуля прямує не лише знаменник, але й чисельник
3. Застосовуєте правило Лопіталя
4. PROFIT
Для r = ra = rb вираз мав би переписатися якось так

   P(t) = 1 - (1 + 2 * r * t ) * exp(-2 * r * t)
А де у вашому розподілі P[fail,fail](t) враховано 15 хв. відпочинки кожних 45 хв. роботи?

Схоже, що при взятих мною початкових умовах вони на імовірність опинитися в кінцевому стані не впливають. Ну або я десь промахнувся в розрахунках (хоча ніби як все перевіряв в Wolfram Mathematica). Якщо прийдете до іншої відповіді — залиште коментар що у Вас вийшло.

Порівняв ваш кумулятивний розподіл P[fail,fail](t) з моїм Монте Карло моделюванням, ліве крило і максимум співпадають точно, але праве крило у вас чомусь занижене сильно.

Схоже, що при взятих мною початкових умовах вони на імовірність опинитися в кінцевому стані не впливають. Ну або я десь промахнувся в розрахунках (хоча ніби як все перевіряв в Wolfram Mathematica). Якщо прийдете до іншої відповіді — залиште коментар що у Вас вийшло.

Те що верстат В відпочиває 75% часу коли А працює, впливає на те що його його ефективна інтенсивність відмов спочатку rb*0.75, а потім rb*2 коли А поламався. Може в цьому різниця?

ліве крило і максимум співпадають точно, але праве крило у вас чомусь занижене сильно

А що у Вас від чого залежить на графіку? Просто P[fail,fail](t) монотонно зростає від нуля до 1 (при t -> нескінченності), не дуже розумію про який максимум йдеться.

інтенсивність відмов спочатку rb*0.75, а потім rb*2 коли А поламався

В мене трохи не так — нема ніде інтенсивності rb*0.75, а є проміжний стан (A-on, B-maintenance), куди можна попасти з інтенсивністю 0.25 і вийти звідти або через 2*ra в (A-failure, B-on), або з 0.75 в (A-on,B-on).

                 ---------       2*ra
        rb       |A: on  |----------------|
   ------------->|B: fail|                |
   |             ---------                | 
   |                                      V
-------          ---------    2*rb   ---------
|A: on|   ra     |A: fail|---------->|A: fail|
|B: on| ------- >|B: on  |           |B: fail|
-------          ---------           ---------
 A  |                A 
 |  |                | 2*ra
 |  |    1/4     ----------------
 |  ------------>|A: on         |
 ----------------|B: maintenance|
    3/4          ----------------
А що у Вас від чого залежить на графіку? Просто P[fail,fail](t) монотонно зростає від нуля до 1 (при t -> нескінченності), не дуже розумію про який максимум йдеться.

dP/dt, розподіл часу падіння системи.

Що порекомендуєте почитати, чи курси, по розв’язку Марківських процесів?

dP/dt, розподіл часу падіння системи
ліве крило і максимум співпадають точно, але праве крило у вас чомусь занижене сильно

Якщо ці графіки там ніде далі не перетинаються і мій не «вирулює наверх», то боюсь, у Вас десь промашка. Справа от у чому: якщо я проінтегрую dP/dt від нуля до нескінченності, то маю отримати P(t -> нескінченність). Якщо виконати такий граничний перехід в приведеному мною виразі, то буде

P[my](t->нескінченність) = 1
Цей результат збігається з інтуїтивно очікуваним — прилади можуть тільки ламатися і їх ніхто не ремонтує, тож не дивно, що якщо достатньо довго почекати, то ми таки дочекаємось, що вони зламаються. Тепер до проблеми.
ліве крило і максимум співпадають точно, але праве крило у вас чомусь занижене сильно

Це означає, що для всіх t

dP[yours](t)/dt >= dP[my](t)/dt
Якщо я проінтегрую цю штуку від 0 до нескінченності та врахую попередній вираз, то отримаю
P[yours](t->нескінченність) >= P[my](t->нескінченність) = 1
Строго доводити цей перехід не буду, просто подивіться на інтеграл як на такий собі «варіант суми» і зауважте, що доданки в першій сумі більші за відповідні доданки в другій. Це би все нічого, але ж Ви кажете, що dP[yours](t)/dt на значній частині проміжку інтегрування строго більший за dP[my](t)/dt, а значить знак >= треба змінити на строго >, що означає
P[yours](t->нескінченність) > 1
Виходить, що у Вас імовірність приладів зламатись з часом переростає одиницю. Мені це здається поганою ознакою, можливо Вам варто переглянути код ще раз.
Що порекомендуєте почитати, чи курси, по розв’язку Марківських процесів?

Боюсь, я сам не можу похвалитися, щоб щось таке по них читав... Я все надіявся, що місцеві статистики щось підкинуть, але якщо так на око, то відповідний розділ має бути в будь-якій класичній книжці по випадкових процесах, наприклад
* Феллер В., введение в теорию вероятностей и её приложения, Т.1
* Гихман И., Скроход А., Введение в теорию случайных процессов
або що-небудь по теорії черг, наприклад
* Breuer L., Baum D., An introduction to queueing theory and matrix-analytic methods
Але зразу скажу, що то книжки для математиків, то вони так трохи... своєрідно написані.

Якщо ж достатньо просто розібратися як аналогічні задачі мали б по ідеї робитися, то от я цікаве посилання накопав
* www.mathpages.com/...​/kmath232/part3/part3.htm
розберіть там підрозділ 3.5, особливо як ті дифрівняння скласти (як їх розв’язати то окрема проблема). Потім можете спробувати сили на рівнянні Міхаеліса-Ментен (це штука з біохімії, але що потоки речовин що імовірностей — математика там одна й та сама)
* en.wikipedia.org/...​Michaelis—Menten_kinetics
Подивіться на граф у розділі Model і спробуйте отримати рівняння, що будуть в розділі Derivation. Коли будете впевнено таке збирати, то можна освоїти якийсь метод розв’язку, наприклад через матричну експоненту
* en.wikipedia.org/...​erential_equation_systems

Надіюсь, щось з цього допоможе :)

якщо я проінтегрую dP/dt від нуля до нескінченності, то маю отримати P(t -> нескінченність).

Маєте отримати 1, і в моєму і в вашому випадку, справа не в тім.
Коли я кажу що ліве крило і положення максимуму співпадають, я маю на увазі з точністю до нормалізації. З інтегралами від 0 до нескінченність все в порядку.

Дякую за посилання, буду вчитися скаладати диф. рівняння для Марковського процесу.

Так, швидше все Марковськими ланцюгами її і треба розв’язувати, дякую.

Что такое в этой задаче ’падение системы’ и причем тут продуктивности станков?

Сорі, помилився, ra, rb це інтенсивності відмов (failure rate). Виправив в тексті. Падіння системи, це коли два станки відмовили .

Подписаться на комментарии