惑星がどの影響を受けているかを示す、planetwarsボットのヒートマップを作成しようとしています。初期マップは次のようになります:http://imgur.com/a/rPVnl#0
理想的には、赤い惑星の値は-1、青い惑星の値は1、1とマークされた惑星の値は0である必要があります(または0から1、平均0.5が機能します)
私の最初の分析コードは以下のとおりですが、出力される結果は0.13〜7.23です。
for p in gameinfo.planets: #gameinfo.planets returns {pid:planet_object}
planet = gameinfo.planets[p]
own_value = 1
for q in gameinfo.my_planets.values():
if q != planet:
q_value = q.num_ships / planet.distance_to(q)
own_value = own_value + q_value
enemy_value = 1
for q in gameinfo.enemy_planets.values():
if q != planet:
q_value = q.num_ships / planet.distance_to(q)
enemy_value = enemy_value + q_value
self.heatmap[p] = own_value/enemy_value
また、0から1の範囲を制限するコードを追加しようとしました
highest = self.heatmap.keys()[0]
lowest = self.heatmap.keys()[0]
for p in gameinfo.planets.keys():
if self.heatmap[p] > highest:
highest = self.heatmap[p]
elif self.heatmap[p] < lowest:
lowest = self.heatmap[p]
map_range = highest-lowest
for p in gameinfo.planets.keys():
self.heatmap[p] = self.heatmap[p]/map_range
self.heatmap_mean = sum(self.heatmap.values(), 0.0) / len(self.heatmap)
値は0から1の間になりましたが、平均は0.245でしたか?(また、値は実際には0.019から1.019の範囲でした)。