A curated list of open technology projects to sustain a stable climate, energy supply, biodiversity and natural resources.

RAMP

A bottom-up stochastic model for the generation of high-resolution multi-energy profiles, conceived for application in contexts where only rough information about users' behaviour are obtainable.
https://github.com/RAMP-project/RAMP

Category: Energy Systems
Sub Category: Energy System Modeling Frameworks

Keywords from Contributors

charging-profiles charging-strategies demand electric-vehicles-mobility ramp-model energy-system

Last synced: about 7 hours ago
JSON representation

Repository metadata

Repository of the open-source RAMP model for generating multi-energy loads profiles

README.rst

          .. image:: https://img.shields.io/gitter/room/RAMP-project/RAMP
   :target: https://gitter.im/RAMP-project/community

.. image:: https://img.shields.io/badge/code%20style-black-000000.svg
    :target: https://github.com/psf/black

.. image:: https://badge.fury.io/py/rampdemand.svg
    :target: https://badge.fury.io/py/rampdemand

.. image:: https://readthedocs.org/projects/rampdemand/badge/?version=latest
    :target: https://rampdemand.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status

.. image:: https://coveralls.io/repos/github/RAMP-project/RAMP/badge.svg?branch=main
   :target: https://coveralls.io/github/RAMP-project/RAMP?branch=main

.. image:: https://github.com/RAMP-project/RAMP/blob/main/docs/source/_static/RAMP_logo_basic.png?raw=true
   :width: 300


*An open-source bottom-up stochastic model for generating multi-energy load profiles* (`RAMP Website `_ , `RAMP Documentation `_)


What is RAMP
============
RAMP is an open-source software suite for the stochastic simulation of any user-driven energy demand time series based on few simple inputs.

The project aims to provide synthetic data wherever metered data does not exist, such as when designing systems in remote areas. Check out the `documentation `_ and learn more on the RAMP world from our `website `_!

.. image:: https://github.com/RAMP-project/RAMP/blob/main/docs/figures/Example_output.jpg?raw=true
   :width: 600

Recommended installation method
===============================

RAMP has been successfully installed and used on macOS, Windows and Linux.

The easiest way to make RAMP software working is to use the free conda package manager which can install the current and future RAMP
dependencies in an easy and user friendly way.

To get conda, `download and install "Anaconda Distribution" `_, or `"miniconda" `_ which is lighter.
You can install RAMP using pip, conda or from source code.

Installing through pip
----------------------
1. To install the RAMP software, we suggest to create a new environment by running the following command in the *Anaconda prompt*:

.. code-block:: python

   conda create -n ramp python=3.10


2. If you create a new environment for RAMP, you'll need to activate it each time before using it, by writing
the following line in the *Anaconda Prompt*:

.. code-block:: python

   conda activate ramp

3. Now you can use pip to install `rampdemand` on your environment as follow:

.. code-block:: python

  pip install rampdemand


Installing through the source code
----------------------------------
You can also install RAMP from the source code! To do so, you first need to download the source code, which can be done in two ways:

* You can use git to clone the repository via:

.. code-block:: bash

   git clone https://github.com/RAMP-project/RAMP.git

* Or, you may download the source code directly from:

`"RAMP GitHub Repository" `_.

In this second case, the source code will be downloaded as a zip file, so you'll need to extract the files.

After downloading the source code using any of abovementioned methods, you'll need to use your **anaconda prompt** to install it. There are two options again:

* You may follow the first two steps mentioned in **Installing through pip**. Then, change the directory in the prompt to the folder where the source code is saved (where you can find the *setup.py* file). To install the RAMP software, you may then use:

.. code-block:: bash

   python setup.py install

* Alternatively, without taking any prior action, simply change the directory in the prompt to the folder where the source code is saved and then use:

.. code-block:: bash

   conda env create -f environment.yml

Quick start
===========
There are different ways to build a model using RAMP! Here, we provide a first example but you can find more information in our `documentation  `_.

Example python input files
--------------------------
Three different input files are provided as example representing three different categories of appliances that can be modelled with RAMP.
To have a look to the python files, you can download them using the `download_example` function:

.. code-block:: python

   from ramp import download_example

   download_example("the specfic folder directory to save the files")

-  ``input_file_1.py``: represents the most basic electric appliances; it is
   an example of how to model lightbulbs, radios, TVs, fridges, and
   other electric appliances. This input file is based on the ones used
   for `the first RAMP publication `__.

-  ``input_file_2.py``: shows how to model user-driven thermal loads, with the
   example of a “shower” appliance. The peculiarity of thermal appliances
   is that the nominal power can be provided as external input as a
   “.csv” file (in this case, ``shower_P.csv``). For the example “shower”
   appliance, the varying nominal power accounts for the effect of
   groundwater temperature variation throughout the year. This input
   file is based on that used for `this
   publication `__.

-  ``input_file_3.py``: represents an example of how to model electric
   cooking appliances. In this input file two different kind of meals
   are modelled: 1) short and repetitive meals (e.g. breakfast); and 2)
   main meals (e.g. lunch, dinner). Repetitive meals do not vary across
   days, whilst main meals do so. In particular, every household can
   randomly choose between 3 different types of main meal every day.
   Such variability in meal preferences is modelled by means of two
   parameters: the ``user preference`` and the ``preference index``. The
   ``user preference`` defines how many types of meal are available for
   each user to choose every day (e.g. 3). Then, each of the available
   meal options is modelled separately, with a different
   ``preference index`` attached. The stochastic process randomly varies
   the meal preference of each user every day, deciding whether they
   want a “type 1” meal, or a “type 2”, etc. on a given day. This input
   file is used in `this
   publication `__

You can execute python input files within an IDE, in your terminal with python command

.. code-block:: bash

   python 

or in your terminal with the ``ramp`` command, see `Command line options `_ below for more information.

Spreadsheet input files
-----------------------

It is also possible to use spreadsheets as input files. To do so, you
need to run the ``ramp`` command with the option ``-i``:

.. code-block:: bash

   ramp -i 


.. note:: You can input several files, separated from each others by a single blank space you can also input python files

.. _cmd_option:

Command line options
--------------------

In the command line you can also run .py input files
If you already know how many daily profiles you want to simulate you can indicate it with the ``-n`` option:

.. code-block:: bash

   ramp -i  -n 10

will simulate 10 daily profiles. Note that if you do not provide this option you will being prompted for the
number of daily profiles within the console.


If you want to save ramp results to a custom file, you can provide it with the option `-o`

.. code-block:: bash

   ramp -i  -o 

.. note:: You can provide a number of output files, separated from each others by a single blank space, matching the number of input files.

Other options are documented in the help of `ramp`, which you access with the ``-h`` option

.. code-block:: bash

   ramp -h


If you have existing python input files from RAMP version prior to 0.5, you can convert them to
spreadsheets input files. Simply run

.. code-block:: bash

   ramp_convert -i 

If you want to save a RAMP model you created with a .py file into a spreadsheet refer to
this `example `_

For other examples of command lines options, such as setting date ranges, please visit `the dedicated section  `_ of the documentation.

Building a model with a python script
-------------------------------------

.. code-block:: python

   # importing functions
   from ramp import UseCase, User

   # Create a user category
   household_1 = User(
    user_name = "Household type 1", # an optional feature for the User class
    num_users = 10, # Specifying the number of specific user category in the community
   )

You can add appliances to a user category by:

.. code-block:: python

   # adding some appliances for the household
   radio = household_1.add_appliance(
    name = "Small Radio", # optional feature for the appliance class
    number = 1, # how many radio each household type 1 has
    power = 10, # RAMP does not take care of units of measure (e.g., Watts), you must be consistent
    func_time = 120, # Total functioning time of appliance in minutes
    num_windows = 2, # how many time-windows the appliance is used in
   )


The use time frames can be specified using the 'window' method for each appliance of the user category:

.. code-block:: python

   # Specifying the functioning windows
   radio.windows(
    window_1 = [480,540], # from 8 AM to 9 AM
    window_2 = [1320,1380], # from 10 PM to 11 PM
   )

You can also add another, different user to the simulation. In this case,
we use a more compact formulation:

.. code-block:: python

   # Create a second user category
   household_2 = User(
    user_name = "Household type 2", # an optional feature for the User class
    num_users = 13, # Specifying the number of specific user category in the community
    )

   # adding some appliances for the new household type in compact form, with windows specified directly and random variability
   light_bulbs = household_2.add_appliance(
    name = "Light bulbs", # optional feature for the appliance class
    number = 5, # how many light bulbs each household type 2 has
    power = 7, # RAMP does not take care of units of measure (e.g., Watts), you must be consistent
    func_time = 120, # total functioning time of appliance in minutes
    time_fraction_random_variability=0.2, # 20% random variability associated to the total functioning time
    num_windows = 2, # how many time-windows the appliance is used in
    window_1 = [390,480], # from 6.30 AM to 8 AM
    window_2 = [1020,1440], # from 5 PM to 12 PM
    random_var_w=0.35 # 35% randomness assigned to the size of the functioning windows
    )

At this point, we can group our different users into a "use case" and run the simulation,
for instance for a whole year.

.. code-block:: python

   use_case = UseCase(users=[household_1,household_2], date_start="2020-01-01", date_end="2020-12-31")
   whole_year_profile = use_case.generate_daily_load_profiles()

Here is your first load for a community including two types of housholds,
for a total of 23 individual users. Of course, more variations and many more
features are possible! For instance, you can simulate loads even for
an individual appliance or user. In addition, you can use in-built plotting
functionalities to explore your results. Check out the documentation
for all the possibilities.

Contributing
============
This project is open-source. Interested users are therefore invited to test, comment or contribute to the tool. Submitting issues is the best way to get in touch with the development team, which will address your comment, question, or development request in the best possible way. We are also looking for contributors to the main code, willing to contribute to its capabilities, computational-efficiency, formulation, etc.

To contribute changes please consult our `Contribution guidelines `_


How to cite
===========
Please cite the original Journal publication if you use RAMP in your research:

*F. Lombardi, S. Balderrama, S. Quoilin, E. Colombo, Generating high-resolution multi-energy load profiles for remote areas with an open-source stochastic model, Energy, 2019,*
`https://doi.org/10.1016/j.energy.2019.04.097 `_

More information
================
Want to know more about the possible applications of RAMP, the studies that relied on it and much more? Then take a look at the `RAMP Website `_!

License
=======
Copyright 2019-2023 RAMP, contributors listed in **Authors**

Licensed under the European Union Public Licence (EUPL), Version 1.2-or-later; you may not use this file except in compliance with the License.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an **"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND**, either express or implied. See the License for the specific language governing permissions and limitations under the License.


.. note::
   This project is actively maintained and developed. This means that while we provide stable and reliable software releases, we keep developing new features and improvements for upcoming, upgraded versions    of the software.

        

Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 6 days ago

Total Commits: 556
Total Committers: 15
Avg Commits per committer: 37.067
Development Distribution Score (DDS): 0.495

Commits in past year: 227
Committers in past year: 10
Avg Commits per committer in past year: 22.7
Development Distribution Score (DDS) in past year: 0.33

Name Email Commits
pierre-francois.duc p****c@r****e 281
F.L f****i@o****m 95
Francesco Lombardi f****i@p****t 77
Mohammad Amin Tahavori 5****t 53
Mohammad Amin Tahavori m****i@v****e 11
Johann Kraft j****t@s****u 10
Nicolò Stevanato n****o@m****t 8
Nicolò Stevanato n****o@p****t 8
ClaudiaLSS s****u@g****m 4
wc12864 5****4 3
Johann j****t@g****m 2
Adam R. Jensen 3****n 1
Claudia Sanchez-Solis 7****S 1
JJ 1****l 1
PasquinoFI 8****I 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 68
Total pull requests: 97
Average time to close issues: 5 months
Average time to close pull requests: 18 days
Total issue authors: 17
Total pull request authors: 14
Average comments per issue: 3.26
Average comments per pull request: 2.79
Merged pull request: 76
Bot issues: 0
Bot pull requests: 0

Past year issues: 5
Past year pull requests: 24
Past year average time to close issues: N/A
Past year average time to close pull requests: 3 days
Past year issue authors: 4
Past year pull request authors: 6
Past year average comments per issue: 2.8
Past year average comments per pull request: 1.42
Past year merged pull request: 18
Past year bot issues: 0
Past year bot pull requests: 0

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/RAMP-project/RAMP

Top Issue Authors

  • Bachibouzouk (19)
  • mohammadamint (11)
  • FLomb (10)
  • Stevogallo (8)
  • JW-Kraft (6)
  • i5sanchez (2)
  • abhinandan100 (2)
  • Sir-M (1)
  • ClaudiaLSS (1)
  • matteodefelice (1)
  • KhaledGad (1)
  • paulamadeo (1)
  • Simoset (1)
  • squoilin (1)
  • LorenzoRinaldi (1)

Top Pull Request Authors

  • Bachibouzouk (46)
  • FLomb (20)
  • mohammadamint (12)
  • JW-Kraft (6)
  • Stevogallo (2)
  • PasquinoFI (2)
  • SoniBhaveshh (2)
  • computerscienceiscool (1)
  • Mangips (1)
  • LorenzoRinaldi (1)
  • NilsL22 (1)
  • ClaudiaLSS (1)
  • wc12864 (1)
  • AdamRJensen (1)

Top Issue Labels

  • enhancement (22)
  • bug (16)
  • documentation (11)
  • help wanted (1)
  • question (1)
  • invalid (1)

Top Pull Request Labels

  • bug (7)
  • [JOSS] - wating reviewer approval (7)
  • enhancement (6)
  • [JOSS] - waiting for internal approval (5)
  • documentation (3)
  • [JOSS] - reviewer approved (1)

Package metadata

proxy.golang.org: github.com/ramp-project/ramp

  • Homepage:
  • Documentation: https://pkg.go.dev/github.com/ramp-project/ramp#section-documentation
  • Licenses:
  • Latest release: v0.5.2 (published 11 months ago)
  • Last Synced: 2024-11-30T20:30:49.544Z (5 months ago)
  • Versions: 7
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Rankings:
    • Dependent packages count: 6.999%
    • Average: 8.173%
    • Dependent repos count: 9.346%
pypi.org: rampdemand

An open-source python package for building bottom-up stochastic model for generating multi-energy load profiles

  • Homepage: https://github.com/RAMP-project/RAMP
  • Documentation: https://rampdemand.readthedocs.io/
  • Licenses: European Union Public License 1.2
  • Latest release: 0.5.2 (published 11 months ago)
  • Last Synced: 2025-04-26T12:33:38.410Z (1 day ago)
  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 291 Last month
  • Rankings:
    • Dependent packages count: 6.633%
    • Forks count: 7.731%
    • Stargazers count: 10.759%
    • Average: 14.868%
    • Downloads: 18.604%
    • Dependent repos count: 30.611%
  • Maintainers (3)

Dependencies

Pipfile pypi
  • pytest * develop
  • twine * develop
  • ramp *
Pipfile.lock pypi
  • attrs ==22.1.0 develop
  • exceptiongroup ==1.0.4 develop
  • iniconfig ==1.1.1 develop
  • packaging ==21.3 develop
  • pluggy ==1.0.0 develop
  • pyparsing ==3.0.9 develop
  • pytest ==7.2.0 develop
  • tomli ==2.0.1 develop
  • contourpy ==1.0.6
  • cycler ==0.11.0
  • et-xmlfile ==1.1.0
  • fonttools ==4.38.0
  • kiwisolver ==1.4.4
  • matplotlib ==3.6.2
  • numpy ==1.23.5
  • openpyxl ==3.0.10
  • packaging ==21.3
  • pandas ==1.5.2
  • pillow ==9.3.0
  • pyparsing ==3.0.9
  • python-dateutil ==2.8.2
  • pytz ==2022.6
  • ramp *
  • six ==1.16.0
  • xlsxwriter ==3.0.3
docs/docs-requirements.txt pypi
  • IPython >=7.22.0
  • ipykernel *
  • matplotlib >=3.3.4
  • multiprocess *
  • nbsphinx *
  • numpy >=1.21.2
  • openpyxl >=3.0.6
  • pandas >=1.3.3
  • sphinx >=1.6.4
  • sphinx-autobuild *
  • sphinx-copybutton *
  • sphinx-pdj-theme *
  • sphinxjp.themes.basicstrap *
  • sphinxjp.themes.sphinxjp *
  • tqdm *
  • xlsxwriter <=1.3.7
environment.yml pypi
requirements.txt pypi
  • matplotlib *
  • multiprocess *
  • numpy *
  • openpyxl *
  • pandas *
  • tqdm *
setup.py pypi
  • matplotlib *
  • numpy *
  • openpyxl *
  • pandas *
  • tqdm *
  • xlsxwriter *

Score: 12.902489474957742