<!-- SPDX-FileCopyrightText: 2024 German Aerospace Center <amiris@dlr.de>
SPDX-License-Identifier: Apache-2.0 -->
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![PyTests](https://github.com/FEAT-ML/scenario-generator/actions/workflows/python-app.yml/badge.svg)](https://github.com/FEAT-ML/scenario-generator/actions/workflows/python-app.yml)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8382789.svg)](https://doi.org/10.5281/zenodo.8382789)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
<!-- [![coverage report](docu/coverage.svg)](https://github.com/FEAT-ML/scenario-generator) to be enabled once badge is created and stored correctly, see issue #30-->
# AMIRIS-Scengen
`AMIRIS-Scengen` is a scenario generator for the open electricity market model [AMIRIS](https://dlr-ve.gitlab.io/esy/amiris/home/).
## Setup
### Installation (available with v1.0)
pip install amiris-scengen
You may also use `pipx`. For detailed information please refer to the
official `pipx` [documentation](https://github.com/pypa/pipx).
pipx install amiris-scengen
### Suggested Folder Structure
We suggest the following folder structure for an easy application of `AMIRIS-Scengen`.
* `amiris/`: folder containing your amiris binary JAR file and the `fameSetup.yaml`
* `generatorConfig/`: folder storing the AMIRIS-Scengen configuration files `GeneratorConfig.yaml` and `tracefile.yaml`
* `templates/`: folder with all static files for your scenario analysis, e.g. `timeseries/`, `contracts/`, the `scenario_template.yaml` (including the `schema.yaml`), and optional agent-specific `template_{}.yaml` files
* `scenarios/`: folder with generated scenario YAML files and their simulation output in subfolders
```
your_working_dir/
├─ amiris/
│ ├─ amiris_binary.jar
│ └─ fameSetup.yaml
├─ generatorConfig/
│ ├─ GeneratorConfig.yaml
│ └─ tracefile.yaml
├─ templates/
│ ├─ contracts/
│ ├─ timeseries/
│ ├─ my_dynamic_agent_template.yaml
│ ├─ schema.yaml
│ └─ scenario_template.yaml
└─ scenarios/
├─ generated_1/
└─ generated_1.yaml
```
### Further Requirements
In order to execute `AMIRIS-Scengen` correctly, you also require a Java Development Kit (JDK).
JDK must be installed and accessible via your console in which you run `AMIRIS-Scengen`.
To test, run `java -version` which should show your JDK version (required: 11 or above).
If `java` command is not found or relates to a Java Runtime Environment (JRE), please download and install JDK (e.g. from [Adoptium](https://adoptium.net/de/temurin/releases/?version=11)).
## Usage
Currently, there is one command available:
- `amiris-scengen create`: Creates scenarios for AMIRIS
### `amiris-scengen create`
Creates AMIRIS scenarios based on user defined input, estimates their plausibility, executes them by calling AMIRIS, and evaluates their final performance.
| Option | Action |
|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `-n` or `--number` | Specify number of scenarios to be generated |
| `-c` or `--config` | Path to `configuration` YAML file defining specifications for creation of scenarios |
| `-j` or `--jar` | Path to `amiris-core_<version>-jar-with-dependencies.jar` |
| `-d` or `--directory` | Directory to parse scenarios from and write results to |
| `-ses` or `--skip_estimation` | Speed-focused approach by omitting the AMIRIS scenario estimation at the expense of bypassing plausibility checks (Default: False) |
| `-sev` or `--skip_evaluation` | Speed-focused approach by omitting the AMIRIS result evaluation at the expense of bypassing plausibility checks (Default: False) |
| `-oo` or `--output-options` | Optional arguments to override default output [conversion arguments of fameio](https://gitlab.com/fame-framework/fame-io/-/blob/main/README.md#read-fame-results) (e.g. `-oo "-l critical"` only forwards critical `fameio` logs to AMIRIS-Scengen) |
| `-nc` or `--no-checks` | Skip checks for Java installation and correct version to increase speed |
The procedure, handled by `workflow.py`, is as follows:
1. A `scenario.yaml` is generated by `generator.py` (see detailed explanation of the `configuration.yaml`).
2. `estimator.py` checks the scenario for plausibility - see section `estimation` for further details.
3. AMIRIS is called by `runner.py` to run the simulation of `scenario.yaml`.
4. `evaluator.py` checks if the results seem plausible - see section `evaluation` for further details.
5. The next scenario generation is triggered if the total number of (positively evaluated) scenarios does not yet met the number of requested scenarios.
#### `generation`
You have four main options to define input to agents attributes:
1. use a **fixed** value, e.g. `DemandSeries: timeseries/demand/load.csv`
2. use a **random draw** of **dedicated options** (separated by `;`) with keyword `choose`, e.g. `DemandSeries: choose("timeseries/demand/load1.csv"; timeseries/demand/load2.csv; 1000)`
3. use a **random file** from a **directory** with keyword `pickfile`, e.g. `DemandSeries: pickfile(timeseries/demand)`
4. use a **random draw** in a **range** (exactly two values separated by `;`) with keyword `range_int` (integer) or `range_float` (floats), e.g. `DemandSeries: range_int(1000; 1300)`
These can also be applied to all other fields in the `base_template` file.
See also the exemplary files in section `Relevant Files`.
#### `estimation`
The following checks are implemented:
* Checks if there are any installed capacities in the scenario
#### `evaluation`
The following checks are implemented:
* Number of scarcity hours in the calculated simulation falls within a defined share
#### Relevant Files
##### `configuration` YAML
This file is mandatory and defines the main inputs for the creation of new scenarios.
It has the following format with all paths **relative** to this particular file.
```yaml
defaults: # defaults used for scenario generation
# seed: 42 # optional seed used for random number generation otherwise current system time in ns is used
trace_file: "./tracefile.yaml" # mandatory file used to log created scenarios avoiding duplicates
base_name: "Germany2019" # first part of name created by generator; second part of name is unique identifier (number of all scenarios)
base_template: "./template.yaml" # link to template file containing at least Schema & GeneralProperties sections
create: # list of agents to create
- type_template: "agent_templates/DemandTrader.yaml"
count: 3 # creates a fixed number of agents with the same template (here: 3)
# count: range_int(1; 3) # create a random numer of agents between given minimum and maximum (here: 1 as minimum and 3 as maximum)
# count: choose(5; 6; 7) # create a random number of agents by choosing one of the given options (here: either 5, 6, or 7)
this_agent: "demandTraderDE" # other agents can link to those created by this template by using this name
external_ids: # provide either identifier, static agent id as single entry or as list in order to replace the identifiers (here: keys) in the type_template's contracts
exchange: ["energyExchangeDE", 1] # replaces "//exchange" in type_template by linking to newly created agent(s) referenced herein as "energyExchangeDE" plus a static agent with id 1
forecast: 6 # fixed id to replace "//forecast" in type_template
- type_template: "agent_templates/EnergyExchange.yaml" # file containing the agent definition and contract(s) with agents in same group or pre-defined agents
count: 1 # min / max
this_agent: "energyExchangeDE" # other agents can link to that created by this template by using this name
```
##### `type_template` YAML
This file consists of two parts, namely `Agent` and `Contracts`.
The section `Agent` describes the Attributes of one particular Agent type which shall be dynamically created and added to the `base_template`.
The Agent ID is created by `AMIRIS-Scengen` directly.
Optionally, linked `Contracts` are defined in the other section of the file.
With the reserved key `//THIS_AGENT`, you link to this particular Agent to be created, whereas all other tags with
prefix `//` link to the particular agent in the `configuration` YAML under section `external_ids`.
If any "static" contract template is found (meaning that neither `SenderId` nor `ReceiverId` consists of a `replacement` identifier, an Error is raised.
Please specify any such contract in the `base_template` as described in the section on the `configuration` YAML.
```yaml
Agent:
Type: DemandTrader
Attributes:
Loads:
- ValueOfLostLoad: 10000.0
DemandSeries: timeseries/demand/load.csv # use fixed value
- ValueOfLostLoad: 9999.0
DemandSeries: choose("timeseries/demand/load1.csv"; timeseries/demand/load2.csv; 1000) # use a random draw of dedicated options (here: one of the options separated by ';')
- ValueOfLostLoad: 8888.0
DemandSeries: pickfile(timeseries/demand) # use random file from directory
- ValueOfLostLoad: 7777.0
DemandSeries: range_int(1000; 1300) # use a random draw of integers in range (here: 1000 as minimum and 1300 as maximum)
- ValueOfLostLoad: 7777.0
DemandSeries: range_float(3.14; 42.42) # use a random draw of floats in range (here: 3.14 as minimum and 42.42 as maximum)
Contracts:
- SenderId: //exchange # external agent
ReceiverId: //THIS_AGENT # is referring to this particular agent
ProductName: GateClosureInfo
FirstDeliveryTime: -10
DeliveryIntervalInSteps: 3600
- SenderId: //THIS_AGENT
ReceiverId: //exchange
ProductName: Bids
FirstDeliveryTime: 0
DeliveryIntervalInSteps: 3600
- SenderId: //exchange
ReceiverId: //THIS_AGENT
ProductName: Awards
FirstDeliveryTime: 4
DeliveryIntervalInSteps: 3600
```
##### `trace_file` YAML
The mandatory `trace_file` is specified as relative path in the `generation` file.
Its purpose is to keep track of all created scenario configurations, which ensures that no duplicates are generated.
The `total_count` gets increased by 1, if the generated scenario passed all stages in the workflow (estimation and evaluation).
If no such file is defined in the `GeneratorConfig`, a Warning is raised and a new file with file name
`trace_file_'%Y-%m-%d_%H%M%S'.yaml` is written to disk.
If the file cannot be found in the specified path, a new `trace_file` is created using the specified file path.
Its format is as follows:
```yaml
total_count: 2 # number of all scenarios generated
seed: 1234 # random seed stored here if AMIRIS-Scengen is called
```
### Help
You reach the help menu at any point using `-h` or `--help` which gives you a list of all available options, e.g.:
`amiris-scengen --help`
## Cite
If you use AMIRIS-Scengen for academic work, please cite:
Christoph Schimeczek, Kristina Nienhaus, Ulrich Frey, Evelyn Sperber, Seyedfarzad Sarfarazi, Felix Nitsch, Johannes Kochems & A. Achraf El Ghazi (2023). AMIRIS: Agent-based Market model for the Investigation of Renewable and Integrated energy Systems. Journal of Open Source Software. doi: [10.21105/joss.05041](https://doi.org/10.21105/joss.05041)
and
Felix Nitsch, Ulrich Frey, Christoph Schimeczek (2023). AMIRIS-Scengen - A Scenario Generator for the Open Electricity Market Model AMIRIS. Zenodo. doi: [10.5281/zenodo.8382790](https://doi.org/10.5281/zenodo.8382790)
## Contributing
Please see [CONTRIBUTING](CONTRIBUTING.md).
## Available Support
This is a purely scientific project by (at the moment) one research group.
Thus, there is no paid technical support available.
If you experience any trouble with `AMIRIS-Scengen` or AMIRIS, you may contact the developers at the [openMod-Forum](https://forum.openmod.org/tag/amiris) or via [amiris@dlr.de](mailto:amiris@dlr.de).
Please report bugs and make feature requests by filing issues following the provided templates (see also [CONTRIBUTING](CONTRIBUTING.md)).
For substantial enhancements, we recommend that you contact us via [amiris@dlr.de](mailto:amiris@dlr.de) for working together on the code in common projects or towards common publications and thus further develop AMIRIS.
Raw data
{
"_id": null,
"home_page": "https://gitlab.com/dlr-ve/esy/amiris/",
"name": "amiris-scengen",
"maintainer": "Felix Nitsch",
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": "amiris@dlr.de",
"keywords": "scenario, generator, AMIRIS, agent-based modelling, electricity market, simulation",
"author": "Felix Nitsch",
"author_email": "amiris@dlr.de",
"download_url": "https://files.pythonhosted.org/packages/4e/49/35f07798c266966f98566353b25db43de9cd1dac19fb197d80c977ebf093/amiris_scengen-1.1.0.tar.gz",
"platform": null,
"description": "<!-- SPDX-FileCopyrightText: 2024 German Aerospace Center <amiris@dlr.de>\n\nSPDX-License-Identifier: Apache-2.0 -->\n\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![PyTests](https://github.com/FEAT-ML/scenario-generator/actions/workflows/python-app.yml/badge.svg)](https://github.com/FEAT-ML/scenario-generator/actions/workflows/python-app.yml)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8382789.svg)](https://doi.org/10.5281/zenodo.8382789)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n<!-- [![coverage report](docu/coverage.svg)](https://github.com/FEAT-ML/scenario-generator) to be enabled once badge is created and stored correctly, see issue #30-->\n\n# AMIRIS-Scengen\n`AMIRIS-Scengen` is a scenario generator for the open electricity market model [AMIRIS](https://dlr-ve.gitlab.io/esy/amiris/home/).\n\n## Setup\n\n### Installation (available with v1.0)\n\n pip install amiris-scengen\n\nYou may also use `pipx`. For detailed information please refer to the\nofficial `pipx` [documentation](https://github.com/pypa/pipx).\n\n pipx install amiris-scengen\n\n### Suggested Folder Structure\nWe suggest the following folder structure for an easy application of `AMIRIS-Scengen`.\n\n* `amiris/`: folder containing your amiris binary JAR file and the `fameSetup.yaml`\n* `generatorConfig/`: folder storing the AMIRIS-Scengen configuration files `GeneratorConfig.yaml` and `tracefile.yaml` \n* `templates/`: folder with all static files for your scenario analysis, e.g. `timeseries/`, `contracts/`, the `scenario_template.yaml` (including the `schema.yaml`), and optional agent-specific `template_{}.yaml` files\n* `scenarios/`: folder with generated scenario YAML files and their simulation output in subfolders\n\n```\nyour_working_dir/\n\u251c\u2500 amiris/\n\u2502 \u251c\u2500 amiris_binary.jar\n\u2502 \u2514\u2500 fameSetup.yaml\n\u251c\u2500 generatorConfig/\n\u2502 \u251c\u2500 GeneratorConfig.yaml\n\u2502 \u2514\u2500 tracefile.yaml\n\u251c\u2500 templates/\n\u2502 \u251c\u2500 contracts/\n\u2502 \u251c\u2500 timeseries/\n\u2502 \u251c\u2500 my_dynamic_agent_template.yaml\n\u2502 \u251c\u2500 schema.yaml\n\u2502 \u2514\u2500 scenario_template.yaml\n\u2514\u2500 scenarios/\n \u251c\u2500 generated_1/\n \u2514\u2500 generated_1.yaml\n```\n\n### Further Requirements\nIn order to execute `AMIRIS-Scengen` correctly, you also require a Java Development Kit (JDK).\nJDK must be installed and accessible via your console in which you run `AMIRIS-Scengen`.\n\nTo test, run `java -version` which should show your JDK version (required: 11 or above).\nIf `java` command is not found or relates to a Java Runtime Environment (JRE), please download and install JDK (e.g. from [Adoptium](https://adoptium.net/de/temurin/releases/?version=11)).\n\n## Usage\nCurrently, there is one command available:\n\n- `amiris-scengen create`: Creates scenarios for AMIRIS\n\n### `amiris-scengen create`\nCreates AMIRIS scenarios based on user defined input, estimates their plausibility, executes them by calling AMIRIS, and evaluates their final performance.\n\n| Option | Action |\n|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `-n` or `--number` | Specify number of scenarios to be generated |\n| `-c` or `--config` | Path to `configuration` YAML file defining specifications for creation of scenarios |\n| `-j` or `--jar` | Path to `amiris-core_<version>-jar-with-dependencies.jar` |\n| `-d` or `--directory` | Directory to parse scenarios from and write results to |\n| `-ses` or `--skip_estimation` | Speed-focused approach by omitting the AMIRIS scenario estimation at the expense of bypassing plausibility checks (Default: False) |\n| `-sev` or `--skip_evaluation` | Speed-focused approach by omitting the AMIRIS result evaluation at the expense of bypassing plausibility checks (Default: False) |\n| `-oo` or `--output-options` | Optional arguments to override default output [conversion arguments of fameio](https://gitlab.com/fame-framework/fame-io/-/blob/main/README.md#read-fame-results) (e.g. `-oo \"-l critical\"` only forwards critical `fameio` logs to AMIRIS-Scengen) |\n| `-nc` or `--no-checks` | Skip checks for Java installation and correct version to increase speed |\n\nThe procedure, handled by `workflow.py`, is as follows:\n\n1. A `scenario.yaml` is generated by `generator.py` (see detailed explanation of the `configuration.yaml`).\n2. `estimator.py` checks the scenario for plausibility - see section `estimation` for further details.\n3. AMIRIS is called by `runner.py` to run the simulation of `scenario.yaml`.\n4. `evaluator.py` checks if the results seem plausible - see section `evaluation` for further details. \n5. The next scenario generation is triggered if the total number of (positively evaluated) scenarios does not yet met the number of requested scenarios.\n\n#### `generation`\nYou have four main options to define input to agents attributes:\n1. use a **fixed** value, e.g. `DemandSeries: timeseries/demand/load.csv`\n2. use a **random draw** of **dedicated options** (separated by `;`) with keyword `choose`, e.g. `DemandSeries: choose(\"timeseries/demand/load1.csv\"; timeseries/demand/load2.csv; 1000)`\n3. use a **random file** from a **directory** with keyword `pickfile`, e.g. `DemandSeries: pickfile(timeseries/demand)`\n4. use a **random draw** in a **range** (exactly two values separated by `;`) with keyword `range_int` (integer) or `range_float` (floats), e.g. `DemandSeries: range_int(1000; 1300)`\n\nThese can also be applied to all other fields in the `base_template` file.\nSee also the exemplary files in section `Relevant Files`.\n\n#### `estimation`\nThe following checks are implemented:\n* Checks if there are any installed capacities in the scenario\n\n#### `evaluation`\nThe following checks are implemented:\n* Number of scarcity hours in the calculated simulation falls within a defined share\n\n#### Relevant Files\n\n##### `configuration` YAML\nThis file is mandatory and defines the main inputs for the creation of new scenarios.\nIt has the following format with all paths **relative** to this particular file.\n\n```yaml\ndefaults: # defaults used for scenario generation\n # seed: 42 # optional seed used for random number generation otherwise current system time in ns is used\n trace_file: \"./tracefile.yaml\" # mandatory file used to log created scenarios avoiding duplicates\n base_name: \"Germany2019\" # first part of name created by generator; second part of name is unique identifier (number of all scenarios)\n\nbase_template: \"./template.yaml\" # link to template file containing at least Schema & GeneralProperties sections\n\ncreate: # list of agents to create\n - type_template: \"agent_templates/DemandTrader.yaml\"\n count: 3 # creates a fixed number of agents with the same template (here: 3)\n # count: range_int(1; 3) # create a random numer of agents between given minimum and maximum (here: 1 as minimum and 3 as maximum)\n # count: choose(5; 6; 7) # create a random number of agents by choosing one of the given options (here: either 5, 6, or 7)\n this_agent: \"demandTraderDE\" # other agents can link to those created by this template by using this name\n external_ids: # provide either identifier, static agent id as single entry or as list in order to replace the identifiers (here: keys) in the type_template's contracts \n exchange: [\"energyExchangeDE\", 1] # replaces \"//exchange\" in type_template by linking to newly created agent(s) referenced herein as \"energyExchangeDE\" plus a static agent with id 1\n forecast: 6 # fixed id to replace \"//forecast\" in type_template\n\n - type_template: \"agent_templates/EnergyExchange.yaml\" # file containing the agent definition and contract(s) with agents in same group or pre-defined agents\n count: 1 # min / max\n this_agent: \"energyExchangeDE\" # other agents can link to that created by this template by using this name\n```\n\n##### `type_template` YAML\nThis file consists of two parts, namely `Agent` and `Contracts`.\n\nThe section `Agent` describes the Attributes of one particular Agent type which shall be dynamically created and added to the `base_template`.\nThe Agent ID is created by `AMIRIS-Scengen` directly. \n\nOptionally, linked `Contracts` are defined in the other section of the file.\nWith the reserved key `//THIS_AGENT`, you link to this particular Agent to be created, whereas all other tags with \nprefix `//` link to the particular agent in the `configuration` YAML under section `external_ids`.\nIf any \"static\" contract template is found (meaning that neither `SenderId` nor `ReceiverId` consists of a `replacement` identifier, an Error is raised.\nPlease specify any such contract in the `base_template` as described in the section on the `configuration` YAML.\n\n\n```yaml\nAgent:\n Type: DemandTrader\n Attributes:\n Loads:\n - ValueOfLostLoad: 10000.0\n DemandSeries: timeseries/demand/load.csv # use fixed value\n - ValueOfLostLoad: 9999.0\n DemandSeries: choose(\"timeseries/demand/load1.csv\"; timeseries/demand/load2.csv; 1000) # use a random draw of dedicated options (here: one of the options separated by ';')\n - ValueOfLostLoad: 8888.0\n DemandSeries: pickfile(timeseries/demand) # use random file from directory\n - ValueOfLostLoad: 7777.0\n DemandSeries: range_int(1000; 1300) # use a random draw of integers in range (here: 1000 as minimum and 1300 as maximum)\n - ValueOfLostLoad: 7777.0\n DemandSeries: range_float(3.14; 42.42) # use a random draw of floats in range (here: 3.14 as minimum and 42.42 as maximum)\n \nContracts:\n - SenderId: //exchange # external agent\n ReceiverId: //THIS_AGENT # is referring to this particular agent\n ProductName: GateClosureInfo\n FirstDeliveryTime: -10\n DeliveryIntervalInSteps: 3600\n\n - SenderId: //THIS_AGENT\n ReceiverId: //exchange\n ProductName: Bids\n FirstDeliveryTime: 0\n DeliveryIntervalInSteps: 3600\n\n - SenderId: //exchange\n ReceiverId: //THIS_AGENT\n ProductName: Awards\n FirstDeliveryTime: 4\n DeliveryIntervalInSteps: 3600\n```\n\n##### `trace_file` YAML\nThe mandatory `trace_file` is specified as relative path in the `generation` file. \nIts purpose is to keep track of all created scenario configurations, which ensures that no duplicates are generated.\nThe `total_count` gets increased by 1, if the generated scenario passed all stages in the workflow (estimation and evaluation).\n\nIf no such file is defined in the `GeneratorConfig`, a Warning is raised and a new file with file name \n`trace_file_'%Y-%m-%d_%H%M%S'.yaml` is written to disk.\nIf the file cannot be found in the specified path, a new `trace_file` is created using the specified file path.\n\nIts format is as follows:\n\n```yaml\ntotal_count: 2 # number of all scenarios generated\nseed: 1234 # random seed stored here if AMIRIS-Scengen is called\n```\n\n### Help\nYou reach the help menu at any point using `-h` or `--help` which gives you a list of all available options, e.g.:\n\n`amiris-scengen --help`\n\n\n## Cite \nIf you use AMIRIS-Scengen for academic work, please cite:\n\n Christoph Schimeczek, Kristina Nienhaus, Ulrich Frey, Evelyn Sperber, Seyedfarzad Sarfarazi, Felix Nitsch, Johannes Kochems & A. Achraf El Ghazi (2023). AMIRIS: Agent-based Market model for the Investigation of Renewable and Integrated energy Systems. Journal of Open Source Software. doi: [10.21105/joss.05041](https://doi.org/10.21105/joss.05041)\n\nand \n\n Felix Nitsch, Ulrich Frey, Christoph Schimeczek (2023). AMIRIS-Scengen - A Scenario Generator for the Open Electricity Market Model AMIRIS. Zenodo. doi: [10.5281/zenodo.8382790](https://doi.org/10.5281/zenodo.8382790)\n\n## Contributing\nPlease see [CONTRIBUTING](CONTRIBUTING.md).\n\n## Available Support\nThis is a purely scientific project by (at the moment) one research group. \nThus, there is no paid technical support available.\n\nIf you experience any trouble with `AMIRIS-Scengen` or AMIRIS, you may contact the developers at the [openMod-Forum](https://forum.openmod.org/tag/amiris) or via [amiris@dlr.de](mailto:amiris@dlr.de).\nPlease report bugs and make feature requests by filing issues following the provided templates (see also [CONTRIBUTING](CONTRIBUTING.md)).\nFor substantial enhancements, we recommend that you contact us via [amiris@dlr.de](mailto:amiris@dlr.de) for working together on the code in common projects or towards common publications and thus further develop AMIRIS.\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Scenario generator for the open electricity market model AMIRIS",
"version": "1.1.0",
"project_urls": {
"Homepage": "https://gitlab.com/dlr-ve/esy/amiris/",
"Repository": "https://gitlab.com/dlr-ve/esy/amiris/amiris-scengen"
},
"split_keywords": [
"scenario",
" generator",
" amiris",
" agent-based modelling",
" electricity market",
" simulation"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d98b5a676e5e4301014230e7f9eeb6f8d45e938eace1b2180404078c434a8314",
"md5": "75095603330140aa2d34c8804f93de5e",
"sha256": "9787d552877582d7e46808fefc996678c719de27eff081b372ec074c3eaa5f87"
},
"downloads": -1,
"filename": "amiris_scengen-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "75095603330140aa2d34c8804f93de5e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 38074,
"upload_time": "2024-12-09T12:56:37",
"upload_time_iso_8601": "2024-12-09T12:56:37.593101Z",
"url": "https://files.pythonhosted.org/packages/d9/8b/5a676e5e4301014230e7f9eeb6f8d45e938eace1b2180404078c434a8314/amiris_scengen-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4e4935f07798c266966f98566353b25db43de9cd1dac19fb197d80c977ebf093",
"md5": "574592dc3c77b1c077fb41c49e6789eb",
"sha256": "cb5a5e11d84bd23b1100c55086ada27a28fc6931d6f440f01a14ff45e075e6b6"
},
"downloads": -1,
"filename": "amiris_scengen-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "574592dc3c77b1c077fb41c49e6789eb",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 43237,
"upload_time": "2024-12-09T12:56:40",
"upload_time_iso_8601": "2024-12-09T12:56:40.162342Z",
"url": "https://files.pythonhosted.org/packages/4e/49/35f07798c266966f98566353b25db43de9cd1dac19fb197d80c977ebf093/amiris_scengen-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-09 12:56:40",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "dlr-ve",
"gitlab_project": "esy",
"lcname": "amiris-scengen"
}