Skip to content

Commit e1cb20e

Browse files
authored
Feature/docs improvement (#481)
* Flow.md - Fully restructured with: - Tab-based organization (Core / Advanced / Patterns / Examples) - Collapsible definition blocks - Links to both Flow and FlowModel classes - Updated docstrings with absolute URLs 2. Bus.md - Restructured with tab organization and dual class linking 3. Storage.md - Restructured with comprehensive examples and dual class linking 4. LinearConverter.md - Restructured with detailed examples including specialized converters 5. InvestParameters.md - Restructured with clear separation of core vs. advanced features * Improve organization * Improve organization * Improve organization by using tables * Improve organization by using tables and use eqref * Add symbol to parameter mapping * Changed to inline math * Use propre constraints with numbering * Move parameters into separate tab * Reorder parameters * : Use the columns "symbol" and "python name" in the variables tab * Update Bus, Storage, and LinearConverter.md * Update InvestParameters and OnOffParameters.md * Update Piecewise.md * Compact effects-penalty-objective.md * Allow toc level 3 * Add toc to homepage * Replace ustom css with mkdocs material stuff * Revert some * Revert some * Remove layout css rule * Show toc on homepage * FIx broken link * Add edit uri * Hide bottom part * Hide bottom part * Restructure docs * Show navigation in home * Add Changelog fromating * THighten CHANGELOG.md * Simplify users.md * Simplify models.md * Shorten citing.md * Shorten support.md * Update CHANGELOG.md * Simplify installation.md * Simplify quick-start.md * Updated FullCalculation → Optimization in documentation Fixed mkdocs.yml navigation Fixed broken link in support.md * Fixed solver calls in docs * Move files and restructure * Delete old docs script * Improve docs structure * Imrpove Optimization Modes * Imrpove Optimization Modes * Rewrite the core concepts to be user facing * Reorganize Mathematical Notation * 1. Minimal variable names — Changed from words to symbols: - penalty_rate → $c_\phi$ - relative_min → $p_{rel}^{min}$ - flow_hours → $h_f$ - loss → $\dot{c}_{loss}$ - etc. 2. Tabs for conditional constraints — Used === "Tab Name" syntax for: - Bus.md: "Without Excess (Strict)" vs "With Excess (Soft)" - Flow.md: "Standard (No On/Off)" vs "With On/Off" vs "Fixed Profile" - Storage.md: "Fixed Initial" vs "Cyclic" vs "Final Bounds" - LinearConverter.md: "Single Input/Output" vs "Multiple Outputs" vs "COP > 1" vs "Time-Varying" - Effects.md: "Temporal (Operational)" vs "Periodic (Investment)" vs "Total" 3. Corrected Flow constraints — Clarified that: - Without on/off parameters: flow cannot be zero if relative_minimum > 0 - With on/off parameters: flow can be zero (when off) OR within bounds (when on) 4. Cleaner structure — Removed redundant content, focused on essential formulas and examples * The Flow.md now has four tabs for capacity bounds: 1. Fixed Size — Standard bounds without on/off 2. Fixed Size + On/Off — Can be zero when off 3. Variable Size — Investment decision on capacity 4. Variable Size + On/Off — Both investment and on/off, with big-M linearization for the bilinear term $s(t) \cdot P$ * InvestParameters.md: - Story-driven intro with real-world examples - Core concept: "Size as a Variable" - Tabs for: Binary (Fixed Size) | Continuous (Size Range) | Mandatory - Tabs for effects: Fixed | Specific | Retirement | Piecewise - Minimal variable names: $P$, $s_{inv}$, $c_{fix}$, $c_{spec}$, etc. - Cost annualization formula OnOffParameters.md: - Story-driven intro with real-world examples - Core concept: "Binary State" with flow bound modification - Tabs for state transitions: Switch Detection | Startup Costs | Running Costs - Tabs for duration constraints: Min Run Time | Min Off Time | Max Run Time | Total Hours | Max Startups - Minimal variable names: $s(t)$, $s^{on}(t)$, $s^{off}(t)$, $T_{on}^{min}$, etc. Piecewise.md: - Story-driven intro with ASCII diagram - Core concept: Linear segments with weighted combinations - Tabs for constraints: Single Piece Active | With Zero Point - Tabs for piece patterns: Continuous (Touching) | Gap (Forbidden Region) | Zero Point - Minimal variable names: $\beta_k$, $\lambda_0$, $\lambda_1$, etc. - Practical examples for heat pumps, boilers, and investment * Make OnOffParameters better * Piecewise.md: - Replaced the useless ASCII diagram with a more informative one showing: - Actual axis labels (input/output) - Numeric values on axes - Two pieces with their connection point labeled - Clear visual of how pieces connect at (50, 45) - Shows the start/end points notation * Add plotly chart * Add custom javascript * Remove charts plugin * Add missing docs file * Fix quick start * Delete model.md * Update citation * Update license.md * Simplify faq, support and troubleshooting.md * Remove old workflow * 1. Renamed OnOffParameters.md → StatusParameters.md 2. Updated all terminology: - on_off_parameters → status_parameters - OnOffParameters → StatusParameters - effects_per_switch_on → effects_per_startup - effects_per_running_hour → effects_per_active_hour - consecutive_on_hours_min → min_uptime - consecutive_on_hours_max → max_uptime - consecutive_off_hours_min → min_downtime - on_hours_min/max → active_hours_min/max - switch_on_max → startup_limit - switch_on/switch_off → startup/shutdown - "on/off" language → "active/inactive" language 3. Updated references in Flow.md, LinearConverter.md, and effects-penalty-objective.md * Remove Modeling patterns from docs * Simplify docs * Improve LinearConverter.md * Improve Flow.md * Improve effects-penalty-objective.md * Improve InvestParameters.md * Add durtaion constraints * Update Piecewise stuff * Update Piecewise stuff * Update Piecewise stuff * Combine effects and dimensions into one tab * The dimension examples now correctly show how to assign them to FlowSystem using pd.Index: * Update effects-and-dimensions.md * Update effects-and-dimensions.md * updated all reference tables across all Mathematical Notation pages to be consistent * updated all reference tables across all Mathematical Notation pages to be consistent * updated all reference tables across all Mathematical Notation pages to be consistent
1 parent 1c4511a commit e1cb20e

48 files changed

Lines changed: 2413 additions & 2657 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ venv/
88
.DS_Store
99
lib/
1010
temp-plot.html
11+
.cache
12+
site/
13+
*.egg-info
14+
uv.lock

CHANGELOG.md

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ This contains all commits, PRs, and contributors.
1616
Therefore, the Changelog should focus on the user-facing changes.
1717
1818
Please remove all irrelevant sections before releasing.
19-
Please keep the format of the changelog consistent with the other releases, so the extraction for mkdocs works.
19+
Please keep the format of the changelog consistent: ## [VERSION] - YYYY-MM-DD
2020
---
2121
2222
## [Template] - ????-??-??
@@ -49,11 +49,11 @@ If upgrading from v2.x, see the [v3.0.0 release notes](https://github.com/flixOp
4949
5050
---
5151
52-
## [Unreleased] - ????-??-??
52+
Until here -->
5353

54-
**Summary**: Renamed OnOff terminology to Status terminology for better alignment with PyPSA and unit commitment standards. **All deprecated items from v4.x have been removed.**
54+
## [Upcoming]
5555

56-
### ✨ Added
56+
**Summary**: Renamed OnOff terminology to Status terminology for better alignment with PyPSA and unit commitment standards. **All deprecated items from v4.x have been removed.**
5757

5858
### 💥 Breaking Changes
5959

@@ -212,22 +212,14 @@ A partial backwards compatibility wrapper would be misleading, so we opted for a
212212
- Flow parameters: `Q_fu` → use `fuel_flow`, `P_el` → use `electrical_flow`, `Q_th` → use `thermal_flow`, `Q_ab` → use `heat_source_flow`
213213
- Efficiency parameters: `eta` → use `thermal_efficiency`, `eta_th` → use `thermal_efficiency`, `eta_el` → use `electrical_efficiency`, `COP` → use `cop`
214214

215-
### 🐛 Fixed
216-
217-
### 🔒 Security
218-
219-
### 📦 Dependencies
220215

221216
### 📝 Docs
217+
- Improve documentation from the ground up
222218

223-
### 👷 Development
224-
225-
### 🚧 Known Issues
219+
This is not yet publicly released!
226220

227221
---
228222

229-
Until here -->
230-
231223
## [4.3.5] - 2025-11-29
232224

233225
**Summary**: Fix zenodo again

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ boiler = fx.Boiler("Boiler", eta=0.9, ...)
9696
### Key Features
9797

9898
**Multi-criteria optimization:** Model costs, emissions, resource use - any custom metric. Optimize single objectives or use weighted combinations and ε-constraints.
99-
[Effects documentation](https://flixopt.github.io/flixopt/latest/user-guide/mathematical-notation/effects-penalty-objective/)
99+
[Effects documentation](https://flixopt.github.io/flixopt/latest/user-guide/mathematical-notation/effects-and-dimensions/)
100100

101101
**Performance at any scale:** Choose optimization modes without changing your model - Optimization, SegmentedOptimization, or ClusteredOptimization (using [TSAM](https://github.com/FZJ-IEK3-VSA/tsam)).
102102
[Optimization modes](https://flixopt.github.io/flixopt/latest/api-reference/optimization/)

docs/getting-started.md

Lines changed: 0 additions & 65 deletions
This file was deleted.

docs/home/citing.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Citing flixOpt
2+
3+
If you use flixOpt in your research, please cite it.
4+
5+
## Citation
6+
7+
When referencing flixOpt in academic publications, please use look here: [flixopt citation](https://zenodo.org/records/17756895)
8+
9+
## Publications
10+
11+
If you've published research using flixOpt, please let us know! We'd love to feature it here.
12+
13+
### List of Publications
14+
15+
*Coming soon: A list of academic publications that have used flixOpt*
16+
17+
## Contributing Back
18+
19+
If flixOpt helped your research:
20+
21+
- Share your model as an example
22+
- Report issues or contribute code
23+
- Improve documentation
24+
25+
See the [Contributing Guide](../contribute.md).
26+
27+
## License
28+
29+
flixOpt is released under the MIT License. See [License](license.md) for details.

docs/home/installation.md

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Installation
2+
3+
This guide covers installing flixOpt and its dependencies.
4+
5+
6+
## Basic Installation
7+
8+
Install flixOpt directly into your environment using pip:
9+
10+
```bash
11+
pip install flixopt
12+
```
13+
14+
This provides the core functionality with the HiGHS solver included.
15+
16+
## Full Installation
17+
18+
For all features including interactive network visualizations and time series aggregation:
19+
20+
```bash
21+
pip install "flixopt[full]"
22+
```
23+
24+
## Development Installation
25+
26+
If you want to contribute to flixOpt or work with the latest development version:
27+
28+
```bash
29+
git clone https://github.com/flixOpt/flixopt.git
30+
cd flixopt
31+
pip install -e ".[full,dev,docs]"
32+
```
33+
34+
## Solver Installation
35+
36+
### HiGHS (Included)
37+
38+
The HiGHS solver is included with flixOpt and works out of the box. No additional installation is required.
39+
40+
### Gurobi (Optional)
41+
42+
For academic use, Gurobi offers free licenses:
43+
44+
1. Register for an academic license at [gurobi.com](https://www.gurobi.com/academia/)
45+
2. Install Gurobi:
46+
```bash
47+
pip install gurobipy
48+
```
49+
3. Activate your license following Gurobi's instructions
50+
51+
## Verification
52+
53+
Verify your installation by running:
54+
55+
```python
56+
import flixopt
57+
print(flixopt.__version__)
58+
```
59+
60+
## Logging Configuration
61+
62+
flixOpt uses Python's standard logging module with optional colored output via [colorlog](https://github.com/borntyping/python-colorlog). Logging is silent by default but can be easily configured:
63+
64+
```python
65+
from flixopt import CONFIG
66+
67+
# Enable colored console logging
68+
CONFIG.Logging.enable_console('INFO')
69+
70+
# Or use a preset configuration for exploring
71+
CONFIG.exploring()
72+
```
73+
74+
Since flixOpt uses Python's standard logging, you can also configure it directly:
75+
76+
```python
77+
import logging
78+
79+
# Get the flixopt logger and configure it
80+
logger = logging.getLogger('flixopt')
81+
logger.setLevel(logging.DEBUG)
82+
logger.addHandler(logging.StreamHandler())
83+
```
84+
85+
For more details on logging configuration, see the [`CONFIG.Logging`][flixopt.config.CONFIG.Logging] documentation.
86+
87+
## Next Steps
88+
89+
- Follow the [Quick Start](quick-start.md) guide
90+
- Explore the [Minimal Example](../examples/00-Minimal Example.md)
91+
- Read about [Core Concepts](../user-guide/core-concepts.md)

docs/home/license.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# License
2+
3+
flixOpt is released under the MIT License.
4+
5+
## MIT License
6+
7+
```
8+
MIT License
9+
10+
Copyright (c) 2022 Chair of Building Energy Systems and Heat Supply - TU Dresden
11+
12+
Permission is hereby granted, free of charge, to any person obtaining a copy
13+
of this software and associated documentation files (the "Software"), to deal
14+
in the Software without restriction, including without limitation the rights
15+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
16+
copies of the Software, and to permit persons to whom the Software is
17+
furnished to do so, subject to the following conditions:
18+
19+
The above copyright notice and this permission notice shall be included in all
20+
copies or substantial portions of the Software.
21+
22+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
26+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
27+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
28+
SOFTWARE.
29+
```
30+
31+
## What This Means
32+
33+
The MIT License is a permissive open-source license that allows you to:
34+
35+
**Use** flixOpt for any purpose, including commercial applications
36+
**Modify** the source code to fit your needs
37+
**Distribute** copies of flixOpt
38+
**Sublicense** under different terms
39+
**Use privately** without making your modifications public
40+
41+
## Contributing
42+
43+
By contributing to flixOpt, you agree that your contributions will be licensed under the MIT License. See our [Contributing Guide](../contribute.md) for more information.

0 commit comments

Comments
 (0)