@@ -395,11 +395,13 @@ <h2>クラスタリングモジュールの実装<a class="headerlink" href="#id
395395 < span class ="nb "> super</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span >
396396 < span class ="n "> agent_info</ span > < span class ="p "> ,</ span > < span class ="n "> world_info</ span > < span class ="p "> ,</ span > < span class ="n "> scenario_info</ span > < span class ="p "> ,</ span > < span class ="n "> module_manager</ span > < span class ="p "> ,</ span > < span class ="n "> develop_data</ span >
397397 < span class ="p "> )</ span >
398+ < span class ="c1 "> # ロガーの取得</ span >
398399 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _logger</ span > < span class ="o "> =</ span > < span class ="n "> get_logger</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="vm "> __class__</ span > < span class ="o "> .</ span > < span class ="vm "> __name__</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span >
399400
400401 < span class ="c1 "> # クラスター数の設定</ span >
401402 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _cluster_number</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="o "> =</ span > < span class ="mi "> 1</ span >
402403 < span class ="k "> match</ span > < span class ="n "> agent_info</ span > < span class ="o "> .</ span > < span class ="n "> get_myself</ span > < span class ="p "> ()</ span > < span class ="o "> .</ span > < span class ="n "> get_urn</ span > < span class ="p "> ():</ span >
404+ < span class ="c1 "> # エージェントのクラスに応じてクラスター数を設定</ span >
403405 < span class ="k "> case</ span > < span class ="n "> EntityURN</ span > < span class ="o "> .</ span > < span class ="n "> AMBULANCE_TEAM</ span > < span class ="p "> :</ span >
404406 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _cluster_number</ span > < span class ="o "> =</ span > < span class ="n "> scenario_info</ span > < span class ="o "> .</ span > < span class ="n "> get_value</ span > < span class ="p "> (</ span >
405407 < span class ="n "> ScenarioInfoKeys</ span > < span class ="o "> .</ span > < span class ="n "> SCENARIO_AGENTS_AT</ span > < span class ="p "> ,</ span >
@@ -597,6 +599,7 @@ <h2>クラスタリングモジュールの実装<a class="headerlink" href="#id
597599< span class ="sd "> np.ndarray</ span >
598600< span class ="sd "> エージェントとクラスターの対応付け結果</ span >
599601< span class ="sd "> """</ span >
602+ < span class ="c1 "> # エージェントの位置のリストを取得</ span >
600603 < span class ="n "> agent_positions</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> array</ span > < span class ="p "> (</ span >
601604 < span class ="p "> [</ span >
602605 < span class ="p "> [</ span > < span class ="n "> agent</ span > < span class ="o "> .</ span > < span class ="n "> get_x</ span > < span class ="p "> (),</ span > < span class ="n "> agent</ span > < span class ="o "> .</ span > < span class ="n "> get_y</ span > < span class ="p "> ()]</ span >
@@ -605,10 +608,12 @@ <h2>クラスタリングモジュールの実装<a class="headerlink" href="#id
605608 < span class ="p "> ]</ span >
606609 < span class ="p "> )</ span >
607610
611+ < span class ="c1 "> # エージェントとクラスターの距離行列を計算</ span >
608612 < span class ="n "> agent_positions</ span > < span class ="o "> =</ span > < span class ="n "> agent_positions</ span > < span class ="o "> .</ span > < span class ="n "> reshape</ span > < span class ="p "> (</ span > < span class ="o "> -</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="mi "> 2</ span > < span class ="p "> )</ span >
609613 < span class ="n "> cost_matrix</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> linalg</ span > < span class ="o "> .</ span > < span class ="n "> norm</ span > < span class ="p "> (</ span >
610614 < span class ="n "> agent_positions</ span > < span class ="p "> [:,</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> newaxis</ span > < span class ="p "> ]</ span > < span class ="o "> -</ span > < span class ="n "> cluster_positions</ span > < span class ="p "> ,</ span > < span class ="n "> axis</ span > < span class ="o "> =</ span > < span class ="mi "> 2</ span >
611615 < span class ="p "> )</ span >
616+ < span class ="c1 "> # ハンガリアンアルゴリズムによりエージェントとクラスターの対応付けを行う</ span >
612617 < span class ="n "> _</ span > < span class ="p "> ,</ span > < span class ="n "> col_ind</ span > < span class ="o "> =</ span > < span class ="n "> linear_sum_assignment</ span > < span class ="p "> (</ span > < span class ="n "> cost_matrix</ span > < span class ="p "> )</ span >
613618 < span class ="k "> return</ span > < span class ="n "> col_ind</ span >
614619</ pre > </ div >
@@ -643,7 +648,7 @@ <h2>クラスタリングモジュールの実装<a class="headerlink" href="#id
643648</ pre > </ div >
644649</ div >
645650< p > このままだと、クラスタリング結果がわかりにくいので、クラスタリング結果を地図上に表示してみましょう。</ p >
646- < p > < a class ="reference download internal " download ="" href ="../_downloads/3a5f9008a07336d7227e96be15803593/cluster_plot.zip "> < code class ="xref download docutils literal notranslate "> < span class ="pre "> クラスターの可視化用スクリプト</ span > </ code > </ a > をダウンロードして解凍し、< code class ="docutils literal notranslate "> < span class ="pre "> main.py</ span > </ code > の以下の部分に</ p >
651+ < p > < a class ="reference download internal " download ="" href ="../_downloads/3a5f9008a07336d7227e96be15803593/cluster_plot.zip "> < code class ="xref download docutils literal notranslate "> < span class ="pre "> クラスターの可視化用スクリプト</ span > </ code > </ a > をダウンロードして解凍し、中の < code class ="docutils literal notranslate "> < span class ="pre "> main.py</ span > </ code > の以下の部分に</ p >
647652< div class ="highlight-python notranslate "> < div class ="highlight "> < pre > < span > </ span > < span class ="c1 "> # クラスタリング結果</ span >
648653< span class ="n "> clusters</ span > < span class ="o "> =</ span > < span class ="p "> []</ span >
649654</ pre > </ div >
@@ -655,7 +660,8 @@ <h2>クラスタリングモジュールの実装<a class="headerlink" href="#id
655660</ pre > </ div >
656661</ div >
657662< p > 貼り付けたら、以下のコマンドを実行してください。</ p >
658- < div class ="highlight-bash notranslate "> < div class ="highlight "> < pre > < span > </ span > python< span class ="w "> </ span > main.py
663+ < div class ="highlight-bash notranslate "> < div class ="highlight "> < pre > < span > </ span > pip< span class ="w "> </ span > install< span class ="w "> </ span > -r< span class ="w "> </ span > requirements.txt
664+ python< span class ="w "> </ span > main.py
659665</ pre > </ div >
660666</ div >
661667< p > 以下のような画像が出力されます。</ p >
0 commit comments