Changed output, added some comments

This commit is contained in:
Administrator 2023-01-08 20:05:26 +01:00
parent c0fed7c932
commit d5da356345

View File

@ -1,11 +1,31 @@
{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"# Verkehrsszenario_Verhaltensprädiktion\n",
"\n",
"Es soll vorausgesagt werden, ob ein Fahrzeug in einer gegebenen Verkehrssituation das vorausfahrende Fahrzeug überholen wird. Dazu werden der Abstand und die Geschwindigkeit zum vorausfahrenden Fahrzeug gemessen. Zudem wird diese Information von einem Fahrzeug auf der linken Spur gemessen, welches sich von hinten nähert. Als weitere Informationen liegen die jeweiligen Fahrzeugtypen, das Wetter, die Tageszeit und die Straßenart und -krümmung vor.\n",
"\n",
"Mögliche vorherzusagende Reaktionen des Fahrzeugs sind: Geschwindigkeit und Spur beibehalten (continue), Verzögern (decelerate), Spurwechsel bei gleicher Geschwindigkeit (lane change) und Spurwechsel mit Beschleunigung (accelerated lane change).\n",
"Entwerfen Sie dazu ein geeignetes Ähnlichkeitsmaß und ermitteln Sie eine Repräsentation des Modells mit Hilfe von Case Based Learning (Verfahren aus der Vorlesung)\n",
"\n",
"## Aufgabenstellung\n",
"Entwickeln Sie eine Software, welche bei Eingabe einer Verkehrssituation (im gleichen Format) die Aktion des Fahrzeugs voraussagen kann. Diskutieren Sie Ihre Konfiguration und das Ergebnis.\n",
"\n",
"## Eingangsdaten\n",
"Ein Datensatz von Messungen in welchem ähnliche Situationen aufgezeichnet wurden -> data/SIM_001.csv"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# Imports\n",
"from model import *\n",
"from similarity import *\n",
"import csv"
@ -18,6 +38,16 @@
"outputs": [],
"source": [
"def create_similarity_matrix(filename, key):\n",
" \"\"\" \n",
" Generates similarity matrix \n",
" \n",
" Arguments:\n",
" filename: the csv file name as string\n",
" key: the title of the csv which is the value in the first line and col\n",
"\n",
" Returns:\n",
" similarity dict\n",
" \"\"\"\n",
" with open(filename) as file:\n",
" similarity_matrix = {}\n",
"\n",
@ -38,16 +68,17 @@
"metadata": {},
"outputs": [],
"source": [
"case_base = CaseBase.from_csv(\n",
"\"\"\"\n",
"Read data/SIM_001.csv\n",
"\"\"\"\n",
"case_base_obj = CaseBase.from_csv(\n",
" \"data/SIM_001.csv\",\n",
" problem_fields = (\"v\", \"v_left\", \"v_front\", \"d_left\", \"d_front\", \"type_left\", \"type_front\", \"radius_curve(m)\", \"slope_street\", \"street_type\", \"time\", \"weather\", \"type_vehicle\", \"speed_limit(km/h)\"),\n",
" solution_fields = (\"action\"),\n",
" encoding = \"utf-8\",\n",
" delimiter = \";\",\n",
" set_int = True\n",
")\n",
"print(case_base)\n",
"case_base[:3]"
")"
]
},
{
@ -56,40 +87,48 @@
"metadata": {},
"outputs": [],
"source": [
"case_base.add_symbolic_sim(\n",
"\"\"\"\n",
"Read similarity matrices.\n",
" data/vehicle_type_sim.csv\n",
" data/street_slope_sim.csv\n",
" data/street_type_sim.csv\n",
" data/time_type_sim.csv\n",
" data/weather_type_sim.csv\n",
"\"\"\"\n",
"case_base_obj.add_symbolic_sim(\n",
" field = \"type_left\",\n",
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
"case_base_obj.add_symbolic_sim(\n",
" field = \"type_front\",\n",
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
"case_base_obj.add_symbolic_sim(\n",
" field = \"type_vehicle\",\n",
" similarity_matrix = create_similarity_matrix(\"data/vehicle_type_sim.csv\", \"type_vehicle\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
"case_base_obj.add_symbolic_sim(\n",
" field = \"slope_street\",\n",
" similarity_matrix = create_similarity_matrix(\"data/street_slope_sim.csv\", \"type_street_slope\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
"case_base_obj.add_symbolic_sim(\n",
" field = \"street_type\",\n",
" similarity_matrix = create_similarity_matrix(\"data/street_type_sim.csv\", \"type_street\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
"case_base_obj.add_symbolic_sim(\n",
" field = \"time\",\n",
" similarity_matrix = create_similarity_matrix(\"data/time_type_sim.csv\", \"type_time\")\n",
")\n",
"\n",
"case_base.add_symbolic_sim(\n",
"case_base_obj.add_symbolic_sim(\n",
" field = \"weather\",\n",
" similarity_matrix = create_similarity_matrix(\"data/weather_type_sim.csv\", \"type_weather\")\n",
")\n"
")"
]
},
{
@ -98,6 +137,7 @@
"metadata": {},
"outputs": [],
"source": [
"# TODO Read query from cli\n",
"query = Query.from_problems(\n",
" v = 28.5,\n",
" v_left = 42.5,\n",
@ -116,7 +156,7 @@
")\n",
"\n",
"# sim_funcs: manhattan_sim, euclid_sim\n",
"retrieved = case_base.retrieve(\n",
"retrieved = case_base_obj.retrieve(\n",
" query,\n",
" v_left = euclid_sim,\n",
" v_front = euclid_sim,\n",
@ -137,12 +177,11 @@
"for k, v in query.problem.items():\n",
" print(f\" - {k} = {v}\")\n",
"print()\n",
"print(\"I recommend you this car:\")\n",
"print(\" \".join(retrieved.solution.values()).capitalize())\n",
"print(\"Prediction: \" + \" \".join(retrieved.solution.values()).capitalize())\n",
"print()\n",
"print(\"Explanation:\")\n",
"for field, sim_val in retrieved.sim_per_field.items():\n",
" print(f\" - {field} =\", retrieved.problem[field], f\"(similarity: {sim_val:.2f})\")"
"for field, val in retrieved.sim_per_field.items():\n",
" print(f\" - {field} =\", retrieved.problem[field], f\"(similarity: {val:.2f})\")"
]
}
],