All Projects → Project-Platypus → Rhodium

Project-Platypus / Rhodium

Licence: gpl-3.0
Python Library for Robust Decision Making and Exploratory Modelling

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Rhodium

Object Cxr
Automatic detection of foreign objects on chest X-rays
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Machine Learning Without Any Libraries
This is a collection of some of the important machine learning algorithms which are implemented with out using any libraries. Libraries such as numpy and pandas are used to improve computational complexity of algorithms
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Download Large File From Google Drive Using Python
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Deepfakedetection
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Coreml Training
Source code for my blog post series "On-device training with Core ML"
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Reinforcement Learning
Reinforcement learning material, code and exercises for Udacity Nanodegree programs.
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Maskdetect Yolov4 Pytorch
基于PyTorch&YOLOv4实现的口罩佩戴检测 ⭐️ 自建口罩数据集分享
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Machinelearningformedicalimages
Example code on how to apply machine learning methods to medical images. Contains code (python and python notebooks) and data (DICOM)
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Tadam
The implementation of https://papers.nips.cc/paper/7352-tadam-task-dependent-adaptive-metric-for-improved-few-shot-learning
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Applied Social Network Analysis In Python
Course - 5; Specialization: Applied Data Science with Python; University Of Michigan
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Math And Ml Notes
Books, papers and links to latest research in ML/AI
Stars: ✭ 76 (-1.3%)
Mutual labels:  jupyter-notebook
Nds
On Network Design Spaces for Visual Recognition
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Nlp
Generic codes related to NLP
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Ntk
Code for experiments in my blog post on the Neural Tangent Kernel: https://rajatvd.github.io/NTK
Stars: ✭ 76 (-1.3%)
Mutual labels:  jupyter-notebook
Hyperlearn
50% faster, 50% less RAM Machine Learning. Numba rewritten Sklearn. SVD, NNMF, PCA, LinearReg, RidgeReg, Randomized, Truncated SVD/PCA, CSR Matrices all 50+% faster
Stars: ✭ 1,204 (+1463.64%)
Mutual labels:  jupyter-notebook
Itversity Books
Stars: ✭ 76 (-1.3%)
Mutual labels:  jupyter-notebook
Predictive Models
A repo of the Data Scientist team's open source predictive models.
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Convergent learning
Code for paper "Convergent Learning: Do different neural networks learn the same representations?"
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Python High Performance Second Edition
Python High Performance – Second Edition, published by Packt
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook
Tensorflow 1x Deep Learning Cookbook
TensorFlow 1.x Deep Learning Cookbook, published by Packt
Stars: ✭ 77 (+0%)
Mutual labels:  jupyter-notebook

Rhodium

GitHub Actions status

Rhodium is an open source Python library for robust decision making (RDM) and multiobjective robust decision making (MORDM), and exploratory modelling (EM).

Resources

What is Robust Decision Making?

Robust Decision Making (RDM) is an analytic framework developed by Robert Lempert and his collaborators at RAND Corporation that helps identify potential robust strategies for a particular problem, characterize the vulnerabilities of such strategies, and evaluate trade-offs among them [2]. Multiobjective Robust Decision Making (MORDM) is an extension of RDM to account for problems with multiple competing performance objectives, enabling the exploration of performance tradeoffs with respect to robustness [3, 4].

What is Rhodium?

Rhodium is an open source Python library providing methods for RDM and MORDM. It follows a declarative design, where you tell Rhodium the actions or analyses you wish to perform and it determines the necessary calculations. Rhodium can interface with models written in a variety of languages, including Python, C and Fortran, R, and Excel. One begins by creating a Rhodium model:

from rhodium import *

def lake_problem(pollution_limit,
         b = 0.42,        # decay rate for P in lake (0.42 = irreversible)
         q = 2.0,         # recycling exponent
         mean = 0.02,     # mean of natural inflows
         stdev = 0.001,   # standard deviation of natural inflows
         alpha = 0.4,     # utility from pollution
         delta = 0.98,    # future utility discount rate
         nsamples = 100): # monte carlo sampling of natural inflows
    # add body of function
    return (max_P, utility, intertia, reliability)


model = Model(lake_problem)

model.parameters = [Parameter("pollution_limit"),
                    Parameter("b"),
                    Parameter("q"),
                    Parameter("mean"),
                    Parameter("stdev"),
                    Parameter("delta")]

model.responses = [Response("max_P", Response.MINIMIZE),
                   Response("utility", Response.MAXIMIZE),
                   Response("inertia", Response.MAXIMIZE),
                   Response("reliability", Response.MAXIMIZE)]

model.constraints = [Constraint("reliability >= 0.95")]

model.levers = [RealLever("pollution_limit", 0.0, 0.1, length=100)]

model.uncertainties = [UniformUncertainty("b", 0.1, 0.45),
                       UniformUncertainty("q", 2.0, 4.5),
                       UniformUncertainty("mean", 0.01, 0.05),
                       UniformUncertainty("stdev", 0.001, 0.005),
                       UniformUncertainty("delta", 0.93, 0.99)]

A Rhodium model consists of 6 parts:

  1. The underlying model (in this case, the Python function lake_problem).

  2. model.parameters - the parameters of interest.

  3. model.responses - the model responses or outputs.

  4. model.constraints - any hard constraints that must be satisfied.

  5. model.levers - parameters that we have direct control over.

  6. model.uncertainties - parameters that represent exogeneous uncertainties.

Once the Rhodium model is defined, you can then perform any analysis. For example, if we want to optimize the model and display the Pareto front:

output = optimize(model, "NSGAII", 10000)
scatter3d(model, output)
plt.show()

Check out the examples folder to see Rhodium in action!

References

  1. Rhodium logo by Tyler Glaude, Creative Commons License, https://thenounproject.com/term/knight/30912/
  2. Lempert, R. J., D. G. Groves, S. W. Popper, and S. C. Bankes (2006). A General, Analytic Method for Generating Robust Strategies and Narrative Scenarios. Management Science, 52(4):514-528.
  3. Kasprzyk, J. R., S. Nataraj, P. M. Reed, and R. J. Lempert (2013). Many objective robust decision making for complex environmental systems undergoing change. Environmental Modelling & Software, 42:55-71.
  4. Hadka, D., Herman, J., Reed, P.M., Keller, K. An Open Source Framework for Many-Objective Robust Decision Making. Environmental Modelling & Software, 74:114-129, 2015. DOI:10.1016/j.envsoft.2015.07.014. (View Online)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].