1. AI-Pacman-Heuristik : In Projekt Pacman 1 durchsucht der Pacman-Agent Wege vom Labyrinth aus, um an ein bestimmtes Ziel zu gelangen und Lebensmittel effizient zu sammeln. Allgemeine Suchalgorithmen werden implementiert, um verschiedene Arten von Pacman-Szenarien zu erfüllen. Wir verwenden dieses Spiel als Modell, um zu verstehen, wie verschiedene Suchalgorithmen funktionieren. In dieser Aufgabe wird der Pacman-Agent Wege durch seine Labyrinthwelt finden, um sowohl einen bestimmten Ort zu erreichen als auch effizient Nahrung zu sammeln ... Diese Aufgabe wurde in Python3 implementiert.
2. Bit-Torrent-Mechanismus : Das Programm lädt alle verschiedenen Teile der Datei von verschiedenen Peers herunter, kombiniert sie und speichert die Datei in unserem Laptop/lokalen Verzeichnis. Der Zweck dieser Aufgabe besteht darin, den Mechanismus von BitTorrent zu verstehen. BitTorrent ruft eine Torrent-Datei ab, die eine Liste der Peers enthält, die die Datei hosten, und lädt verschiedene Teile der Datei von verschiedenen Peers herunter. Die hier verwendete Software ist Python3 und eine Linux-Umgebung.
3. Client-Server-Netzwerke : Der Server lauscht an einem Port, das Serverprogramm wird mit einer Portnummer als Eingabe ausgeführt und der Client stellt eine TCP-Verbindung her und der Server sendet eine Datei an den Client. Zusätzlich zu seiner Funktion als Server fungiert der Server kann auch als Proxy fungieren. Sowohl das Client- als auch das Serverprogramm sind in Python3 implementiert und verwenden Socket-Programmierung und Multithreading, um gleichzeitige Verbindungen im Server zu unterstützen.
4. Prototyp eines Dummy-Airline-Managementsystems : In diesem Projekt haben wir ein Dummy-Airline-Managementsystem entwickelt, das die Daten zu Flughäfen, Fluggesellschaften und Flügen speichert und abruft. Die Motivation für diese Idee bestand im Wesentlichen darin, ein System zu entwickeln, das dies ermöglicht optisch ansprechend und einfach zu bedienen. Es gibt zwei Arten von Benutzern in diesem System: 1) Kunden und 2) Administratorseite und Administrator haben Zugriff zum Ändern neuer Flüge usw. gewährt. Die primäre Datenquelle, die wir in diesem Projekt verwendet haben, ist nur der Flugdatensatz 2015, der auf zu finden ist Die in diesem Projekt verwendete Kaggle-Software ist MY SQL Workbench für Abfragen und das Python-Webframework, das nützliche Tools und Funktionen bereitstellt, die das Erstellen von Webanwendungen und HTML für Frontend-Webseiten erleichtern
5. Schätzung der Verkehrsdichte – opencv : Dieser Code besteht hauptsächlich aus zwei Teilen: Das Grundlegende, was wir zur Überwachung des Verkehrs benötigen, ist ein Kamerafeed, der auf einer echten Straße platziert wird. Wir können jedoch nicht sicherstellen, dass er an einer guten Position wie dieser Straße platziert wird Das zu betrachtende Bild befindet sich in einem perfekten Rechteck und die Kamera erhält eine Draufsicht. Es können zahlreiche andere Dinge im Bild vorhanden sein, die für ein effizientes Funktionieren des Algorithmus eliminiert werden müssen. OpenCV eignet sich am besten für rechteckige Rahmen. Für Aufgaben wie die Schätzung der Verkehrsdichte ist es daher wichtig, zunächst den Kamerawinkel in der Software festzulegen und das Bild zuzuschneiden, um zusätzliche Elemente zu entfernen. Eines der Repositorys enthält Code für die Kamerawinkelkorrektur und das Zuschneiden von Bildern.
Unteraufgabe2: Das aus dem Video extrahierte Bild, das als Hintergrund verwendet wird. Im weiteren Teil wurde die Kompromissanalyse zur Laufzeit des Dienstprogramms durchgeführt.
6. Cloud-Computing-Projekt : Einfach erklärt: Bei dem Projekt ging es darum, ein Tool zu entwickeln, das Menschen hilft, die virtuelle Maschinen verwenden. Virtuelle Maschinen sind wie Computer, die in einem anderen Computer ausgeführt werden. Sie sind nützlich, weil sie es Benutzern ermöglichen, verschiedene Betriebssysteme oder Software auszuführen, ohne dass für jedes Betriebssystem ein separater Computer erforderlich ist.
Das von uns erstellte Tool wurde Snapshotting-API genannt. Es ist wie eine Kamera, die zu einem bestimmten Zeitpunkt ein Bild einer virtuellen Maschine aufnimmt. Dieses Bild wird Schnappschuss genannt. Snapshots sind nützlich, weil sie es Benutzern ermöglichen, den Status einer virtuellen Maschine zu speichern und später darauf zurückzukommen. Wenn beispielsweise jemand in einer virtuellen Maschine an einem Projekt arbeitet und eine Pause einlegen möchte, kann er einen Schnappschuss machen und später darauf zurückgreifen, ohne dass Fortschritte verloren gehen.
Wir haben eine Programmiersprache namens Rust verwendet, um die Snapshotting-API zu erstellen. Rust ist eine gute Sprache für diese Art von Projekten, weil es sicher und schnell ist. Dies bedeutet, dass die API weniger wahrscheinlich Fehler oder Sicherheitsprobleme aufweist und schnell funktioniert.
Wir haben das Projekt in fünf Hauptphasen unterteilt. In der ersten Phase ging es darum, eine grundlegende virtuelle Maschine zu erstellen, die wir zum Testen verwenden konnten. In der zweiten Phase ging es darum, eine Funktion hinzuzufügen, mit der Benutzer eine virtuelle Maschine anhalten und fortsetzen können. In der dritten Phase ging es darum, die Snapshotting-API in ein kleineres, effizienteres Programm umzuwandeln. In der vierten Phase ging es darum, einen Webserver zu erstellen, auf dem mehrere virtuelle Maschinen gleichzeitig ausgeführt werden können. In der letzten Phase ging es darum, die Snapshotting-API mithilfe einer Technik namens Deduplizierung effizienter zu gestalten. Das heißt, wenn zwei Schnappschüsse sehr ähnlich sind, müssen wir nur die Teile speichern, die unterschiedlich sind.
Die von uns erstellte Snapshotting-API wurde von verschiedenen Teilen des Projekts verwendet. Beispielsweise nutzte ein Load Balancer es, um virtuelle Maschinen zu verschieben, ein Frontend nutzte es, um neue virtuelle Maschinen aus einem Basis-Image zu erstellen, und ein Anti-Cheating-System nutzte es, um zu überwachen, wer die virtuellen Maschinen nutzte.
Insgesamt war das Projekt erfolgreich. Wir haben alle unsere Ziele vor Ablauf der Frist erreicht und eine Snapshot-API erstellt, die sicher, schnell und effizient ist. Weitere Informationen finden Sie in den Repositories.