Skip to content
Snippets Groups Projects
Commit 076bbea5 authored by Wetterich, Philipp's avatar Wetterich, Philipp
Browse files

Update ausarbeitung.ipynb

parent 8fb8aa3a
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id:c9328cd1 tags: %% Cell type:markdown id:c9328cd1 tags:
# FAIRe Qualitäts-KPIs # FAIR Quality KPIs
Name: Name:
Datum: Datum:
%% Cell type:markdown id:2ee8746d tags: %% Cell type:markdown id:2ee8746d tags:
## Einführung ## Einführung
FAIRe Qualitäts-KPIs schaffen eine transparente und nachvollziehbare Entscheidungsgrundlage. In dieser Lerneinheit sollen sie die Methodik erlernen, indem sie LEGO-Autos zusammenbauen, deren Qualitäts-KPIs bestimmen und miteinander vergleichen. FAIR Quality KPIs schaffen eine transparente und nachvollziehbare Entscheidungsgrundlage. In dieser Lerneinheit sollen sie die Methodik erlernen, indem sie LEGO Autos zusammenbauen, deren Quality KPIs bestimmen und miteinander vergleichen.
### Werkzeug für den Zusammenbau ### Werkzeug für den Zusammenbau
Der Zusammenbau der Autos erfolgt virtuell. Als Werkzeug steht Ihnen das Modul `classes` zur Verfügung. In diesem sind unterschiedliche Klassen und Methoden implementiert (Objektorientierung). Sie erzeugen jeweils Objekte der Klassen. Ein Objekt ist dabei die virtuelle Abbildung eines realen Bauteiles. Die Eigenschaften des Bauteiles werden über die Eigenschaften des Objektes abgebildet. Der Zusammenbau der Autos erfolgt virtuell. Als Werkzeug steht Ihnen das Modul `classes` zur Verfügung. In diesem sind unterschiedliche Klassen und Methoden implementiert (Objektorientierung). Sie erzeugen jeweils Objekte der Klassen. Ein Objekt ist dabei die virtuelle Abbildung eines realen Bauteiles. Die Eigenschaften des Bauteiles werden über die Eigenschaften des Objektes abgebildet.
### Berechnung der Qualitäts-KPIs ### Berechnung der Quality KPIs
KPIs (Key Performance Indikatoren) sind Kenngrößen des Systems. Sie werden über Berechnungsvorschriften (`calculation_rules`) bestimmt. Diese Berechnungsvorschriften sind von Ihnen als python-Funktionen im Modul `calculation_results` zu implementieren. KPIs (Key Performance Indikatoren) sind Kenngrößen des Systems. Sie werden über Berechnungsvorschriften bestimmt. Diese Berechnungsvorschriften sind von Ihnen als python-Funktionen im Modul `calculation_rules` zu implementieren.
### Datenblätter ### Datenblätter
Für den Zusammenbau stehen Ihnen verschiedene Bauteile in unterschiedlichen Ausführungen zur Verfügung. Sie nutzen die Datenblätter, die als `json-Dateien` zur Verfügung gestellt werden, um Ihre Autos zusammenzubauen. Für den Zusammenbau stehen Ihnen verschiedene Bauteile in unterschiedlichen Ausführungen zur Verfügung. Sie nutzen die Datenblätter, die als `json-Dateien` zur Verfügung gestellt werden, um Ihre Autos zusammenzubauen.
%% Cell type:markdown id:1c702114 tags: %% Cell type:markdown id:1c702114 tags:
## Eigene Module und Minimalbeispiel ## Eigene Module und Minimalbeispiel
Für die Ausarbeitung nutzen wir zwei eigene Module (Python-Dateien), die im Ordner `functions` gespeichert sind. Für die Ausarbeitung nutzen wir zwei eigene Module (Python-Dateien), die im Ordner `functions` gespeichert sind.
Das Modul `calculation_rules` erweitern Sie während der Ausarbeitung. Um die Änderungen zu nutzen, müssen Sie das Notebook neu starten. Das Modul `calculation_rules` erweitern Sie während der Ausarbeitung. Um die Änderungen zu nutzen, müssen Sie das Notebook neu starten.
Im Modul `classes` befinden sich die komplette Klassen und Funktionen zur Verwendung. Im Modul `classes` befinden sich die komplette Klassen und Funktionen zur Verwendung.
Mit einem Minimalbeispiel wird Ihnen gezeigt, wie sie die Module nutzen. Mit einem Minimalbeispiel wird Ihnen gezeigt, wie sie die Module nutzen.
%% Cell type:markdown id:6d3310be tags: %% Cell type:markdown id:6d3310be tags:
### Modul classes ### Modul classes
Enthält `LegoComponent, LegoAssembly, AggregationLayer, KPIEncoder` und die Funktion `print_assembly_tree`. Enthält `LegoComponent, LegoAssembly, AggregationLayer, KPIEncoder` und die Funktion `print_assembly_tree`.
`LegoComponent` bildet einzelne Komponenten ab, während `LegoAssembly` zusammengesetzte Aggregationsebenen abdeckt, also Bauteil, Baugruppe und System. Zur Unterscheidung dient die Klasse Aggregationlayer, diese ist für `LegoComponent` immer `Component`, muss für `LegoAssembly` entsprechend auf `SYSTEM, ASSEMBLY` oder `SUBASSEMBLY` gesetzt werden. `LegoComponent` bildet einzelne Komponenten ab, während `LegoAssembly` zusammengesetzte Aggregationsebenen abdeckt, also Bauteil, Baugruppe und System. Zur Unterscheidung dient die Klasse Aggregationlayer, diese ist für `LegoComponent` immer `Component`, muss für `LegoAssembly` entsprechend auf `SYSTEM, ASSEMBLY` oder `SUBASSEMBLY` gesetzt werden.
Wir bauen aus Achse, Rahmen und Reifen einen Tretroller zusammen. Wir bauen aus Achse, Rahmen und Reifen einen Tretroller zusammen.
%% Cell type:code id:b2778dee tags: %% Cell type:code id:b2778dee tags:
``` python ``` python
# import modules # import modules
import json import json
import pprint import pprint
from functions import calculation_rules from functions import calculation_rules
# Importing all modules one by one to provide an overview # Importing all modules one by one to provide an overview
# The next commented line would provide the same result in one line # The next commented line would provide the same result in one line
# from functions.classes import * # from functions.classes import *
from functions.classes import LegoComponent from functions.classes import LegoComponent
from functions.classes import LegoAssembly from functions.classes import LegoAssembly
from functions.classes import AggregationLayer from functions.classes import AggregationLayer
from functions.classes import KPIEncoder from functions.classes import KPIEncoder
from functions.classes import print_assembly_tree from functions.classes import print_assembly_tree
# When you are writing code yourself later, you might want to copy # When you are writing code yourself later, you might want to copy
# these imports to avoid rerunning the full notebook after restart # these imports to avoid rerunning the full notebook after restart
``` ```
%% Cell type:code id:0b1f9aff tags: %% Cell type:code id:0b1f9aff tags:
``` python ``` python
# Create the wheels and axles as single components first # Create the wheels and axles as single components first
# Look up the specific item you want from the provided json files, # Look up the specific item you want from the provided json files,
# we can load the full file into a dict # we can load the full file into a dict
with open("datasheets/axles.json") as json_file: with open("datasheets/axles.json") as json_file:
axles = json.load(json_file) axles = json.load(json_file)
# Pick a specific axle via its 'item number' # Pick a specific axle via its 'item number'
print(axles["32073"]) print(axles["32073"])
# Create the component with the dict: # Create the component with the dict:
front_axle = LegoComponent("front axle", axles["32073"]) front_axle = LegoComponent("front axle", axles["32073"])
# Both label and the data dict are optional parameters. # Both label and the data dict are optional parameters.
# You can view, add or edit the properties just any dict: # You can view, add or edit the properties just any dict:
print(front_axle.properties["label"]) print(front_axle.properties["label"])
front_axle.properties["color"] = "grey" front_axle.properties["color"] = "grey"
# Create the second axle # Create the second axle
back_axle = LegoComponent() back_axle = LegoComponent()
back_axle.properties["label"] = "back axle" back_axle.properties["label"] = "back axle"
back_axle.properties.update(axles["32073"]) back_axle.properties.update(axles["32073"])
# Do not use = here, otherwise you'd overwrite existing properties. # Do not use = here, otherwise you'd overwrite existing properties.
# Instead use update to have all entries added to properties # Instead use update to have all entries added to properties
back_axle.properties["color"] = "grey" back_axle.properties["color"] = "grey"
# Viewing dicts in one line is not easy to read, # Viewing dicts in one line is not easy to read,
# a better output comes with pretty print (pprint): # a better output comes with pretty print (pprint):
pprint.pprint(back_axle.properties) pprint.pprint(back_axle.properties)
``` ```
%% Cell type:code id:b4a8e8c8 tags: %% Cell type:code id:b4a8e8c8 tags:
``` python ``` python
# Now wheels # Now wheels
with open("datasheets/wheels.json") as json_file: with open("datasheets/wheels.json") as json_file:
wheels = json.load(json_file) wheels = json.load(json_file)
# Adding the color here already as dict, and the surface as key-value argument. # Adding the color here already as dict, and the surface as key-value argument.
# Multiple of both parameters are supported, but only in this order. # Multiple of both parameters are supported, but only in this order.
# front_wheel = LegoComponent( # front_wheel = LegoComponent(
# 'front wheel', wheels['2903'], {'color':'yellow'},winter='true') # 'front wheel', wheels['2903'], {'color':'yellow'},winter='true')
front_wheel = LegoComponent( front_wheel = LegoComponent(
"front wheel", wheels["2903"], surface="rough", paint="glossy" "front wheel", wheels["2903"], surface="rough", paint="glossy"
) )
pprint.pprint(front_wheel.properties) pprint.pprint(front_wheel.properties)
# We included a clone function to both Lego classes, so you can easily # We included a clone function to both Lego classes, so you can easily
# create duplicate objects. Passing the new label is optional # create duplicate objects. Passing the new label is optional
back_wheel = front_wheel.clone("back wheel") back_wheel = front_wheel.clone("back wheel")
``` ```
%% Cell type:code id:25bd06c5 tags: %% Cell type:code id:25bd06c5 tags:
``` python ``` python
# Create subassemblies and add the wheels and axles # Create subassemblies and add the wheels and axles
# The AggregationLayer must be used, passing the label # The AggregationLayer must be used, passing the label
# or additional properties is optional # or additional properties is optional
front_wheel_assembly = LegoAssembly( front_wheel_assembly = LegoAssembly(
AggregationLayer.SUBASSEMBLY, AggregationLayer.SUBASSEMBLY,
"front wheel assembly", "front wheel assembly",
assembly_method="stick together like lego blocks", assembly_method="stick together like lego blocks",
) )
# Add LegoComponents to the LegoAssembly, single or as list # Add LegoComponents to the LegoAssembly, single or as list
front_wheel_assembly.add([front_wheel, front_axle]) front_wheel_assembly.add([front_wheel, front_axle])
# You can access the components of an assembly like this: # You can access the components of an assembly like this:
print(front_wheel_assembly.components[1].properties["label"]) print(front_wheel_assembly.components[1].properties["label"])
# Assemblies can be cloned as well (including their children), # Assemblies can be cloned as well (including their children),
# but don't forget to adjust labels or you might be stuck with # but don't forget to adjust labels or you might be stuck with
# a 'front wheel' in your 'back wheel assembly' # a 'front wheel' in your 'back wheel assembly'
# Stick together back wheel parts # Stick together back wheel parts
back_wheel_assembly = LegoAssembly( back_wheel_assembly = LegoAssembly(
AggregationLayer.SUBASSEMBLY, "back wheel assembly" AggregationLayer.SUBASSEMBLY, "back wheel assembly"
) )
back_wheel_assembly.add([back_wheel, back_axle]) back_wheel_assembly.add([back_wheel, back_axle])
``` ```
%% Cell type:code id:2b6648e1 tags: %% Cell type:code id:2b6648e1 tags:
``` python ``` python
# Create frame component and assemble the system # Create frame component and assemble the system
with open("datasheets/frame.json") as json_file: with open("datasheets/frame.json") as json_file:
frame = json.load(json_file) frame = json.load(json_file)
scooter_frame = LegoComponent("scooter frame", frame["3702"], {"color": "red"}) scooter_frame = LegoComponent("scooter frame", frame["3702"], {"color": "red"})
# The scooter is our system level assembly, you can choose the AggregationLayer # The scooter is our system level assembly, you can choose the AggregationLayer
# But the hiercarchy (SYSTEM > ASSEMBLY > SUBASSEMBLY) must be in order. # But the hiercarchy (SYSTEM > ASSEMBLY > SUBASSEMBLY) must be in order.
# Components can be added to all LegoAssembly objects # Components can be added to all LegoAssembly objects
scooter = LegoAssembly( scooter = LegoAssembly(
AggregationLayer.SYSTEM, AggregationLayer.SYSTEM,
"scooter", "scooter",
manufacturer="FST", manufacturer="FST",
comment="Faster! Harder! Scooter!", comment="Faster! Harder! Scooter!",
) )
# add frame and subassemblies # add frame and subassemblies
scooter.add([scooter_frame, front_wheel_assembly, back_wheel_assembly]) scooter.add([scooter_frame, front_wheel_assembly, back_wheel_assembly])
``` ```
%% Cell type:code id:71324895 tags: %% Cell type:code id:71324895 tags:
``` python ``` python
# Look at the assembly # Look at the assembly
# We can get all LegoComponents from this assembly. # We can get all LegoComponents from this assembly.
# Without parameter 'max_depth' only direct children will be listed. # Without parameter 'max_depth' only direct children will be listed.
scooter.get_component_list(5) scooter.get_component_list(5)
``` ```
%% Cell type:markdown id:001f1c77 tags: %% Cell type:markdown id:001f1c77 tags:
### Modul calculation_rules ### Modul calculation_rules
Um für unser System "Tretroller" ein KPI für das Gesamtgewicht zu erzeugen, wurde in `functions.calculation_rules` die Funktion `kpi_sum` definiert. Zusammen mit den Hilfsfunktionen der Klasse können wir nun das KPI Gewicht für das System hinzufügen. Die Massen der einzelnen Komponenten sind in den Datenblättern unter `mass [g]` enthalten. Um für unser System "Tretroller" ein KPI für das Gesamtgewicht zu erzeugen, wurde in `functions.calculation_rules` die Funktion `kpi_sum` definiert. Zusammen mit den Hilfsfunktionen der Klasse können wir nun das KPI Gewicht für das System hinzufügen. Die Massen der einzelnen Komponenten sind in den Datenblättern unter `mass [g]` enthalten.
%% Cell type:code id:7b60d0fb tags: %% Cell type:code id:7b60d0fb tags:
``` python ``` python
# test the import # test the import
calculation_rules.test_function() calculation_rules.test_function()
``` ```
%% Cell type:code id:fe4edad6 tags: %% Cell type:code id:fe4edad6 tags:
``` python ``` python
# Add mass to assemblies # Add mass to assemblies
# List all components' mass # List all components' mass
combined_weight = 0 combined_weight = 0
for c in scooter.get_component_list(-1): for c in scooter.get_component_list(-1):
combined_weight += c.properties["mass [g]"] combined_weight += c.properties["mass [g]"]
print("Gesamtgewicht: ", combined_weight, "g") print("Gesamtgewicht: ", combined_weight, "g")
# Add KPI to system # Add KPI to system
scooter.properties["mass [g]"] = combined_weight scooter.properties["mass [g]"] = combined_weight
# We can also add the mass to the subassemblies. # We can also add the mass to the subassemblies.
# children() returns a dict with a list of added # children() returns a dict with a list of added
# components and assemblies. # components and assemblies.
for a in scooter.children()["assemblies"]: for a in scooter.children()["assemblies"]:
a_mass = 0 a_mass = 0
for c in a.get_component_list(-1): for c in a.get_component_list(-1):
a_mass += c.properties["mass [g]"] a_mass += c.properties["mass [g]"]
a.properties["mass [g]"] = a_mass a.properties["mass [g]"] = a_mass
``` ```
%% Cell type:code id:c26b36c8 tags: %% Cell type:code id:c26b36c8 tags:
``` python ``` python
scooter.get_component_list(-1) scooter.get_component_list(-1)
``` ```
%% Cell type:code id:4d56419f tags: %% Cell type:code id:4d56419f tags:
``` python ``` python
# Look at the full assembly with KPI # Look at the full assembly with KPI
# Print the full assembly with all levels # Print the full assembly with all levels
print_assembly_tree(scooter) print_assembly_tree(scooter)
``` ```
%% Cell type:code id:b31416d3 tags: %% Cell type:code id:b31416d3 tags:
``` python ``` python
# Dump to json file with to_dict() and KPIEncoder # Dump to json file with to_dict() and KPIEncoder
with open("scooter.json", "w") as fp: with open("scooter.json", "w") as fp:
json.dump(scooter.to_dict(), fp, cls=KPIEncoder) json.dump(scooter.to_dict(), fp, cls=KPIEncoder)
# full view is too big for Juypter (try it) # full view is too big for Juypter (try it)
# pprint.pprint(scooter.to_dict()) # pprint.pprint(scooter.to_dict())
``` ```
%% Cell type:markdown id:53793ae8 tags: %% Cell type:markdown id:53793ae8 tags:
In dieser exportierten json-Datei ('scooter.json') sind die Werte maschinen- und menschenlesbar hinterlegt. In dieser exportierten json-Datei ('scooter.json') sind die Werte maschinen- und menschenlesbar hinterlegt.
Zusammen mit der Berechnungsvorschrift in `calculation_rules` ist auch die Entstehung des KPI nachvollziehbar und wiederverwendbar dokumentiert und damit 'FAIR'. Zusammen mit der Berechnungsvorschrift in `calculation_rules` ist auch die Entstehung des KPI nachvollziehbar und wiederverwendbar dokumentiert und damit 'FAIR'.
%% Cell type:markdown id:92c77051 tags: %% Cell type:markdown id:92c77051 tags:
#### Zusätzliche Details #### Zusätzliche Details
%% Cell type:code id:b91fed73 tags: %% Cell type:code id:b91fed73 tags:
``` python ``` python
# Each child knows its parent # Each child knows its parent
first_child = scooter.children()["assemblies"][0] first_child = scooter.children()["assemblies"][0]
print("Child:", first_child) print("Child:", first_child)
print("Parent:", first_child.parent) print("Parent:", first_child.parent)
# Also we can access the "top" parent # Also we can access the "top" parent
latest_child = first_child.children()["components"][0] latest_child = first_child.children()["components"][0]
print("Top parent: ", latest_child.get_root_assembly()) print("Top parent: ", latest_child.get_root_assembly())
# Each part created has a unique identifier (the long number in []) # Each part created has a unique identifier (the long number in [])
# Don't try add the identical part again. # Don't try add the identical part again.
``` ```
%% Cell type:markdown id:de070039 tags: %% Cell type:markdown id:de070039 tags:
## Aufgabe: Aufbau eines ersten Fahrzeugs ## Aufgabe: Aufbau eines ersten Fahrzeugs
Bauen Sie ein erstes Fahrzeug aus den gegebenen LEGO-Teilen auf. Bauen Sie ein erstes Fahrzeug aus den gegebenen LEGO-Teilen auf.
Das Fahrzeug muss aus Baugruppen, Bauteilen und Komponenten bestehen. Es muss mindestens vier Räder haben und sich durch den elektrischen Antrieb fortbewegen können. Das Fahrzeug muss aus Baugruppen, Bauteilen und Komponenten bestehen. Es muss mindestens vier Räder haben und sich durch den elektrischen Antrieb fortbewegen können.
%% Cell type:markdown id:05a8eb21 tags: %% Cell type:markdown id:05a8eb21 tags:
### Beschreibung des Fahrzeuges ### Beschreibung des Fahrzeuges
Beschreiben Sie kurz und präzise Ihr Fahrzeug. Beschreiben Sie kurz und präzise Ihr Fahrzeug.
%% Cell type:code id:ccaf3043 tags: %% Cell type:code id:ccaf3043 tags:
``` python ``` python
# initialize componentens # initialize componentens
``` ```
%% Cell type:code id:1ea61422 tags: %% Cell type:code id:1ea61422 tags:
``` python ``` python
# read out properties from datasheets # read out properties from datasheets
``` ```
%% Cell type:code id:36f981df tags: %% Cell type:code id:36f981df tags:
``` python ``` python
# set properties # set properties
``` ```
%% Cell type:code id:24400d94 tags: %% Cell type:code id:24400d94 tags:
``` python ``` python
# export car and its properties # export car and its properties
``` ```
%% Cell type:markdown id:c1fef7f0 tags: %% Cell type:markdown id:c1fef7f0 tags:
## Aufgabe: Bestimmung der Qualität mittels KPIs ## Aufgabe: Bestimmung der Qualität mittels KPIs
Bestimmen Sie die Qualität Ihres Fahrzeugs mittels KPIs. Bestimmen Sie die Qualität Ihres Fahrzeugs mittels KPIs.
Die Qualität des Fahrzeugs ist mit mindestens einem KPI je Qualitätsdimension (Aufwand, Verfügbarkeit, Akzeptanz) zu bestimmen. Enwickeln Sie zunächst sinnvolle KPIs, welche mit den gegebenen Daten umsetzbar sind. Halten Sie die Berechnungsvorschriften im Jupyter Notebook fest. Implementieren Sie deren Berechnung für das Gesamtsystem "Fahrzeug" mittels einzelner Funktionen im Skript `calculation_rules`. Sie können zusätzlich Ihre Methoden auch auf die niedrigeren Aggregationsebenen anwenden. Die Qualität des Fahrzeugs ist mit mindestens einem KPI je Qualitätsdimension (Aufwand, Verfügbarkeit, Akzeptanz) zu bestimmen. Enwickeln Sie zunächst sinnvolle KPIs, welche mit den gegebenen Daten umsetzbar sind. Halten Sie die Berechnungsvorschriften im Jupyter Notebook fest. Implementieren Sie deren Berechnung für das Gesamtsystem "Fahrzeug" mittels einzelner Funktionen im Skript `calculation_rules`. Sie können zusätzlich Ihre Methoden auch auf die niedrigeren Aggregationsebenen anwenden.
%% Cell type:markdown id:d5f02096 tags: %% Cell type:markdown id:d5f02096 tags:
### Beschreibung KPI ### Beschreibung KPI
Beschreiben Sie den jeweiligen KPI und geben Sie seine Berechnungsvorschrift an. Beschreiben Sie den jeweiligen KPI und geben Sie seine Berechnungsvorschrift an.
$$ $$
a = \frac{b}{c} + d a = \frac{b}{c} + d
$$ $$
%% Cell type:code id:59eabafc tags: %% Cell type:code id:59eabafc tags:
``` python ``` python
# calculate the KPIs for your car # calculate the KPIs for your car
``` ```
%% Cell type:code id:c774b381 tags: %% Cell type:code id:c774b381 tags:
``` python ``` python
# print your KPIs # print your KPIs
``` ```
%% Cell type:markdown id:89c75440 tags: %% Cell type:markdown id:89c75440 tags:
## Aufgabe: Aufbau eines zweiten Fahrzeugs ## Aufgabe: Aufbau eines zweiten Fahrzeugs
Setzen Sie sich ein Ziel, welche Qualitätsdimensionen in einem zweiten Fahrzeug verbessert werden sollen und bauen Sie dementsprechend ein zweites Fahrzeug aus den gegebenen LEGO-Teilen auf. Setzen Sie sich ein Ziel, welche Qualitätsdimensionen in einem zweiten Fahrzeug verbessert werden sollen und bauen Sie dementsprechend ein zweites Fahrzeug aus den gegebenen LEGO-Teilen auf.
Das Fahrzeug muss aus Baugruppen, Bauteilen und Komponenten bestehen. Es muss mindestens vier Räder haben und sich durch den elektrischen Antrieb fortbewegen können. Die Verwendung eines Getriebes zwischen Motor und Antriebsachse(n) ist verpflichtend. Es sind nur die gegebenen LEGO-Teile zu verwenden. Das Fahrzeug muss aus Baugruppen, Bauteilen und Komponenten bestehen. Es muss mindestens vier Räder haben und sich durch den elektrischen Antrieb fortbewegen können. Die Verwendung eines Getriebes zwischen Motor und Antriebsachse(n) ist verpflichtend. Es sind nur die gegebenen LEGO-Teile zu verwenden.
%% Cell type:markdown id:3cef0828 tags: %% Cell type:markdown id:3cef0828 tags:
### Beschreibung ### Beschreibung
Beschreiben Sie, welche Verbesserung Sie vornehmen. Beschreiben Sie, welche Verbesserung Sie vornehmen.
... ...
%% Cell type:markdown id:73c454f2 tags: %% Cell type:markdown id:73c454f2 tags:
### Aufbau des zweiten Fahrzeuges ### Aufbau des zweiten Fahrzeuges
Beschreiben Sie kurz und präzise den Aufbau des zweiten Fahrzeugs Beschreiben Sie kurz und präzise den Aufbau des zweiten Fahrzeugs
%% Cell type:code id:ea18e735 tags: %% Cell type:code id:ea18e735 tags:
``` python ``` python
# build a second car # build a second car
``` ```
%% Cell type:code id:b3438fc4 tags: %% Cell type:code id:b3438fc4 tags:
``` python ``` python
# read out properties from datasheets # read out properties from datasheets
``` ```
%% Cell type:code id:0b7336fb tags: %% Cell type:code id:0b7336fb tags:
``` python ``` python
# set properties # set properties
``` ```
%% Cell type:code id:446abbca tags: %% Cell type:code id:446abbca tags:
``` python ``` python
# export car and its properties # export car and its properties
``` ```
%% Cell type:markdown id:89e54480 tags: %% Cell type:markdown id:89e54480 tags:
### KPIs des zweiten Fahrzeuges ### KPIs des zweiten Fahrzeuges
Bestimmen Sie die KPIs des zweiten Fahrzeuges Bestimmen Sie die KPIs des zweiten Fahrzeuges
%% Cell type:code id:762a1e93 tags: %% Cell type:code id:762a1e93 tags:
``` python ``` python
# calculate the KPIs for your car # calculate the KPIs for your car
``` ```
%% Cell type:code id:1ed67328 tags: %% Cell type:code id:1ed67328 tags:
``` python ``` python
# print your KPIs # print your KPIs
``` ```
%% Cell type:markdown id:e413cd84 tags: %% Cell type:markdown id:e413cd84 tags:
## Aufgabe: Darstellung und Vergleich der Ergebnisse ## Aufgabe: Darstellung und Vergleich der Ergebnisse
Stellen Sie die Ergebnisse für beide Fahrzeuge übersichtlich dar. Stellen Sie die Ergebnisse für beide Fahrzeuge übersichtlich dar.
Die entwickelten KPIs müssen dargestellt und die Datengrundlage ersichtlich sein. Die entwickelten KPIs müssen dargestellt und die Datengrundlage ersichtlich sein.
Eine geeignete grafische Darstellung für die Gegenüberstellung der Ergebnisse für beide Fahrzeuge ist zu wählen. Eine geeignete grafische Darstellung für die Gegenüberstellung der Ergebnisse für beide Fahrzeuge ist zu wählen.
%% Cell type:code id:b0f93e22 tags: %% Cell type:code id:b0f93e22 tags:
``` python ``` python
# plot the data, save diagramm as svg-file # plot the data, save diagramm as svg-file
``` ```
%% Cell type:markdown id:62ff04b2 tags: %% Cell type:markdown id:62ff04b2 tags:
### Interpretation der Ergebnisse ### Interpretation der Ergebnisse
Interpretieren Sie ihre Ergebnisse. Vergleichen Sie die KPIs ihrer Autos. Konnten Sie ihre gewünschte Verbesserung erzielen? Interpretieren Sie ihre Ergebnisse. Vergleichen Sie die KPIs ihrer Autos. Konnten Sie ihre gewünschte Verbesserung erzielen?
%% Cell type:markdown id:a0840fbf tags: %% Cell type:markdown id:a0840fbf tags:
## Aufgabe: Exportieren Sie ihre Daten ## Aufgabe: Exportieren Sie ihre Daten
Exportieren/ Speichern Sie alle relevaten Daten ab. Exportieren/ Speichern Sie alle relevaten Daten ab.
%% Cell type:code id:a4bdfc7a tags: %% Cell type:code id:a4bdfc7a tags:
``` python ``` python
# export all relevant data # export all relevant data
``` ```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment