Table Of Contents
1. Overview
2. OpenAI Reference
3. Installation
4. Environment
5. Sample Usage
6. Version History

# 1. Overview

### 1.1 Intent
    The intent behind this project is to provide a ready environment to test
    Reinforcement Learning (RL) Agents on their performance optimising memory
    allocation in Hybrid DRAM/PM(Persistent Memory), in order to improve upon
    existing memory management schemes.

### 1.2 OpenAI Framework
    The team decided to use the OpenAI Gym model as a framework to develop the
    environment. This allowed us to use existing architecture for the environment
    and allowed us to use existing RL algorithm implementations already
    available.  

### 1.3 Ruminant
    Using the Ruminant heuristic we managed to constrain the observation space
    into a series of means such as average "temperature", frequency of use
    in pages, and other metrics.  

# 2. OpenAI Reference

### 2.1 Links
    Handy references on OpenAI:
        http://gym.openai.com/docs/
    A (non-comprehensive) list of OpenAI environments:
        https://github.com/openai/gym/blob/master/docs/environments.md
    OpenAI stable baselines:
        https://github.com/hill-a/stable-baselines

# 3. Installation

To utilize the current setup of the environment, make use of [setup.py](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/gym_env/setup.py).

### 3.1 Git Install
    git clone https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant
    cd gymRuminant
    pip install -e .

###  3.2 Dependencies  

To view all environment related Dependencies and specific versioning requirements, refer to [requirements.txt](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/requirements.txt).

# 4. Environment

To view our Environment Diagrams, navigate to them by clicking on the respective names below:

1. [Architectural Diagram](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/Documentation/Architectural%20Diagram.jpeg)

2. [Class Diagram](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/Documentation/Class%20Diagram.jpg)

3. [Deployment Diagram](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/Documentation/Deployment%20Diagram.jpeg)

4. [Sequence Diagram](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/Documentation/Sequence%20Diagram.jpeg)

5. [Use Case Diagram](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/Documentation/Use%20Case%20Diagram.jpeg)

# 5. Sample Usage  

For initial use, reference the [agent.ipynb](https://gitlab.cs.fiu.edu/eflor054/machine-learning-optimization-ruminant/-/blob/master/agent.ipynb) file for a Jupyter Notebook
containing testing functions for the environment as well as sample results for ruminant-v0.

# 6. Version History

    ## Jul 9 2020
    Debugging sections of the environment

    ## JUL 1 2020
    Initial commit of working documents  
