All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
2.4.1 is a small patch release of the EMAworkbench, primarily resolving issues #276 and #277 in the workbench itself, and a bug introduced by #241 in the docs. The EMAworkbench now also raise exception when sampling scenarios or policies while no uncertainties or levers are defined (#282).
- Enhancement for #271: raise exception by @quaquel in quaquel#282
- bugfix to
rebuild_platypus_population
by @quaquel in quaquel#276 - Fixed dtype handling in
load_results
function. The dtype metadata is now correctly applied, resolving issue #277. - Fixed the documentation bug introduced by #241 in the general introduction section, which now accurately reflects the handling of categorical uncertainties in the experiment dataframe.
- readthedocs: Add search ranking and use latest Python version by @EwoutH in quaquel#242
- docs/examples: Always use
n_processes=-1
in MultiprocessingEvaluator by @EwoutH in quaquel#278
The latest release of the EMAworkbench introduces significant performance improvements and quality of life updates. The performance of _store_outcomes
has been enhanced by approximately 35x in pull request #232, while the combine
function has seen a 8x speedup in pull request #233. This results in the overhead of the EMAworkbench being reduced by over 70%. In a benchmark, a very simple Python model now performs approximately 40.000 iterations per second, compared to 15.000 in 2.3.0.
In addition to these performance upgrades, the examples have been added to the ReadTheDocs documentation, more documentation improvements have been made and many bugs and deprecations have been fixed.
The 2.4.x release series requires Python 3.8 and is tested on 3.8 to 3.11. It's the last release series supporting Python 3.8. It can be installed as usual via PyPI, with:
pip install --upgrade ema-workbench
- optional preallocation in callback based on outcome shape and type by @quaquel in quaquel#229
- util: Speed up
combine
by ~8x by @EwoutH in quaquel#233 - callbacks: Improve performance of _store_outcomes by ~35x by @EwoutH in quaquel#232
- fixes broken link to installation instructions by @quaquel in quaquel#224
- Docs: Fix developer installation commands by removing a space by @EwoutH in quaquel#220
- fixes a bug where Prim modifies the experiments array by @quaquel in quaquel#228
- bugfix for warning on number of processes and max_processes by @quaquel in quaquel#234
- Fix deprecation warning and dtype issue in flu_example.py by @quaquel in quaquel#235
- test for get_results and categorical fix by @quaquel in quaquel#241
- Fix
pynetlogo
imports by decapitalizingpyNetLogo
by @quaquel in quaquel#248 - change default value of um_p to be consistent with Borg documentation by @irene-sophia in quaquel#250
- Fix pretty print for RealParameter and IntegerParameter by @quaquel in quaquel#255
- Fix bug in AutoadaptiveOutputSpaceExploration with wrong default probabilities by @quaquel in quaquel#252
- Parallexaxis doc by @quaquel in quaquel#249
- Examples added to the docs by @quaquel in quaquel#244
- clusterer: Update AgglomerativeClustering keyword to fix deprecation by @EwoutH in quaquel#218
- Fix Matplotlib and SciPy deprecations by @EwoutH in quaquel#227
- CI: Add job that runs tests with pre-release dependencies by @EwoutH in quaquel#217
- Fix for stalling tests by @quaquel in quaquel#247
- add
metric
argument to allow for other linkages by @mikhailsirenko in quaquel#222
- @mikhailsirenko made their first contribution in quaquel#222
- @irene-sophia made their first contribution in quaquel#250
Full Changelog: https://github.com/quaquel/EMAworkbench/compare/2.3.0...2.4.0
This release adds a new algorithm for output space exploration. The way in which convergence tracking for optimization is supported has been overhauled completely, see the updated directed search user guide for full details. The documentation has moreover been expanded with a comparison to Rhodium.
With this new release, the installation process has been improved by reducing the number of required dependencies. Recommended packages and connectors can now be installed as extras using pip, for example pip install -U ema-workbench[recommended,netlogo]
. See the updated installation instructions for all options and details.
The 2.3.x release series supports Python 3.8 to 3.11. It can be installed as usual via PyPI, with:
pip install --upgrade ema-workbench
- Output space exploration by @quaquel in quaquel#170
- Convergence tracking by @quaquel in quaquel#193
- Switch to using format string in prim logging by @quaquel in quaquel#161
- Replace setup.py with pyproject.toml and implement optional dependencies by @EwoutH in quaquel#166
- use masked arrays for storing outcomes by @quaquel in quaquel#176
- Fix error for negative
n_processes
input in MultiprocessingEvaluator by @EwoutH in quaquel#189 - optimization.py: Fix "epsilons" keyword argument in
_optimize()
by @EwoutH in quaquel#150
- Create initial CONTRIBUTING.md documentation by @EwoutH in quaquel#162
- Create Read the Docs yaml configuration by @EwoutH in quaquel#173
- update to outcomes documentation by @quaquel in quaquel#183
- Improved directed search tutorial by @quaquel in quaquel#194
- Update Contributing.md with instructions how to merge PRs by @EwoutH in quaquel#200
- Update Readme with an introduction and documentation, installation and contribution sections by @EwoutH in quaquel#199
- Rhodium docs by @quaquel in quaquel#184
- Fix spelling mistakes by @EwoutH in quaquel#195
- Replace depreciated
shade
keyword in Seaborn kdeplot withfill
by @EwoutH in quaquel#169 - CI: Add pip depencency caching, don't run on doc changes, update setup-python to v4 by @EwoutH in quaquel#174
- Formatting: Format with Black, increase max line length to 100, combine multi-line blocks by @EwoutH in quaquel#178
- Add pre-commit configuration and auto update CI by @EwoutH in quaquel#181
- Fix Matplotlib, ipyparallel and dict deprecation warnings by @EwoutH in quaquel#202
- CI: Start testing on Python 3.11 by @EwoutH in quaquel#156
- Replace deprecated
saltelli
withsobol
SALib 1.4.6+. by @quaquel in quaquel#211
- Adds CITATION.cff by @quaquel in quaquel#209
Full Changelog: https://github.com/quaquel/EMAworkbench/compare/2.2.0...2.3
With the 2.2 release, the EMAworkbench can now connect to Vadere models on pedestrian dynamics. When inspecting a Prim Box peeling trajectory, multiple points on the peeling trajectory can be inspected simultaneously by inputting a list of integers into PrimBox.inspect()
.
When running experiments with multiprocessing using the MultiprocessingEvaluator
, the number of processes can now be controlled using a negative integer as input for n_processes
(for example, -2
on a 12-thread CPU results in 10 threads used). Also, it will now default to max. 61 processes on windows machines due to limitations inherent in Windows in dealing with higher processor counts. Code quality, CI, and error reporting also have been improved. And finally, generating these release notes is now automated.
- Vadere model connector by @floristevito in quaquel#145
- Improve code quality with static analysis by @EwoutH in quaquel#119
- prim.py: Make
PrimBox.peeling_trajectory["id"]
int instead of float by @EwoutH in quaquel#121 - analysis: Allow optional annotation of plot_tradeoff graphs by @EwoutH in quaquel#123
- evaluators.py: Allow MultiprocessingEvaluator to initialize with cpu_count minus N processes by @EwoutH in quaquel#140
PrimBox.inspect()
now can also take a list of integers (aside from a single int) to inspect multiple points at once by @quaquel in https://github.com/quaquel/EMAworkbench/commit/6d83a6c33442ad4dce0974a384b03a225aaf830d (see also issue quaquel#124)
- fixed typo in lake_model.py by @JeffreyDillonLyons in quaquel#136
- Docs: Installation.rst: Add how to install master or custom branch by @EwoutH in quaquel#122
- Docs: Replace all http links with secure https URLs by @EwoutH in quaquel#134
- Maintain release notes at CHANGELOG.md and include them in Readthedocs by @quaquel in https://github.com/quaquel/EMAworkbench/commit/ebdbc9f5c77693fc75911ead472b420065dfe2aa
- Fix badge links in readme by @quaquel in https://github.com/quaquel/EMAworkbench/commit/28569bdcb149c070c329589969179be354b879ec
- feature_scoring: fix Regressor criterion depreciation by @EwoutH in quaquel#125
- feature_scoring.py: Change
max_features
in get_rf_feature_scores to"sqrt"
by @EwoutH in quaquel#129 - CI: Use Pytest instead of Nose, update default build to Python 3.10 by @EwoutH in quaquel#131
- Release CI: Only upload packages if on main repo by @EwoutH in quaquel#132
- CI: Split off flake8 linting in a separate job by @EwoutH in quaquel#133
- CI: Add weekly scheduled jobs and manual trigger by @EwoutH in quaquel#137
- setup.py: Add
project_urls
for documentation and issue tracker links by @EwoutH in quaquel#142 - set scikit-learn requirement >= 1.0.0 by @rhysits in quaquel#144
- Create release.yml file for automatic release notes generation by @EwoutH in quaquel#152
- instantiating an Evaluator without one or more AbstractModel instances now raises a type error by @quaquel in https://github.com/quaquel/EMAworkbench/commit/a83533aa8166ca2414137cdfc3125a53ee3697ec
- removes depreciated DataFrame.append by replacing it with DataFrame.concat (see the conversation on issue quaquel#126):
- from feature scoring by @quaquel in https://github.com/quaquel/EMAworkbench/commit/8b8bfe41733e49b75c01e34b75563e0a6d5b4024
- from logistic_regression.py by @quaquel in https://github.com/quaquel/EMAworkbench/commit/255e3d6d9639dfe6fd4e797e1c63d59ba0522c2d
- removes NumPy datatypes deprecated in 1.20 by @quaquel in https://github.com/quaquel/EMAworkbench/commit/e8fbf6fc64f14b7c7220fa4d3fc976c42d3757eb
- replace deprecated scipy.stats.kde with scipy.stats by @quaquel in https://github.com/quaquel/EMAworkbench/commit/b5a9ca967740e74d503281018e88d6b28e74a27d
- @JeffreyDillonLyons made their first contribution in quaquel#136
- @rhysits made their first contribution in quaquel#144
- @floristevito made their first contribution in quaquel#145
Full Changelog: https://github.com/quaquel/EMAworkbench/compare/2.1.2...2.2.0