Assume-framework

Latest version: v0.5.0

Safety actively analyzes 688053 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 2

0.5.0

**New Features:**
- **Learning rate and noise scheduling**: Added the possibility to schedule the learning rate and action noise in the learning process. This feature
enables streamlining the learning progress. Currently, only "linear" decay available by setting the `learning_rate_schedule` and
`action_noise_schedule` in the learning config to "linear". Defaults to no decay if not provided. It decays `learning_rate`/ `noise_dt`
linearly from starting value to 0 over given `training_episodes` which can be adjusted by the user. The schedule parameters (e.g. end value
and end fraction) are not adjustable in the config file, but can be set in the code.
- **Hydrogen Plant:** A new demand side unit representing a hydrogen plant has been added. The hydrogen plant consists of an
electrolyzer and a seasonal hydrogen storage unit. The electrolyzer converts electricity into hydrogen, which can be
stored in the hydrogen storage unit and later used.
- **Seasonal Hydrogen Storage:** A new storage unit representing a seasonal hydrogen storage has been added. The seasonal hydrogen
storage unit can store hydrogen over long periods and release it when needed. It has specific constraints to avoid charging or
discharging during off-season or on-season time as well as a target level to be reached at the end of the season.

**Improvements:**
- **Timeseries Performance Optimization:** Switched to a custom `FastIndex` and `FastSeries` class, which is based on the pandas Series
but utilizes NumPy arrays for internal data storage and indexing. This change significantly improves the
performance of read and write operations, achieving an average speedup of **2x to 3x** compared to standard
pandas Series. The `FastSeries` class retains a close resemblance to the pandas Series, including core
functionalities like indexing, slicing, and arithmetic operations. This ensures seamless integration,
allowing users to work with the new class without requiring significant code adaptation.
- **Outputs Role Performance Optimization:** Output role handles dict data directly and only converts to DataFrame on Database write.
- **Overall Performance Optimization:** The overall performance of the framework has been improved by a factor of 5x to 12x
depending on the size of the simulation (number of units, markets, and time steps).

**Bugfixes:**
- **Tutorials**: General fixes of the tutorials, to align with updated functionalitites of Assume
- **Tutorial 07**: Aligned Amiris loader with changes in format in Amiris compare (https://gitlab.com/fame-framework/fame-io/-/issues/203 and https://gitlab.com/fame-framework/fame-io/-/issues/208)
- **Powerplant**: Remove duplicate `Powerplant.set_dispatch_plan()` which broke multi-market bidding
- **CSV scenario loader**: Fixed issue when one extra day was being added to the index, which lead to an error in the simulation when additional data was not available in the input data.
- **Market opening schedule**: Fixed issue where the market opening was scheduled even though the simulation was ending before the required products. Now the market opening is only scheduled
if the total duration of the market products plus first delivery time fits before the simulation end.
- **Loader fixes**: Fixes for PyPSA, OEDS and AMIRIS loaders

0.4.3

**Improvements:**
- **Documentation**: added codespell hook to pre-commit which checks for spelling errors in documentation and code

**Bugfixes:**
- **Simulation**: Delete simulation results for same simulation prior to run (as before v0.4.2)

**Full Changelog**: https://github.com/assume-framework/assume/compare/v0.4.2...v0.4.3

0.4.2

**New Features:**

- **Residential Components**: Added new residential DST components including PV, EV, Heat Pump, and Boiler, now with enhanced docstrings for better usability.
- **Modular DST Components**: DST components have been converted from functions to classes, improving modularity and reusability.
- **Generic Storage Class**: Introduced a `GenericStorage` class for storage components. Specific classes, such as EV and Hydrogen Storage, now inherit from it.
- **Storage Learning Strategy**: Added a new DRL-based learning strategy for storage units. To use it, set `storage_learning` in the `bidding_EOM` column of `storage_units.csv`. Refer to the `StorageRLStrategy` documentation for more details.
- **Mango 2.x Update**: Upgraded to mango 2.x, enabling synchronous world creation. To upgrade an existing environment, run:

pip uninstall -y mango-agents mango-agents-assume && pip install assume-framework --upgrade

- **Distributed Simulation Enhancements**: Improved distributed simulation for TCP and MQTT, allowing containers to wait for each other during simulations.
- **Integrated Optimization with Pyomo and HIGHS Solver**: The Pyomo library and HIGHS solver are now installed by default, removing the need to install `assume-framework[optimization]` separately. The HIGHS solver is used as the default, replacing the older GLPK solver for improved optimization performance and efficiency.

**Improvements:**

- **Documentation**: Refined tutorial notebooks and added bug fixes.
- **Saving Frequency Logic**: Refactored the saving frequency in the `WriteOutput` class for improved efficiency.

**Bug Fixes:**

- **Solver Compatibility**: Addressed undefined `solver_options` when using solvers other than Gurobi or HIGHS.
- **Cashflow Calculation**: Corrected cashflow calculations for single-digit orders.
- **Simulation Execution**: Enabled simulations to synchronize and wait for each other.
- **Edge Case Handling**: Fixed edge cases in `pay_as_clear` and `pay_as_bid`.

**New Contributor:**

- HafnerMichael made their first contribution with improvements to cashflow calculations and development of residential DST components.

**Full Changelog**: [v0.4.1...v0.4.2](https://github.com/assume-framework/assume/compare/v0.4.1...v0.4.2)

0.4.1

=========================================

**New Features:**

- improve LSTM learning strategy (382)
- add python 3.12 compatibility (334)
- manual strategy for interactive market simulation (403)

**Improvements:**

- add the ability to define the solver for the optimization-based market clearing inside the param_dict of the config file (432)
- shallow clone in Jupyter notebooks so that cloning is faster (433)
- fixes in storage operation bidding (417)
- update GitHub Actions versions (402)

**Bug Fixes:**
- add compatibility with pyyaml-include (421)
- make complex clearing compatible to RL (430)
- pin PyPSA to remove DeprecationWarnings for now (431)

0.4.0

**New Features:**

- **Market Coupling:** Users can now perform market clearing for different market zones with given transmission capacities. This feature
allows for more realistic simulation of market conditions across multiple interconnected regions, enhancing the accuracy of market
analysis and decision-making processes. A tutorial on how to use this feature is coming soon.

- **Adjust the Framework to Schedule Storing to the Learning Role:** This enhancement enables Learning agents to participate in sequential
markets, such as day-ahead and intraday markets. The rewards are now written after the last market, ensuring that the learning process
accurately reflects the outcomes of all market interactions. This improvement supports more sophisticated and realistic agent training scenarios.
A tutorial on how to use this feature is coming soon.

- **Multiprocessing:** Using a command line option, it is now possible to use run each simulation agent in its own process to speed up larger simulations.
You can read more about it in :doc:`distributed_simulation`

- **Steel Plant Demand Side Management Unit**: A new unit type has been added to the framework, enabling users to model the demand side management
of a steel plant. This feature allows for more detailed and accurate simulations of industrial energy consumption patterns and market interactions.
This unit can be configured with different components, such as the electric arc furnace, electrolyzer, and hot storage, to reflect the specific
characteristics of steel production processes. The process can be optimized to minimize costs or to maximize the available flexibility, depending
on the user's requirements. A tutorial and detailed documentation on how to use this feature are coming soon.

**Improvements:**

- Significant speed up of the framework and especially of the learning process
- Separated scenario loader function to improve speed and reduce unrequired operations
- Refactored unit operator by adding a seperate unit operator for learning units
- Enhanced learning output and path handling
- Updated dashboard for better storage view
- Improved clearing with shuffling of bids, to avoid bias in clearing of units early in order book
- Introduced a mechanism to clear the market according to defined market zones while maintaining information about
individual nodes, enabling the establishment of specific market zones within the energy market and subsequent
nodal-based markets such as redispatch.
- Added `zones_identifier` to the configuration file and `zone_id` to the `buses.csv`, and refactored the complex market
clearing algorithm to incorporate zone information, ensuring that bids submitted with a specific node are
matched to the corresponding market zone.
- If any values in the availability_df.csv file are larger than 1, the framework will now warn the user
and run a method to normalize the values to [0, 1].
- Examples have been restructed to easier orientation and understanding: example_01.. cover all feature demonstration examples,
example_02.. cover all learning examples, example_03.. cover all full year examples

**Bug Fixes:**

- Fix learning when action dimension equals one
- Fixed Tutorial 5
- Correctly calculated timezone offsets
- Improved handling of rejected bids
- Fix the error that exploration mode is used during evaluation
- Fix double dispatch writing
- Fixed complex clearing with pyomo>=6.7
- Resolved various issues with learning and policy saving
- Fixed missing market dispatch values in day-ahead markets
- Added a check for availability_df.csv file to check for any values larger than 1

**Other Changes:**

- Added closing word and final dashboard link to interoperability tutorial

0.3.7

What's Changed
* Edit how pyomo markets are imported by nick-harder in https://github.com/assume-framework/assume/pull/310
* Add ARM docker platform by maurerle in https://github.com/assume-framework/assume/pull/312
* Contract Market with feed in policy and market premium by maurerle in https://github.com/assume-framework/assume/pull/248
* Add basic grid visualization by maurerle in https://github.com/assume-framework/assume/pull/305
* Pypsa loader by maurerle in https://github.com/assume-framework/assume/pull/311
* update grafana docker version to latest by maurerle in https://github.com/assume-framework/assume/pull/316
* adjustments to scenario loaders by maurerle in https://github.com/assume-framework/assume/pull/317
* set correct compose.yml mount for docker by maurerle in https://github.com/assume-framework/assume/pull/320
* This commit prepares assume to integrate proper nodal pricing by nick-harder in https://github.com/assume-framework/assume/pull/304
* fix bugs in tutorial 6 by adamsjohanna in https://github.com/assume-framework/assume/pull/324
* Add fixed pyomo version to avoid warning by adamsjohanna in https://github.com/assume-framework/assume/pull/325
* Add Code of Conduct by maurerle in https://github.com/assume-framework/assume/pull/313
* Interoperability tutorial by maurerle in https://github.com/assume-framework/assume/pull/323
* increase version to 0.3.7 for latest release by maurerle in https://github.com/assume-framework/assume/pull/327


**Full Changelog**: https://github.com/assume-framework/assume/compare/v0.3.6...v0.3.7

Page 1 of 2

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.