1. AI-パックマンヒューリスティック:プロジェクトパックマン1では、パックマンエージェントが迷路から特定の目的地に到着する経路を探索し、効率的に食料を収集します。さまざまな種類のパックマン シナリオを満たすために、一般的な検索アルゴリズムが実装されています。このゲームを、さまざまな検索アルゴリズムがどのように機能するかを理解するためのモデルとして使用します。この課題では、パックマン エージェントは、特定の場所に到達し、食料を効率的に収集するために、迷路の世界で道を見つけます... この課題は Python3 で実装されました。
2. Bit-Torrent メカニズム: プログラムは、さまざまなピアからファイルのさまざまなチャンクをすべてダウンロードし、それらを結合して、ラップトップ/ローカル ディレクトリにファイルを保存します。この課題の目的は、BitTorrent のメカニズムを理解することです。 BitTorrent は、ファイルをホストしているピアのリストを含む torrent ファイルを取得し、ファイルのさまざまなチャンクをさまざまなピアからダウンロードします。ここで使用するソフトウェアはpython3とlinux環境です。
3.クライアント-サーバー-ネットワーク:サーバーはポートをリッスンし、ポート番号を入力としてサーバープログラムが実行され、クライアントはTCP接続を確立し、サーバーはサーバーとして機能することに加えて、クライアントにファイルを送信します。プロキシのように動作することもできます。クライアントとサーバーのプログラムは両方とも python3 で実装されており、サーバーでの同時接続をサポートするためにソケット プログラミングとマルチスレッドを使用しています。
4.ダミー航空会社管理システム プロトタイプ: このプロジェクトでは、空港、航空会社、フライトに関連するデータを保存および取得するダミー航空会社管理システムを開発しました。基本的に、このアイデアを選択した動機は、次のようなシステムを開発することでした。視覚的に魅力的で使いやすい。このシステムには 2 種類のユーザーがいます:1) 顧客と 2) 管理者ページ。管理者には新しいフライトなどを変更するためのアクセス権が与えられています。このプロジェクトで使用した主なデータ ソースは 2015 年のフライト データセットのみで、次の場所にあります。このプロジェクトで使用される kaggle ソフトウェアは、クエリ用の MY SQL ワークベンチ、Web アプリケーションとフロントエンド Web ページの HTML を作成する便利なツールと機能を提供する Python Web フレームワークです。
5.交通密度の推定-opencv : このコードには主に 2 つの部分があります。交通を監視するために必要な基本的なものは、実際の道路に配置されたカメラ フィードですが、道路のような適切な位置に配置されていることを確認することはできません。監視対象は完全な長方形の中にあり、カメラは上面図を受け取ります。アルゴリズムを効率的に動作させるために、画像内には削除する必要があるものが他にも多数ある可能性があります。 opencv は長方形のフレームに最適です。そのため、交通密度の推定などのジョブでは、最初にソフトウェアでカメラの角度を修正し、画像をトリミングして余分なアイテムを排除することが重要です。リポジトリの 1 つに、カメラの角度補正とフレームのトリミング コードが含まれています。
サブタスク 2 : 背景として使用されるビデオから抽出された画像。さらなる部分では、ユーティリティのランタイム トレードオフ分析が行われます。
6.クラウド コンピューティング プロジェクト: 簡単に説明すると、このプロジェクトは、仮想マシンを使用する人々を支援するツールを作成するというものでした。仮想マシンは、別のコンピュータ内で実行されるコンピュータのようなものです。これらは、それぞれに別のコンピューターを必要とせずに、異なるオペレーティング システムやソフトウェアを実行できるため便利です。
私たちが作成したツールはスナップショット API と呼ばれるものでした。これは、特定の時点で仮想マシンの写真を撮るカメラのようなものです。この写真をスナップショットと呼びます。スナップショットは、仮想マシンの状態を保存し、後で戻ってくることができるため便利です。たとえば、仮想マシンでプロジェクトに取り組んでいる人が休憩したい場合、スナップショットを作成して、後で作業の進行状況を失うことなく再び作業に戻ることができます。
スナップショット API の作成には Rust と呼ばれるプログラミング言語を使用しました。 Rust は安全で高速なため、この種のプロジェクトに適した言語です。これは、API にバグやセキュリティ上の問題が発生する可能性が低く、迅速に動作することを意味します。
私たちはプロジェクトを 5 つの主要な段階に分けました。最初の段階では、テストに使用できる基本的な仮想マシンを作成しました。第 2 段階は、仮想マシンを一時停止および再開できる機能を追加することでした。 3 番目の段階は、スナップショット API をより小さく、より効率的なプログラムにすることでした。第 4 段階は、複数の仮想マシンを同時に実行できる Web サーバーの作成でした。最終段階では、重複排除と呼ばれる技術を使用してスナップショット API をより効率的にすることができました。これは、2 つのスナップショットが非常に似ている場合、異なる部分のみを保存する必要があることを意味します。
私たちが作成したスナップショット API は、プロジェクトのさまざまな部分で使用されました。たとえば、ロード バランサーは仮想マシンを移動するためにこれを使用し、フロントエンドはベース イメージから新しい仮想マシンを作成するためにこれを使用し、不正行為防止システムは仮想マシンを使用しているユーザーを監視するためにそれを使用しました。
全体として、プロジェクトは成功しました。期限までにすべての目標を達成し、安全、高速、効率的なスナップショット API を作成しました。詳細については、リポジトリを参照してください。