Coder Social home page Coder Social logo

nasa / prog_algs Goto Github PK

View Code? Open in Web Editor NEW
53.0 53.0 22.0 4.56 MB

The Prognostic Algorithm Package is a python framework for model-based prognostics (computation of remaining useful life) of engineering systems, and provides a set of algorithms for state estimation and prediction, including uncertainty propagation. The algorithms take as inputs prognostic models (from NASA's Prognostics Model Package), and perform estimation and prediction functions. The library allows the rapid development of prognostics solutions for given models of components and systems. Different algorithms can be easily swapped to do comparative studies and evaluations of different algorithms to select the best for the application at hand.

integrated-system-health-management prognostics prognostics-health-management

prog_algs's Introduction

ProgPy Packages

The prog_algs package has been combined with the prog_models package to create the new progpy python package, here: https://github.com/nasa/progpy.

prog_algs's People

Contributors

anonymousr007 avatar aqitya avatar kjjarvis avatar lawrence-hwang avatar matteocorbetta avatar mikeandspencer avatar teubert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

prog_algs's Issues

Add description at top of each example file

A couple lines describing the purpose of each example would be helpful.

Definition of Done:

  • Description of example purpose and overview at top of each file in triple quotes (""" [Description] """) below copyright line

MonteCarlo EOL Return

Event Time should return UncertainData() - look at multiple events.

Needed to support hist

Add Prognostics Horizon Metric

Add metric for prognostics horizon i.e., the prediction time at with the prediction first comes with a specified accuracy (alpha-beta)

D.o.D.

  • Implement prognostics horizon metric for prediction profile
  • Implement tests
  • Add to examples
  • Add to release notes

Prediction return type

Explore different return types for prediction. I'm thinking some sort of class that behaves the same as the current lists for backwards compatibility, but also provides other functions. Could also integrate metrics into return type

Measurement Example- extension

Add an example using the measurement_eqn to handle a case where units are different, or what is measured is some combination of states

Explore methods for EOL estimation in UTPredictor which doesn't rely on the gaussian assumption

The current approach includes an assumption that the sigma points that represent the distribution of states are valid sigma points on the time axis (i.e., the time when the state sigma points cross the threshold form the sigma points of the new EOL distribution). This is based on the strong assumption that the EOL distribution is similar to a gaussian distribution and is consistent to the state distribution.

This may be true for simple state transition or for a simple threshold shape, but may not be true for complex arbitrary threshold functions and state transition equations

@matteocorbetta had an idea for addressing this. Since we know the state to be gaussian, can we at each tilmestep, estimate the portion of the state distribution that is beyond the threshold, recording those numbers instead of just the sigma points.

@teubert suggested that we use @kjjarvis sample gain/shed approach to strategically add extra samples around the sigma points closest to the threshold in order to better define the shape of the distribution as it passes the threshold. The samples would be shed as they pass the threshold, being replaced by others further away.

Prediction Plot

Add plot that shows entire prediction with uncertainty. Something like this:
Screen Shot 2021-09-22 at 4 03 54 PM

Uncertain Data Files

All of Uncertain Data is in init.py

DoD:

  • Split Uncertain Data Classes into separate files
  • Setup init.py to automatically import them

Implement limit checking function

Update to use limit checking function from prog_models v1.2. Update dependencies to require v1.2 of prog_models.

particle filter should check limits after generating new samples

Playback agent

A tool for playing back data and performing prognostics (GUI)

Re-implement multithreading with monte carlo

Bug

Previous implementation was fundamentally broken. multithreading requires every argument to be fundamentally pickle-able. However, the prediction function is by its nature not pickle able.

Considered Approaches

  • Set the function attributes to get around this, but this is done globally and breaks down in instances where there are multiple MC's running at once (e.g., PaaS). - this was my previous approach
  • Pass argument of marshaled code of function (see https://stackoverflow.com/questions/1253528/is-there-an-easy-way-to-pickle-a-python-function-or-otherwise-serialize-its-code). This had promise but didn't work with x being an optional argument. I would have to remove that feature for this to work.
  • Dill package extends pickle. I might be able to pass in a dill pickled (see extension dill)
  • Cannibalize simulate_to_threshold - parallelize all but the simulate_to_threshold - this has significant duplicated code

Hybrid Predictor

Example moving between UK Predictor and PF Predictor (e.g., UKF predictor during linear portion)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.