Skip to content

Commit 2178cfb

Browse files
authored
Update version (#203)
* Update version * Add changelog * Update version
1 parent a55c7e8 commit 2178cfb

2 files changed

Lines changed: 90 additions & 2 deletions

File tree

docs/CHANGELOG.md

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,89 @@
1-
# Changelog
1+
# Changelog
2+
3+
All notable changes to GemsPy are documented here.
4+
5+
## [0.1.0] - 2026-04-30
6+
7+
### Study folder structure
8+
9+
Studies are now loaded from a conventional directory layout via `load_study(study_dir)`:
10+
11+
```
12+
<study>/
13+
input/
14+
system.yml # component topology and connections
15+
model-libraries/*.yml # model library files
16+
data-series/ # time-series parameter files (TSV)
17+
data-series/modeler-scenariobuilder.dat # optional scenario mapping
18+
```
19+
20+
The `Study` object (pairing a `System` with a `DataBase`) is the single input to `SimulationSession`.
21+
22+
### Optimization configuration (`optim-config.yml`)
23+
24+
A new `optim-config.yml` file controls all aspects of a simulation run:
25+
26+
- **`resolution.mode`** — four strategies: `frontal`, `sequential-subproblems`, `parallel-subproblems`, `benders-decomposition`
27+
- **`resolution.block_length` / `block_overlap`** — time-window size and overlap for sequential/parallel modes
28+
- **`time_scope`**`first_time_step` / `last_time_step`
29+
- **`scenario_scope.nb_scenarios`** — number of Monte-Carlo scenarios to run
30+
- **`solver_options`** — solver name (default: HiGHS), log verbosity, and free-form solver parameters
31+
- **`models[].model_decomposition`** — per-model assignment of variables, constraints, and objective contributions to `master`, `subproblems`, or `master-and-subproblems` (used for Benders decomposition)
32+
- **`models[].out_of_bounds_processing`** — per-constraint handling of time indices that fall outside the horizon (`cyclic` or `drop`)
33+
34+
### Scenario builder
35+
36+
`modeler-scenariobuilder.dat` maps Monte-Carlo scenario indices to data-series column indices on a per-scenario-group basis, allowing different components to draw from different stochastic draws.
37+
38+
### Vectorized solver
39+
40+
The internal optimizer was migrated from a scalar OR-Tools pipeline to a fully vectorized [linopy](https://github.com/PyPSA/linopy) / xarray pipeline. All constraints for all components, time steps, and scenarios are now built in a single pass and solved in one call — significantly reducing build time for large horizons.
41+
42+
### Removed
43+
- OR-Tools dependency.
44+
45+
---
46+
47+
## [0.0.6] - 2025
48+
49+
### Added
50+
- Math operators `floor`, `ceil`, `min`, and `max` in the GemsPy expression language, with `max`/`min` accepting a variadic argument list (`argList` grammar rule).
51+
- Support for complex variable bounds expressions: operator expansion now runs before bounds evaluation, enabling expressions such as `min(p_max_cluster, min_gen_mod * unit_count * p_max_unit)`.
52+
- `visitTimeShiftExpr` and `visitTimeIndexExpr` in the expression visitor interface.
53+
- `AGENTS.md` and agent guidance documentation.
54+
- Status and quality badges in README.
55+
56+
### Fixed
57+
- O(T²) list-copy performance bug in `CopyVisitor.addition` (now O(T)).
58+
- Pandas and Pydantic deprecation warnings resolved.
59+
- `floor`/`ceil`/`max`/`min` visitor implementations in `LinearExpressionBuilder`.
60+
- Degree of `floor`/`ceil`/`max`/`min` returns `inf` for non-constant operands.
61+
62+
---
63+
64+
## [0.0.5] - 2025
65+
66+
### Added
67+
- `load_input_system`: load and validate an input system into memory from a file path.
68+
69+
---
70+
71+
## [0.0.4] - 2025
72+
73+
### Removed
74+
- PyPSA → GEMS converter and related files (out of scope).
75+
76+
---
77+
78+
## [0.0.3] - 2025
79+
80+
### Changed
81+
- Version naming aligned; package prepared for PyPI upload.
82+
- README revised to consistently use GEMS / GemsPy naming.
83+
84+
---
85+
86+
## [0.0.2] - 2025
87+
88+
### Changed
89+
- Initial PyPI preparation: project metadata, classifiers, and packaging configuration.

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "gemspy"
7-
version = "0.0.6"
7+
version = "0.1.0"
88
description = "Python interpreter for GEMS: modelling and simulation of complex energy systems under uncertainty"
99
readme = "README.md"
1010
license = { file = "LICENSE" }

0 commit comments

Comments
 (0)