Skip to Content

์‹œ๊ฐํ™”

๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ฐจํŠธ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ๋‚ด๋ณด๋‚ด๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐํ™”๋Š” matplotlib ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ์›น ๋Œ€์‹œ๋ณด๋“œ์™€ CLI ๋ชจ๋‘์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐจํŠธ ์ข…๋ฅ˜

์ฐจํŠธ์šฉ๋„๋ชจ๋“ˆ
Weibull ํ™•๋ฅ  ํ”Œ๋กฏ๋ถ„ํฌ ์ ํ•ฉ๋„ ํ™•์ธanalysis/domain/
๊ณ ์žฅ๋ฅ  ๊ณก์„  (์š•์กฐ ๊ณก์„ )์ˆ˜๋ช… ์ฃผ๊ธฐ๋ณ„ ๊ณ ์žฅ ํŒจํ„ดanalysis/domain/
์‹ ๋ขฐ๋„ ํ•จ์ˆ˜ ๊ทธ๋ž˜ํ”„์‹œ๊ฐ„๋ณ„ ์ƒ์กด ํ™•๋ฅ analysis/domain/
CDF (๋ˆ„์  ๊ณ ์žฅ ๋ถ„ํฌ)์‹œ๊ฐ„๋ณ„ ๋ˆ„์  ๊ณ ์žฅ ํ™•๋ฅ analysis/domain/
์‹œ๊ณ„์—ด ํ”Œ๋กฏ์›์‹œ ๋ฐ์ดํ„ฐ ํŠธ๋ Œ๋“œ ํ™•์ธsimulation/domain/
ํžˆํŠธ๋งต์˜จ๋„/์ „๋ฅ˜ ๋ถ„ํฌ ์‹œ๊ฐํ™”simulation/domain/

Weibull ํ™•๋ฅ  ํ”Œ๋กฏ

Weibull ํ™•๋ฅ ์ง€(Probability Paper) ์œ„์— ๊ณ ์žฅ ๋ฐ์ดํ„ฐ์™€ ์ ํ•ฉ์„ ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. X์ถ•์€ ์‹œ๊ฐ„(log), Y์ถ•์€ ๋ˆ„์  ๊ณ ์žฅ ํ™•๋ฅ (์ด์ค‘ ๋กœ๊ทธ ๋ณ€ํ™˜)์ž…๋‹ˆ๋‹ค.

ํ•ด์„ ๋ฐฉ๋ฒ•

  • ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๊ฐ€ ์ง์„ ์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก Weibull ๋ถ„ํฌ ์ ํ•ฉ๋„๊ฐ€ ๋†’์Œ
  • ์ง์„ ์˜ ๊ธฐ์šธ๊ธฐ๊ฐ€ ํ˜•์ƒ ๋ชจ์ˆ˜ ฮฒ์— ํ•ด๋‹น
  • ๊ณก์„  ํ˜•ํƒœ๋ฅผ ๋ณด์ด๋ฉด ํ˜ผํ•ฉ ๊ณ ์žฅ ๋ชจ๋“œ(Mixed Mode)๋ฅผ ์˜์‹ฌ

CLI์—์„œ ์ƒ์„ฑ

python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --plot probability \ --output results/weibull_probability.png

์˜ต์…˜

์˜ต์…˜๊ธฐ๋ณธ๊ฐ’์„ค๋ช…
--confidence-boundstrue์‹ ๋ขฐ ๊ตฌ๊ฐ„ ๋ฐด๋“œ ํ‘œ์‹œ
--point-stylescatter๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ์Šคํƒ€์ผ (scatter, step)
--dpi150์ด๋ฏธ์ง€ ํ•ด์ƒ๋„
--figsize10,7์ฐจํŠธ ํฌ๊ธฐ (์ธ์น˜)

๊ณ ์žฅ๋ฅ  ๊ณก์„  (์š•์กฐ ๊ณก์„ )

์ „์ฒด ์ˆ˜๋ช… ์ฃผ๊ธฐ์— ๊ฑธ์นœ ๊ณ ์žฅ๋ฅ  ๋ณ€ํ™”๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ณก์„ ์ž…๋‹ˆ๋‹ค. Weibull ํ•ด์ €๋“œ ํ•จ์ˆ˜ h(t) = (ฮฒ/ฮท) ร— (t/ฮท)^(ฮฒ-1)์„ ์‹œ๊ฐํ™”ํ•ฉ๋‹ˆ๋‹ค.

์„ธ ๊ตฌ๊ฐ„์˜ ์˜๋ฏธ

๊ตฌ๊ฐ„ฮฒ ๋ฒ”์œ„ํŠน์ง•๋Œ€ํ‘œ ์›์ธ
์ดˆ๊ธฐ ๊ณ ์žฅ๊ธฐฮฒ < 1๊ณ ์žฅ๋ฅ  ๊ฐ์†Œ์ œ์กฐ ๊ฒฐํ•จ, ์กฐ๋ฆฝ ๋ถˆ๋Ÿ‰
์šฐ๋ฐœ ๊ณ ์žฅ๊ธฐฮฒ โ‰ˆ 1๊ณ ์žฅ๋ฅ  ์ผ์ •์™ธ๋ถ€ ์ถฉ๊ฒฉ, ๊ณผ๋ถ€ํ•˜
๋งˆ๋ชจ ๊ณ ์žฅ๊ธฐฮฒ > 1๊ณ ์žฅ๋ฅ  ์ฆ๊ฐ€์ ˆ์—ฐ ์—ดํ™”, ๋ฒ ์–ด๋ง ๋งˆ๋ชจ

์‹ค์ œ ๋ชจํ„ฐ ์‹œ์Šคํ…œ์€ ๋ณต์ˆ˜์˜ ๊ณ ์žฅ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ค‘์ฒฉ๋˜๋ฏ€๋กœ, ๊ฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐœ๋ณ„ Weibull ๊ณก์„ ์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --plot hazard \ --output results/bathtub_curve.png

์‹ ๋ขฐ๋„ ํ•จ์ˆ˜ ๊ทธ๋ž˜ํ”„

์‹œ๊ฐ„์— ๋”ฐ๋ฅธ ์‹ ๋ขฐ๋„ R(t)๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. R(t) = exp(-(t/ฮท)^ฮฒ) ๊ณก์„ ์œผ๋กœ, ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ 1์—์„œ 0์œผ๋กœ ๊ฐ์†Œํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ์ฝ๊ธฐ ํฌ์ธํŠธ

  • R(t) = 0.90 ์‹œ์ : B10 ์ˆ˜๋ช…. ์ „์ฒด์˜ 10%๊ฐ€ ๊ณ ์žฅ
  • R(t) = 0.50 ์‹œ์ : B50 ์ˆ˜๋ช… (์ค‘์œ„ ์ˆ˜๋ช…)
  • ๊ณก์„ ์˜ ๊ธฐ์šธ๊ธฐ: ๊ธ‰๊ฒฉํ• ์ˆ˜๋ก ๊ณ ์žฅ์ด ํŠน์ • ์‹œ์ ์— ์ง‘์ค‘

๋ณต์ˆ˜ ๋ฐ์ดํ„ฐ์…‹ ๋น„๊ต

์„œ๋กœ ๋‹ค๋ฅธ ์‹œํ—˜ ์กฐ๊ฑด์˜ ์‹ ๋ขฐ๋„ ๊ณก์„ ์„ ํ•˜๋‚˜์˜ ์ฐจํŠธ์— ๊ฒน์ณ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

python -m simulation.runner \ --input data/test_normal.csv data/test_accelerated.csv \ --analysis weibull \ --plot reliability \ --labels "์ƒ์˜จ ์‹œํ—˜" "๊ฐ€์† ์‹œํ—˜" \ --output results/reliability_comparison.png

์‹ ๋ขฐ ๊ตฌ๊ฐ„ ํ‘œ์‹œ

์ถ”์ • ๋ชจ์ˆ˜์˜ ๋ถˆํ™•์‹ค์„ฑ์„ ๋ฐ˜์˜ํ•œ ์‹ ๋ขฐ ๊ตฌ๊ฐ„ ๋ฐด๋“œ๋ฅผ ํ•จ๊ป˜ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์‹ ๋ขฐ ์ˆ˜์ค€์€ 90%์ด๋ฉฐ, --confidence-level ์˜ต์…˜์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --plot reliability \ --confidence-level 0.95 \ --output results/reliability_with_ci.png

์‹œ๊ณ„์—ด ํ”Œ๋กฏ

์›์‹œ ์ธก์ • ๋ฐ์ดํ„ฐ์˜ ์‹œ๊ฐ„ ๋ณ€ํ™”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒ˜๋ฆฌ ์ „ํ›„ ๋น„๊ต, ์ด์ƒ์น˜ ์‹๋ณ„์— ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

python -m simulation.runner \ --input data/test_001.csv \ --plot timeseries \ --columns speed,torque,temp_winding \ --output results/timeseries.png

์—ฌ๋Ÿฌ ๋ฌผ๋ฆฌ๋Ÿ‰์„ ๋™์ผ ์‹œ๊ฐ„์ถ•์— ์„œ๋ธŒํ”Œ๋กฏ์œผ๋กœ ๋ฐฐ์น˜ํ•˜์—ฌ, ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฐ๊ณผ ๋‚ด๋ณด๋‚ด๊ธฐ

์ด๋ฏธ์ง€ ํ˜•์‹

ํ˜•์‹์˜ต์…˜์šฉ๋„
PNG--format png์›น, ํ”„๋ ˆ์  ํ…Œ์ด์…˜ (๊ธฐ๋ณธ๊ฐ’)
PDF--format pdf๋ณด๊ณ ์„œ ์‚ฝ์ž… (๋ฒกํ„ฐ)
SVG--format svg์›น (ํ™•๋Œ€ ๊ฐ€๋Šฅ)
# PDF๋กœ ๋‚ด๋ณด๋‚ด๊ธฐ python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --plot all \ --format pdf \ --output results/ # ์ „์ฒด ์ฐจํŠธ ์ผ๊ด„ ์ƒ์„ฑ python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --plot all \ --output results/

--plot all ์˜ต์…˜์€ Weibull ํ™•๋ฅ  ํ”Œ๋กฏ, ๊ณ ์žฅ๋ฅ  ๊ณก์„ , ์‹ ๋ขฐ๋„ ํ•จ์ˆ˜, CDF๋ฅผ ์ผ๊ด„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ณด๊ณ ์„œ ์ƒ์„ฑ

Jinja2 ํ…œํ”Œ๋ฆฟ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ํฌํ•จํ•œ HTML ๋ณด๊ณ ์„œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --report html \ --output results/report.html

๋ณด๊ณ ์„œ์—๋Š” ๋ชจ์ˆ˜ ์ถ”์ • ๊ฒฐ๊ณผ, ๋ชจ๋“  ์ฐจํŠธ, ๋ฐ์ดํ„ฐ ์š”์•ฝ ํ†ต๊ณ„๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ์€ templates/ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋‚ด๋ณด๋‚ด๊ธฐ

์ฐจํŠธ์™€ ํ•จ๊ป˜ ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ๋„ CSV/JSON์œผ๋กœ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# CSV๋กœ ์‹ ๋ขฐ๋„ ํ…Œ์ด๋ธ” ๋‚ด๋ณด๋‚ด๊ธฐ python -m simulation.runner \ --input data/test_001.csv \ --analysis weibull \ --export csv \ --output results/reliability_table.csv

๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐ์ดํ„ฐ์—๋Š” ์‹œ๊ฐ„, ์‹ ๋ขฐ๋„ R(t), ๋ˆ„์  ๊ณ ์žฅ ํ™•๋ฅ  F(t), ๊ณ ์žฅ๋ฅ  h(t) ์ปฌ๋Ÿผ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.