Note: Currently not working
whatI am a drawer*Hello this is a sample text
- C-c C-c to execute
for i in range(3):
print(i)
C-c C-c to execute code
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig=plt.figure(figsize=(3,2))
plt.plot([1,3,2])
fig.tight_layout()
plt.savefig('images/myfig.pdf')
'images/myfig.pdf' # return this to org-mode
- trying a list
- list
- what
- is that
- with several items
- what
- M-RET crates a new level entry
- [ ] M-S RET creates a new checkbox
- [X] checked checkbox archived by C-c C-c
- [ ]
- Currently tessif/transform/mapping2es/omf.py expects the Energy System Mapping (esm) for ‘timeframe’ to be an exel like pandas.DataFrame:
- Tessif on the other hand expects the esm to have only timeindices
(‘primary’, ‘secondary’, …) to be behind the ‘timeframe’ key whereas
the actual timeseries data is stored insdie the actual components ‘timeseries’
key as in:
- src_python{‘timeseries’={‘fuel’: (0, [20, 44, 40])}}
- taken from file:tessif/examples/tsf/cfg/flat/sources.cfg
- currently omf.xlsx can not be parsed with file:tessif/parse.py ‘s xl_like function
- Change parse.xl_like behaviour so it generates a similar mapping as the others:
- Parse the excel spreadsheet into the energy system mapping (‘esm’):
import pandas as pd from tessif.frused.paths import example_dir import os p = os.path.join( example_dir, 'omf', 'xlsx', 'generic_storage.ods') esm = pd.read_excel(io=p, sheet_name=None, skiprows=(0, 1, 2), engine='odf') print(esm['Demand'].loc[ esm['Demand']['name'] == 'Power Demand']['actual_value'])
- Extract the timeframe dataframe (‘timeframe_df’) allowing for spelling variatoins:
from tessif.frused import spellings tf_key = [variant for variant in spellings.timeframe if variant in esm.keys()][0] timeframe_df = esm.pop(tf_key) print(timeframe_df)
- Iterate through each timeseries requestment and compare it to each
component of each component type to fill in the apropriate series
- Transform ‘timeframe’-sheet[{name}{timeseries_seperator}{parameter} to
- esm[component_type][component_name][‘timeseries’] = {parameter: series}
- esm[component_type][component_name][‘timeseries’] to ‘None’
from tessif.frused import configurations from tessif.frused.defaults import energy_system_nodes as esn for column_header in timeframe_df.columns: for component_type, components_df in esm.copy().items(): # default timeseries if component_type not in spellings.timeframe: components_df['timeseries'] = esn['timeseries'] for row, component in components_df.iterrows(): component_name = spellings.get_from( component, smth_like='name', dflt=esn['name']) if column_header.split(configurations.timeseries_seperator)[ 0] == component_name: # yes there is so create a timeseries mapping: # value to replace (min/max/actual) represented_value = column_header.split( configurations.timeseries_seperator)[1] series = list(timeframe_df[column_header]) esm[component_type].loc[ esm[component_type]['name']==component_name, 'timeseries'] = {str(represented_value): series} print('\n', esm['Demand']['timeseries'])
- Check the results
print(esm['Demand'].loc[ esm['Demand']['name'] == 'Power Demand', 'timeseries'])
- Parse the excel spreadsheet into the energy system mapping (‘esm’):
- Change file:tessif/transform/mapping2es/omf.py ‘s parse_timeseries function:
- Silence the debugger for a second
from tessif.frused import configurations configurationttpuus.spellings_logging_level = 'debug'
- Parse the excel spreadsheet into the energy system mapping (esm)
import pandas as pd from tessif.frused.paths import example_dir import tessif.parse as parse import os p = os.path.join( example_dir, 'omf', 'xlsx', 'generic_storage.ods') esm = parse.xl_like( io=os.path.join( example_dir, 'omf', 'xlsx', 'generic_storage.ods'), engine='odf') es_object=esm['Demand'].loc[ esm['Demand']['name'] == 'Power Demand'].squeeze() print() print(es_object)
- Silence the debugger for a second
- Parse the timeseries correctly
import tessif.transform.mapping2es.omf def pt(component): return component['timeseries'] omf.parse_timeseries = pt parsed_timeseries = omf.parse_timeseries( component=es_object) print() print(parsed_timeseries)
- Parsing the excel spreadsheet correctly:
from tessif import parse from tessif.frused.paths import example_dir import os esm = parse.xl_like( io=os.path.join( example_dir, 'omf', 'xlsx', 'generic_storage.ods'), engine='odf') print('actual_value:' , esm['Demand']['actual_value'].iloc[0], '\n') print('timeseries:\n', esm['Demand']['timeseries'])
Result must be:
actual_value: 1 timeseries: 0 {'actual_value': [1.0, 1.0, 0.7, 1.0, 1.0]} Name: timeseries, dtype: object
- Transform the mapping correctly:
from tessif import simulate from tessif.transform.es2mapping import omf from tessif.frused.paths import example_dir from tessif import parse import os import functools es = simulate.omf( path=os.path.join( example_dir, 'omf', 'xlsx', 'generic_storage.ods'), parser=functools.partial(parse.xl_like, sheet_name=None, engine='odf'), solver='glpk' ) print(omf.StorageResultier(es).node_soc['Storage'])
Result must be:
2016-01-01 00:00:00 49.000000 2016-01-01 01:00:00 97.951000 2016-01-01 02:00:00 205.653049 2016-01-01 03:00:00 254.447396 2016-01-01 04:00:00 303.192949 Freq: H, Name: Storage, dtype: float64
- Introduction
- Theory
- Energy Supply System Simulation (E3S)
- General Explanation
- Currently used free open source software (FOSS) tools
- Case studies using FOSS E2S tools
- Developed Component Verificaiton
- Developed Benchmark Scenarios
- Perfect Grid - Component Dispatch Optimization
- Perfect Grid - Energy Supply System Expansion Problem
- Loss-Affected Grid - Dispatch Optimization
- Loss-Affected Grid - Expansion Problem
- Developed Comparative Methodology
- Computational Comparison
- Computational Time
- Used Memory
- Scaleability
- Technical Comparision
- Global Costs
- Global Emissions
- Difference in load distribution (chart)
- Difference Exagerating Graph View
- Computational Comparison
- Energy Supply System Simulation (E3S)
Developing a method for verifying energy supply system simulation model components implemented in python.
- Research
- What is an energy supply system simulation
- Foss tools like oemof and pypsa
- Existing component verifications (probably none)
- Verification Scenario Development (see Verification Scenarios below)
- Programing
- Learning
- Very basics of python
- YouTube
- Blogs
- Library books
- Tessif
- Installation
- Documentation
- Examples
- Very basics of python
- Coding
- Use or copy and modify visualize.component.response for comparing input(=demand) and component response (=load)
- Code the Verificier (See Programatic Tasks BAver)
- Write a documentation file in docs/source/examples/scenarios.rst (See Programatic Tasks BAver)
- Learning
- Write the thesis (see Thesis Structure BAver)
- Create 5x3 energy system data sets according to the verification methodology
- Sets:
- Sinks, Sources, Connectors, Transformers, Storages
- Linear, Milp, Expansion
- Location: examples/application/verification/
- Sets:
- Finish Coding Verificier
- Location:
- tessif/examples/application/verification.py
- tessif.analyze.Verificier
- Parameters:
- top_level_folder
- string representing the location of the tessif energy system data sets
- top_level_folder
- Location:
For example: example_dir = tessif.frused.paths.example_dir components = (‘sink’, ‘source’, ‘connector’, ‘transformer’, ‘storage’) constraints = (‘linear’, ‘milp’, ‘expansion’)
paths = [] for component in components: for constraint_type in constraints: paths.append( os.path.join(example_dir, ‘application’, ‘omf’, component, constraint_type)
- parser
- callable performing the data read in and parsing
Usually one of the functions found in tessif.parse
Use functools.partial for parameterization:
parser=functools.partial( tessif.parse.xl_like, engine=’odf’),
- callable performing the data read in and parsing
- transformer
- callable performing the transformation. i.e:
transfromer=tessif.transformation.es2es.omf.transform
- callable performing the transformation. i.e:
- simulatier
- callabe performing the simulation. Usually one of the simulation
wrappers found in tessif.simulate
Use functools.partial for parameterization:
simulatier=functools.partial( tessif.simulate.oemof_from_es, solver=’glpk’)
(This is part of the documentation and an example how to be used)
- callabe performing the simulation. Usually one of the simulation
wrappers found in tessif.simulate
- resultier
- callable performing the result extraction. Usually one of the LoadResultiers found
in tessif.transform.es2mapping. For example:
resultier=tessif.transform.es2mapping.omf.LoadResultier
- callable performing the result extraction. Usually one of the LoadResultiers found
in tessif.transform.es2mapping. For example:
- components, dflt=[‘sink’, ‘source’, ‘transformer’, ‘connector’, ‘storage’]
- collection of strings representing the components as well as the folder structure of the es sets
- constraints, dflt=[‘linear’, ‘milp’, ‘expansion’]
- collection of strings representing the constraint types as well as the es sets
- Attributes:
- result dict for components
inlcuding result dataframe and verification plot figures as in:
results = {‘sinks’: {‘data’: {‘linear’: pandas.DataFrame, ‘milp’: pandas.DataFrame, ‘expansion’: pandas.DataFrame}, ‘figs’: {‘linear’: matplotlib.figure.Figure, …}}, ‘sources’: …
- result dict for components
inlcuding result dataframe and verification plot figures as in:
- Concept: (this is all done in the __init__ function)
- Perform simulation according to simulatier
- Create results dict for component_number, component in enumerate(components): for constraint in constriants: if not constraint == ‘expansion’: result_data[component][constraint] = load_resultier(es)[col if component in col, ‘demand’] else: result_data[component][constraint] = capacity_resultier(es)[col if component in col]
- Create using the results dict
- Create the figures using tessif.visualize.component.response or your own plotting engine
- Write Documentation (docs/source/api/examples/application/verification.rst)
- Brief first words (similar to every other tessif module)
- Table of contents
- ..contents:: Contents
- Introduction (specific introduction part of thesis)
- Components (Condensed reults section of the thesis)
- Sinks
- Sources
- Connectors
- Transfomers
- Storages
each including a diagram showing:
- the energy system
- linear dispatch
- mixed integer linear dispatch
- expansion
- Verificier (auto generated)
- Introduction
- Theory
- Identified Components for Verification
- Sinks/Sources
- Transformers
- Connectors
- Storages
- <<Verification Scenarios>>
- 2 to 3 components of same type and switching back and forth depending on parameters
- Linear Dispatch
- On/Off/Flow Rates/Accumulated Amount
- Gradient and Gradient cost Switching
- Mixed Integer Linear Dispatch
- Initial Status/Status Inertia/Activity Costs/
- Number of status changes/status changing costs
- Expansion
- Expanding cheaper component
- Expand lower emission component to reach emission objective
- Identified Components for Verification
- Examplary Verification (of oemofs energy system components)
- Oemof components via tessif transformation for possible upscaling
- Conclusion
- Successful developement of a verification process for energy supply system simulation components
- No obvious/some obvious contradictions found
- Outlook
- Once developed verifying components from additional models possible without any additonal coding
- upscaling
- Developing additional verification scenarios
- Coupling expandaple parameters for storage expansion
- Once developed verifying components from additional models possible without any additonal coding
- Research
- What is an energy supply system simulation
- Foss tools like oemof and pypsa
- Case studies using oemof, pypsa and other (foss) tools
- Read computational/technical comparison method
- Scenario Development (see Benchmark Scenarios)
- Programing
- Learning
- Very basics of python
- YouTube
- Blogs
- Library books
- Tessif
- Installation
- Documentation
- Examples
- Very basics of python
- Coding
- Use or copy and modify visualize.compare.loads for comparing load distribution data
- Use or copy and modify visualize.compare.bar for comparing computational/technical parameters
- 3. Finish script in examples.application.scenarios using examples.application.comparison.Comparatier (See Programatic Tasks MTbs)
- 4. Finish writing a documentation file in docs/source/examples/scenarios.rst (See Programatic Tasks MTbs)
- Learning
- Write the thesis (see Thesis Structure MTbs)
- Create scenarios using Excel
- Finish coding the Comparatier class and the scenarios.py script
- Location:
- examples.application.comparison.Comparatier
- examples.application.scenarios
- Parameters:
- path
- location the tsf parsable energy system data resides
- <<models>>
- collection of strings naming the models to compare, i.e. [‘tessif’, ‘oemof’, ‘pypsa’]
- path
- <<Attributes>>:
- nxgraph
- networkx.Graph representing the scenario
- graph_chart
- plotted nxgraph
- dif_chart(component_name)
- load difference charts of timesteps (transformers/connectors) exceeding the threshold
- see visualize.compare.loads and Developing Visual Comparison Methods BAvc
- bar_chart
- see visualize.compare.bar
- compare technical and computational parameters (costs, emisisons, cpu-time, memory, time scaling O(n^x), memory scaling O(n^y), …)
- load_differences (optional?)
- dict of dicts of collection:
- {‘model_name’: {‘component_name’: load_data}}
- {‘tessif’: {‘solar’: [1, 2, 4, 2, 1]}}
- dict of dicts of collection:
- results
- pandasDataFrame:
- columns = methodology parameters (costs, emissions, …)
- index/rows = models (tesisf, oemof, …)
- pandasDataFrame:
- energy_systems:
- dict of model name and simulated systems:
- {‘model_name’: simulated_es}
- {‘tessif’: tessif_es}
- dict of model name and simulated systems:
- nxgraph
- Concept:
- Read in Data using parse.xl_like
- Create a single energy system instance using transform.es2es and models
- Simulate each instance using simulate
- Fill Attributes with the result data
- Location:
- Write Documentation (docs/api/examples/application/scenarios.rst)
- Brief first words (similar to every other tessif module)
- Table of contents
- ..contents:: Contents
- Introduction (specific introduction part of thesis)
- Scenarios (Condensed result section of the thesis)
- Component Dispatch
- Component Expansion
- Grid Dispatch
- Grid Expansion
each including:
- the nxgraph chart
- the bar chart
- the diff chart
- and the code to produce them
- a descriptive evaluation like ie:
- using tessif->pypsa results in loss of data
- pypsa much more powerful in grid and large scale
- oemofs non linear speciality compents not respected for fine tuning dispatch optimization etc.
- Scaling
- Table listing models and their Big O Notation value
model N T oemof O(n) O(n²) pypsa .. ..
- Table listing models and their Big O Notation value
- Introduction
- Theory
- Energy Supply System Simulation (E3S)
- General Explanation
- Currently used free open source software (FOSS) tools
- Case studies using FOSS E2S tools
- Identifying/Developing common types of scenarios for energy supply system simulations
- Component centered:
- Dispatch optimization
- energy supply system expansion/reduction problem
- Distribution centered:
- Grid dispatch
- Grid expansion
- Component centered:
- Energy Supply System Simulation (E3S)
- <<Benchmark Scenarios>>
- Dispatch Problem
- External Wind/Solar Power/Heat/Mobility Curves
- Energy supply expansion/reduction problem
- Expansion corridors and costs for Wind/Solar Power2Power kurz/mittel Power2Gas, Power2Heat Kurzzeit/Mittel/Lang
- Grid dispatch problem
- Developing a grid topology on a macroscopic level:
- Multilayerd
- consumers and producers on every level
- For example 3 levels:
- transmission(220kV/80bar)
- medium voltage(1-50kV, 10bar)
- distribution (400V/20mbar)
- So-B-T-B-C-B
C
B
PTr
So-B-T-B-C-B-C-B-Si /| RSo C
B
PTr
So-B-C-B-C-B-Si
- Developing a grid topology on a macroscopic level:
- Grid expansion problem
- Expansion corridors on the connector of each level.
- Maybe emulating gas grid/electrical grid
- Dispatch Problem
- Examplary Results using Oemof and PyPSA
- Evaluation
- Capabilities
- simple
- low computational profile (memory and cpu usage)
- comparable
- representative of the fundamental use case scenarios
- expandable
- Limits
- possibly non linear scalability
- not a definite answer on the usefullness when it comes to large and detailed analysis
- Capabilities
- Summary
- Outlook
Developing methods for comparing free open source energy supply system simulation software in the regard of computational efficiency
- Research
- What is an energy supply system simulation
- Foss tools like oemof and pypsa
- Existing computational evaluation parameters
- real time
- memory usage
- scalability
- parallelization capabilities (optional)
- Developing/Using methods for determining evaluation parameters
- Real time
- timeit
- python functionality evoking subprocesses
- implemented in tessif.analyse
- timeit
- Memory usage
- potentially complicated
- https://medium.com/survata-engineering-blog/monitoring-memory-usage-of-a-running-python-program-49f027e3d1ba
- implemented in tessif.analyse
- Scalability
- duplicating the exact same energy system N*T times within the same simulation to generate
- memomry usage
- simulation time
over N
- duplicating the exact same energy system N*T times within the same simulation to generate
- Parallelization capabilities (optional)
- Real time
- Programing
- Write the thesis (see Thesis Structure BAcc)
- Time measurement functionality
- Code Location:
tesisf.analyse.stop_time()
- Concept:
- Simulation is broken down into 6 steps that each are measured by timeit
- To stop time a timeit subprocess for each of the simulation steps is started
- timeit is executed for each of the breakdowns as a subprocess shell command
- the user can specify the timeit arugments using *kwargs
- the kwargs are parsed using shlex
- Simulation
- Read and parse tessif energy system data
tessif.parse.hdf5()
- Creates a tessif energy system
tessif.transform.mapping2es.tsf.transform()
- Transfroms energy system into requested model
- transform.es2es.MODEL.transform
- Executes Simulation
- tessif.simulate.MODEL_from_es
- Creates an AllResultier
- transform.es2mapping.MODEL.AllResultier
- Read and parse tessif energy system data
- Result
- Dictionairy like:
- ‘string key’: float (micro seconds) i.e:
{ 'reading': 17 'parsing': 12 'creation': 13 'transformation': 10 'simulation': 1239710923 'results': 123 }
- ‘string key’: float (micro seconds) i.e:
- Dictionairy like:
- Code Location:
- Code simulation time results plot
- Location:
- tessif.visualize.compare.stacked_bar()
- Concept:
- takes N results from tessif.analyse.stop_time() and create a bar plot with N stacked bars. One for each model
- Archieved by supplying 1 Set of a 2-length collection of a collection representing the measurement points. As in: [((1, 2, 3, 4, 5,))]
- Location:
- Implement 1) in tessif.analyze.Comparatier._generate_time_measurement_results() and check if 2) works well with tessif.analyze.Comparatier.bar_chart
- Code memory assessment functionality
- Location:
- tesisf.analyse._sacked_bar()
- Concept:
- Simulation is broken down into the 6 steps mentioned above
- tracemalloc is used to estimate memory usage NOTE: This might not be benificial, since the results are used further on, meaning memory usage might just increase with each of the breakdowns
- Location:
- Code memory usage results plot
- Location:
- tessif.visualize.compare.stacked_bar()
- Concept:
- if singular memory assessment is successful
- take the results from tessif.analyse.trace_memory() and create a stacked bar plot for each model
- else create a plain bar plot for each model
- if singular memory assessment is successful
- Location:
- Implement 4) in tessif.analyze.Comparatier._generate_memory_usage_results() and check if 5) works well with tessif.analyze.Comparatier.bar_chart
- Code the Scalability assessment functionality
- Location:
- tessif.analyse.assess_scalability()
- Goals
- Create a self-similar energy system that is solveable
- scaling is done in 2 dimensions:
- time T (increase in number of simulated timesteps)
- number of components N
- Concept:
- Create a self-similar energy system that is solveable
- Create an algorithm that creates N*T tessif energy systems with randomized transformer installed capacity and renewable source timeseries
- Perform tessif.analyse.stop_time() on each of the N*T energy systems
- Collect results for each of the N*T inspected energy systems
- Location:
- Code 2D scalability results plot
- Location:
- tessif.visualize.compare.scalability2D
- Concept:
- array of T curves plotting simulation time/memory over N
- Location:
- Code 3D scalability results plot
- Location:
- tessif.visualize.compare.scalability3D
- Concept:
- 3D field of (stacked) bar plots
- Location:
- Implement
- 7) in tessif.analyze.Comparatier._generate_scalability_results(),
- 8) in tessif.analyze.Comparatier.scalability_charts_2D
- 9) in tessif.analyze.Comparatier.scalability_charts_3D
- Use your code to generate results (tessif.examples.application.computational_resources.py)
- Utilizing the tessif.analyze.Comparatier class comparing Oemof und PyPSA
- Write Documentation (docs/api/examples/application/computational_resources.rst)
- Brief first words (similar to every other tessif module)
- Table of contents
- ..contents:: Contents
- Introduction (specific introduction part of thesis)
- Resource Comparison
- Time
- Memory
- Scalibity
- Introduction
- Several FOSS E3S tools no simple comparison
- Demand for computational comparison methods
- Theory
- Identifying possible evaluation parameters and their uses
- Simulation time
- Memory usage
- Scalability
- Developing algorithms for determining these using tessif
- Identifying possible differences and suited visualization aids for comparing
- timeit
- tracemalloc / resource …
- Duplication algorithm
- Identifying possible evaluation parameters and their uses
- Developing an energy supply system for testing the developed methods
- Examplary Comparison using Oemof and PyPSA
- Evaluation
- Limits of the implement assessment functionalities
- Summary
- Outlook
Developing methods for analyzing one dimensional timeseries data sets of free open source energy supply system simulation software in the context of model comparison implemented in python.
- Research
- What is an energy supply system simulation
- Foss tools like oemof and pypsa
- Existing visual component comparisions for more than 2 systems
- comparing more than 2 timeseries
- visualizing graph differences
- Existing timeseries comparisons of multiple timeseries measurements
- suited statistical
- Developing/Reusing/Modifying visual comparisions methods for more than 2 series
- Developing an algorithm for detecting load differences
- Develop a suitable test case (energy supply system simulation scenario)
- Programing
- Learning
- Very basics of python
- YouTube
- Blogs
- Library books
- Tessif
- Installation
- Documentation
- Examples
- Very basics of python
- Coding
- Code the developed algorithm
- Code the developed comparison charts in visualize.compare
- Use the comparison charts in examples.application.comparision.Comparatier
to create
- load differences
- results
- graph
- Creating the developed test case using excel
- Write your own script using the Comparatier class to compare oemof and pypsa for the example section in your thesis
- Learning
- Write the thesis (see Thesis Structure BAvc)
- Code load difference detecting algorithm
- location:
tessif.analyze.compare_N_timeseries
- goal:
- detecting all (value/timestamp) pairings of N different timeseries where the difference between a timeseries and the mean of all timeseries is greater then a certain threshold
- parameters
- timeseries
- threshold
- location:
- Code the developed charts using matplotlib
- location
visualize.compare.component_loads
- location
- Implement the difference calculation and chart plotting functions
- location
tessif.analyze.Comparatier.load_differences()
calling
tessif.analyze.Comparatier._generate_load_data_results()
tessif.analyze.Comparatier.load_diferences_chart()
- location
- Code statistical error calculations
- location:
tessif.analyze.statistically_compare_N_timeseries
- Errors
- RMSE
tessif.analyze._calculate_root_mean_square_error
- MAE
tessif.analyze._calculate_mean_absolute_error
- MBE
tessif.analyze._calculate_mean_biased_error
- subject to research
- RMSE
- location:
- Implement the statistical error calculations and chart plotting functions
- location:
tessif.analyze.Comparatier.statistical_load_difference_results()
calling
tessif.analyze.Comparatier._generate_statistical_load_data_results()
tessif.analyze.Comparatier.statistical_load_difference_chart
- location:
- Create an energy supply system simulation scenario for testing the algorithm and visiualization
- location:
tessif/examples/application/timeseries_comparison.py
- data format
- hdf5 or xlsx
- location:
- Use implementations to generate thesis results
- location
tessif.examples.application.timeseries_comparison.py
- location
- Write Documentation (
docs/api/examples/application/timeseries_comparison.rst
)- Introduction (probably even shorter than in thesis)
- Analyzed Energy System (your developed es, it’s characteristics and an nxgraph image)
- Structured Comparison
- time integrated results of all components
- Graph chart
- entire load data of key components
- Step bar plot of all timesteps
- singular differences of key components
- Step bar plot of certain timesteps
- statistical evaluation of key components
- Bar plot of error values and potentially more
- time integrated results of all components
- Introduction
- Several FOSS E3S tools no simple comparison
- Different potentially large networks with potentially very different flow characteristics = no simple comparisons and evaluations
- Demand for visually comprehensive comparison methods
- Theory
(Identifying possible differences and suited visualization aids for comparing)
- Data analysis of time integrated component results
- Graph chart visualizing:
- installed capacity as node size
- capacity factor as node fill size
- flow costs as edge length
- net energy flow as edge width
- flow emissions as edge grayscaling
- Values to calculate/define:
- installed capacity
- capacity specifying the solver constraints i.e::
- power plant net/gross
- storage net/gross
- …
- capacity specifying the solver constraints i.e::
- capacity factor
- total energy flow/installed capacity
- flow costs
- specific costs given by the user specifying solver constraints
- electricity generation costs
- ....
- specific costs given by the user specifying solver constraints
- net energy flow
- solver results
- flow emissions
- specific emissions given by the user specifying solver constraints
- electrcity generation emissions
- pipeline transport emissions (leackage as well as power generation related emsisions)
- specific emissions given by the user specifying solver constraints
- installed capacity
- Graph chart visualizing:
- Analysis of key component data temporally resolved in the order of singular time steps
- key component identification
- either manually by the engineer or (the current code template reflects this option)
- automatically by picking components with highest differences
- Statistical Analysis
- Identifying means for comparing N timeseries:
- Key question here is if it makes sense to calculate an average and compare each of the N series to their mean or if there is a better approach for comparing 2 to N series
- Statistical comparision to the average:
- Root Mean Square Error (RMSE)
- Mean Average Error (MAE)
- Mean Bias Error (MBE)
- further parameters for comparison (topic to research)
- Identifying means for comparing N timeseries:
- Step plot visualization
- 2D line (stepped line) visualizing load data for certain timesteps of one component of all models where the difference between any model’s load data and the current mean deviate more than a certain threshold
- key component identification
- Data analysis of time integrated component results
- Developing an energy supply system for testing the developed methods
- Characteristics it needs to fullfill: -
- Graph Chart
- Examplary Comparison using Oemof and PyPSA
- time integrated results of all components
- Graph chart
- entire load data of key components
- Step/bar plot of all timesteps
- singular differences of key components
- Step plot of certain timesteps
- statistical evaluation of key components
- Bar plot of error values and potentially more
- time integrated results of all components
- Evaluation
- Advantages over simply plotting all timeseries
- Limits of the developed algorithm and proper threshold choosing
- Summary
- Outlook
- Other statistical values of interest:
- Other more complicated/sophisticated visualization techniques of visiualizing timeserieses
- modified spider web diagram ?
- …