我正试图为一个行星机器人创建一个热图,它能显示出一颗行星受到的影响。 初始映射如下: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的范围
^{pr2}$数值最终在0和1之间,但平均值是0.245?(实际值也在0.019到1.019之间)。在
为粗俗的简化道歉。假设}。在
foo
是[1, 2, 3, 4, 5]
,条是{第一次通过,
p
是1
。q
取1
,所以q==p
。接下来,q
取5
,现在q!=p
,own_value
累加q_value
,我假设它是一个小于1的正数。在但第二次通过时,}。}增加了一的分数。然后}又增加了相同的分数。这就是问题所在:
p
是{q
取1
,所以q!=p
,所以{q
取5
,所以q!=p
仍然,所以{(some_value / another_value) + (some_value / another_value)
打破了-1比1的比例。有时得到7.23,因为这是q
不等于p
的次数。在里面什么都没有
^{pr2}$关心规范化
for x in foo
的构造-仅for q in bar
。在我已经解决了我的问题,这就是解决方案。在
相关问题 更多 >
编程相关推荐