From 8ab718162ce82f269913bcbfca620bf47b4284e0 Mon Sep 17 00:00:00 2001 From: Rivera Andres <andres.rivera@stud.tu-darmstadt.de> Date: Tue, 29 Oct 2024 22:45:35 +0000 Subject: [PATCH] Ich habe alle Datasheets geoffnet --- ausarbeitung.ipynb | 171 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 152 insertions(+), 19 deletions(-) diff --git a/ausarbeitung.ipynb b/ausarbeitung.ipynb index 690244d..7a74ab8 100644 --- a/ausarbeitung.ipynb +++ b/ausarbeitung.ipynb @@ -23,7 +23,9 @@ "cell_type": "markdown", "id": "14e306b5", "metadata": {}, - "source": [] + "source": [ + "Mit welchen Konfigurationen lässt sich die Qualität eines Elektrofahrzeugs in Bezug auf Aufwand, Verfügbarkeit und Akzeptanz optimieren?" + ] }, { "cell_type": "markdown", @@ -46,7 +48,9 @@ "cell_type": "markdown", "id": "30ddd8dc", "metadata": {}, - "source": [] + "source": [ + "Bestimmen Sie, wie sich verschiedene Elemente des Fahrzeugs (z. B. das Antriebssystem und die Art der Teile) auf die Qualitäts-KPIs auswirken, um das Design in zukünftigen Iterationen zu optimieren." + ] }, { "cell_type": "markdown", @@ -126,7 +130,60 @@ "metadata": {}, "outputs": [], "source": [ - "# initialize components" + "# initialize components\n", + "\n", + "with open(\"datasheets/axles.json\") as json_file:\n", + " axles_data = json.load(json_file)\n", + "with open(\"datasheets/motors.json\") as json_file:\n", + " motors_data = json.load(json_file)\n", + "with open(\"datasheets/gears.json\") as json_file:\n", + " gears_data = json.load(json_file)\n", + "with open(\"datasheets/batteries.json\") as json_file:\n", + " batteries_data = json.load(json_file)\n", + "with open(\"datasheets/frame.json\") as json_file:\n", + " frame_data = json.load(json_file)\n", + "with open(\"datasheets/tires.json\") as json_file:\n", + " tires_data = json.load(json_file)\n", + "with open(\"datasheets/rims.json\") as json_file:\n", + " rims_data = json.load(json_file)\n", + "\n", + "battery = LegoComponent(\"battery\", batteries_data[\"8881-1\"])\n", + "\n", + "green_base = LegoComponent(\"green base\", frame_data[\"39790\"])\n", + "\n", + "motor = LegoComponent(\"Motor\", motors_data[\"8883-1\"])\n", + "\n", + "axle_input = LegoComponent(\"axle input\", axles_data[\"32073\"])\n", + "\n", + "gear_1 = LegoComponent(\"gear 1\", gears_data[\"6589\"])\n", + "gear_2 = gear_1.clone(\"gear 2\")\n", + "\n", + "axle_side_1 = LegoComponent(\"axle side 1\", axles_data[\"50451\"])\n", + "axles=[axle_side_1]\n", + "for i in range (2,4):\n", + " cloned_axle=axle_side_1.clone(f\"axle_side_{i}\")\n", + " axles.append(cloned_axle)\n", + "\n", + "tire_1 = LegoComponent(\"tire 1\", tires_data[\"30699\"])\n", + "tires=[tire_1]\n", + "for i in range (2,5):\n", + " cloned_tire=tire_1.clone(f\"tire_{i}\")\n", + " tires.append(cloned_tire)\n", + "\n", + "rim_1 = LegoComponent(\"rim 1\", rims_data[\"56904\"])\n", + "rims=[rim_1]\n", + "for i in range (2,5):\n", + " cloned_rim=rim_1.clone(f\"rim_{i}\")\n", + " rims.append(cloned_rim)\n", + "\n", + "technic_bush_1 = LegoComponent(\"technic bush 1\", frame_data[\"32123\"])\n", + "technich_bushes=[technic_bush_1]\n", + "for i in range (2,7):\n", + " cloned_technich_bush=technic_bush_1.clone(f\"technic_bush_{i}\")\n", + " technich_bushes.append(cloned_technich_bush)\n", + "\n", + "\n", + "\n" ] }, { @@ -144,9 +201,50 @@ "execution_count": 4, "id": "da2d141c", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[LegoComponent(label='green base', **{'item number': 39790, 'item description': 'Technic, Liftarm, Modified Frame Thick 11 x 15 Open Center', 'category': 'frame', 'price [Euro]': 2.19, 'mass [g]': 12.96, 'environmental impact [kg CO2e /kg]': 11.93, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=39790', 'dimension [studs]': '11 x 15 x 1'})]\n", + "[LegoComponent(label='green base', **{'item number': 39790, 'item description': 'Technic, Liftarm, Modified Frame Thick 11 x 15 Open Center', 'category': 'frame', 'price [Euro]': 2.19, 'mass [g]': 12.96, 'environmental impact [kg CO2e /kg]': 11.93, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=39790', 'dimension [studs]': '11 x 15 x 1'}), LegoComponent(label='axle side 1', **{'item number': 50451, 'item description': 'Axle 16 studs', 'category': 'axle', 'price [Euro]': 0.75, 'mass [g]': 2.37, 'environmental impact [kg CO2e /kg]': 11.03, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=50451', 'dimension [studs]': 16}), LegoComponent(label='rim 1', **{'item number': 56904, 'item description': 'Wheel 30mm D. x 14mm', 'category': 'rim', 'related items': 30699, 'diameter [mm]': 30.0, 'price [Euro]': 0.01, 'mass [g]': 4.1, 'environmental impact [kg CO2e /kg]': 32.06, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=56904'}), LegoComponent(label='tire 1', **{'item number': 30699, 'item description': 'Tire 43.2 x 14 Solid', 'category': 'tire', 'related items': 56904, 'inner diameter [mm]': 30, 'outer diameter [mm]': 43.2, 'price [Euro]': 0.06, 'mass [g]': 8.25, 'environmental impact [kg CO2e /kg]': 8.97, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=30699'}), LegoComponent(label='rim_2', **{'item number': 56904, 'item description': 'Wheel 30mm D. x 14mm', 'category': 'rim', 'related items': 30699, 'diameter [mm]': 30.0, 'price [Euro]': 0.01, 'mass [g]': 4.1, 'environmental impact [kg CO2e /kg]': 32.06, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=56904'}), LegoComponent(label='tire_2', **{'item number': 30699, 'item description': 'Tire 43.2 x 14 Solid', 'category': 'tire', 'related items': 56904, 'inner diameter [mm]': 30, 'outer diameter [mm]': 43.2, 'price [Euro]': 0.06, 'mass [g]': 8.25, 'environmental impact [kg CO2e /kg]': 8.97, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=30699'}), LegoComponent(label='technic bush 1', **{'item number': 32123, 'item description': 'Technic Bush 1/2 Smooth', 'category': 'frame', 'price [Euro]': 0.01, 'mass [g]': 0.01, 'environmental impact [kg CO2e /kg]': 11.93, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=4265c', 'dimension [studs]': 1}), LegoComponent(label='axle_side_3', **{'item number': 50451, 'item description': 'Axle 16 studs', 'category': 'axle', 'price [Euro]': 0.75, 'mass [g]': 2.37, 'environmental impact [kg CO2e /kg]': 11.03, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=50451', 'dimension [studs]': 16}), LegoComponent(label='technic_bush_2', **{'item number': 32123, 'item description': 'Technic Bush 1/2 Smooth', 'category': 'frame', 'price [Euro]': 0.01, 'mass [g]': 0.01, 'environmental impact [kg CO2e /kg]': 11.93, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=4265c', 'dimension [studs]': 1}), LegoComponent(label='axle_side_2', **{'item number': 50451, 'item description': 'Axle 16 studs', 'category': 'axle', 'price [Euro]': 0.75, 'mass [g]': 2.37, 'environmental impact [kg CO2e /kg]': 11.03, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=50451', 'dimension [studs]': 16}), LegoComponent(label='rim_3', **{'item number': 56904, 'item description': 'Wheel 30mm D. x 14mm', 'category': 'rim', 'related items': 30699, 'diameter [mm]': 30.0, 'price [Euro]': 0.01, 'mass [g]': 4.1, 'environmental impact [kg CO2e /kg]': 32.06, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=56904'}), LegoComponent(label='tire_3', **{'item number': 30699, 'item description': 'Tire 43.2 x 14 Solid', 'category': 'tire', 'related items': 56904, 'inner diameter [mm]': 30, 'outer diameter [mm]': 43.2, 'price [Euro]': 0.06, 'mass [g]': 8.25, 'environmental impact [kg CO2e /kg]': 8.97, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=30699'}), LegoComponent(label='rim_4', **{'item number': 56904, 'item description': 'Wheel 30mm D. x 14mm', 'category': 'rim', 'related items': 30699, 'diameter [mm]': 30.0, 'price [Euro]': 0.01, 'mass [g]': 4.1, 'environmental impact [kg CO2e /kg]': 32.06, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=56904'}), LegoComponent(label='tire_4', **{'item number': 30699, 'item description': 'Tire 43.2 x 14 Solid', 'category': 'tire', 'related items': 56904, 'inner diameter [mm]': 30, 'outer diameter [mm]': 43.2, 'price [Euro]': 0.06, 'mass [g]': 8.25, 'environmental impact [kg CO2e /kg]': 8.97, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=30699'}), LegoComponent(label='axle input', **{'item number': 32073, 'item description': 'Axle 5 studs', 'category': 'axle', 'price [Euro]': 0.001, 'mass [g]': 0.66, 'environmental impact [kg CO2e /kg]': 11.03, 'delivery time [days]': 3, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?P=32073', 'dimension [studs]': 5}), LegoComponent(label='Motor', **{'item number': '8883-1', 'item description': 'Power Functions M-Motor', 'category': 'motor', 'related items': '8881-1', 'idle current [mA]': 65, 'idle speed [rev per min]': 405, 'locking torque [Ncm]': 11, 'price [Euro]': 20, 'mass [g]': 35.0, 'environmental impact [kg CO2e /kg]': 15.84, 'delivery time [days]': 5, 'data source': 'https://www.bricklink.com/v2/catalog/catalogitem.page?S=8883-1', 'input voltage [V]': 9, 'dimensions [cm]': '13.8 x 11.9 x 2.3'})]\n" + ] + } + ], "source": [ - "# aggregate components" + "# aggregate components\n", + "\n", + "#wheel_1=LegoAssembly(AggregationLayer.SUBASSEMBLY, \"wheel 1\", assembly_method=\"join lego blocks\")\n", + "#wheel_1.add([rim_1,tire_1])\n", + "\n", + "wheels = []\n", + "\n", + "for i in range(4):\n", + " wheel = LegoAssembly(AggregationLayer.SUBASSEMBLY, f\"wheel_{i+1}\", assembly_method=\"join lego blocks\")\n", + " wheel.add([rims[i], tires[i]])\n", + " wheels.append(wheel)\n", + "\n", + "forefront_axle= LegoAssembly(AggregationLayer.ASSEMBLY, \"forefront axle\")\n", + "forefront_axle.add([wheels[0], axle_side_1, wheels[1]])\n", + "\n", + "mid_axle=LegoAssembly(AggregationLayer.ASSEMBLY, \"mid axle\")\n", + "mid_axle.add([technich_bushes[0], axles[2], technich_bushes[1]])\n", + "\n", + "tail_axle= LegoAssembly(AggregationLayer.ASSEMBLY, \"tail axle\")\n", + "tail_axle.add([wheels[2], axles[1], wheels[3]])\n", + "\n", + "drive_shaft=LegoAssembly(AggregationLayer.SUBASSEMBLY, \"driven shaft\")\n", + "drive_shaft.add([axle_input,motor])\n", + "\n", + "\n", + "\n", + "\n", + "auto=LegoAssembly(AggregationLayer.SYSTEM,\"auto\", manufacturer=\"LEGO\", comment=\"Speed of light\",)\n", + "auto.add([green_base,forefront_axle,mid_axle,tail_axle,drive_shaft])\n", + "\n", + "print(auto.get_component_list(max_depth=0))\n", + "# If it is set to -1 (default), all LegoComponents are listed:\n", + "print(auto.get_component_list())" ] }, { @@ -203,19 +301,54 @@ "execution_count": 5, "id": "59eabafc", "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You called the test function.\n" + ] + }, + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for /: 'str' and 'float'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 7\u001b[0m\n\u001b[1;32m 5\u001b[0m effort \u001b[38;5;241m=\u001b[39m calculation_rules\u001b[38;5;241m.\u001b[39mkpi_effort(auto)\n\u001b[1;32m 6\u001b[0m availability \u001b[38;5;241m=\u001b[39m calculation_rules\u001b[38;5;241m.\u001b[39mkpi_availability(auto)\n\u001b[0;32m----> 7\u001b[0m acceptance \u001b[38;5;241m=\u001b[39m \u001b[43mcalculation_rules\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkpi_acceptance\u001b[49m\u001b[43m(\u001b[49m\u001b[43mauto\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 9\u001b[0m effort \u001b[38;5;241m=\u001b[39m kpi_effort(auto)\n\u001b[1;32m 10\u001b[0m availability \u001b[38;5;241m=\u001b[39m kpi_availability(auto)\n", + "File \u001b[0;32m~/work/quality-kpi/functions/calculation_rules.py:66\u001b[0m, in \u001b[0;36mkpi_acceptance\u001b[0;34m(system)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(system, LegoAssembly):\n\u001b[1;32m 64\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTipo no compatible \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(system)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m pasado a kpi_acceptance()\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 66\u001b[0m total_acceptance \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43msum\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m(\u001b[49m\u001b[43mc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproperties\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdimension [studs]\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproperties\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprice [Euro]\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mc\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43msystem\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_component_list\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m-\u001b[39;49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 67\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m total_acceptance\n", + "File \u001b[0;32m~/work/quality-kpi/functions/calculation_rules.py:66\u001b[0m, in \u001b[0;36m<genexpr>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(system, LegoAssembly):\n\u001b[1;32m 64\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mTipo no compatible \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(system)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m pasado a kpi_acceptance()\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m---> 66\u001b[0m total_acceptance \u001b[38;5;241m=\u001b[39m \u001b[38;5;28msum\u001b[39m((\u001b[43mc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproperties\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdimension [studs]\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43m \u001b[49m\u001b[43mc\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mproperties\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mprice [Euro]\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m) \u001b[38;5;28;01mfor\u001b[39;00m c \u001b[38;5;129;01min\u001b[39;00m system\u001b[38;5;241m.\u001b[39mget_component_list(\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m))\n\u001b[1;32m 67\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m total_acceptance\n", + "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for /: 'str' and 'float'" + ] + } + ], "source": [ - "# calculate the KPIs for your car" + "# calculate the KPIs for your car\n", + "\n", + "calculation_rules.test_function()\n", + "\n", + "effort = calculation_rules.kpi_effort(auto)\n", + "availability = calculation_rules.kpi_availability(auto)\n", + "acceptance = calculation_rules.kpi_acceptance(auto)\n", + "\n", + "effort = kpi_effort(auto)\n", + "availability = kpi_availability(auto)\n", + "acceptance = kpi_acceptance(auto)" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "c774b381", "metadata": {}, "outputs": [], "source": [ - "# print your KPIs" + "# print your KPIs\n", + "\n", + "print(\"Total effort:\", effort)\n", + "print(\"Total availability:\", availability)\n", + "print(\"Total acceptance\", acceptance)" ] }, { @@ -228,7 +361,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "d518275f", "metadata": {}, "outputs": [], @@ -322,7 +455,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "c35de753", "metadata": {}, "outputs": [], @@ -332,7 +465,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": null, "id": "0b7336fb", "metadata": {}, "outputs": [], @@ -342,7 +475,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "fb445ea0", "metadata": {}, "outputs": [], @@ -361,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "762a1e93", "metadata": {}, "outputs": [], @@ -371,7 +504,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "1ed67328", "metadata": {}, "outputs": [], @@ -389,7 +522,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "05d9d6f7", "metadata": {}, "outputs": [], @@ -411,7 +544,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "b0f93e22", "metadata": {}, "outputs": [], @@ -474,7 +607,7 @@ "metadata": { "hide_input": false, "kernelspec": { - "display_name": ".venv", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -488,7 +621,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.13" + "version": "3.11.9" }, "varInspector": { "cols": { -- GitLab