Commit 8571bc0c authored by Sam Moore's avatar Sam Moore

Fixed bug with probabilities

Pretty terrible, introduced weeks ago when trying to improve efficiency.
Also fixed bug with --reveal switch.

Agent Bishop should play better as a result of this (the former not the latter).
parent c0c346f9
...@@ -20,7 +20,7 @@ class Piece(): ...@@ -20,7 +20,7 @@ class Piece():
self.move_pattern = None self.move_pattern = None
self.coverage = None self.coverage = None
self.possible_moves = None self.possible_moves = {}
def init_from_copy(self, c): def init_from_copy(self, c):
...@@ -59,7 +59,10 @@ class Piece(): ...@@ -59,7 +59,10 @@ class Piece():
# Draw the two possible types underneath the current_type image # Draw the two possible types underneath the current_type image
for i in range(len(self.types)): for i in range(len(self.types)):
if always_reveal_states == True or self.types[i][0] != '?': if always_reveal_states == True or self.types[i][0] != '?':
img = small_images[self.colour][self.types[i]] if self.types[i][0] == '?':
img = small_images[self.colour][self.types[i][1:]]
else:
img = small_images[self.colour][self.types[i]]
else: else:
img = small_images[self.colour]["unknown"] # If the type hasn't been revealed, show a placeholder img = small_images[self.colour]["unknown"] # If the type hasn't been revealed, show a placeholder
...@@ -405,7 +408,7 @@ class Board(): ...@@ -405,7 +408,7 @@ class Board():
for i in range(len(p.types)): for i in range(len(p.types)):
t = p.types[i] t = p.types[i]
prob = 0.5 prob = 1.0 / float(len(p.types))
if t == "unknown" or p.types[i][0] == '?': if t == "unknown" or p.types[i][0] == '?':
total_types = 0 total_types = 0
for t2 in self.unrevealed_types[p.colour].keys(): for t2 in self.unrevealed_types[p.colour].keys():
...@@ -413,17 +416,17 @@ class Board(): ...@@ -413,17 +416,17 @@ class Board():
for t2 in self.unrevealed_types[p.colour].keys(): for t2 in self.unrevealed_types[p.colour].keys():
prob2 = float(self.unrevealed_types[p.colour][t2]) / float(total_types) prob2 = float(self.unrevealed_types[p.colour][t2]) / float(total_types)
p.current_type = t2 #p.current_type = t2
for point in self.possible_moves(p, reject_allied): for point in self.possible_moves(p, reject_allied, state=t2):
result[point[0]][point[1]] += prob2 * prob result[point[0]][point[1]] += prob2 * prob
else: else:
p.current_type = t #p.current_type = t
for point in self.possible_moves(p, reject_allied): for point in self.possible_moves(p, reject_allied, state=t):
result[point[0]][point[1]] += prob result[point[0]][point[1]] += prob
#self.verify() #self.verify()
p.current_type = "unknown" #p.current_type = "unknown"
return result return result
def prob_is_type(self, p, state): def prob_is_type(self, p, state):
...@@ -461,8 +464,7 @@ class Board(): ...@@ -461,8 +464,7 @@ class Board():
p.current_type = old_type p.current_type = old_type
return result return result
if p.possible_moves != None:
return p.possible_moves
result = [] result = []
...@@ -2629,4 +2631,4 @@ if __name__ == "__main__": ...@@ -2629,4 +2631,4 @@ if __name__ == "__main__":
sys.exit(102) sys.exit(102)
# --- main.py --- # # --- main.py --- #
# EOF - created from make on Tue Mar 19 07:36:32 WST 2013 # EOF - created from make on Thu Mar 21 12:27:36 WST 2013
...@@ -308,7 +308,7 @@ class Board(): ...@@ -308,7 +308,7 @@ class Board():
for i in range(len(p.types)): for i in range(len(p.types)):
t = p.types[i] t = p.types[i]
prob = 0.5 prob = 1.0 / float(len(p.types))
if t == "unknown" or p.types[i][0] == '?': if t == "unknown" or p.types[i][0] == '?':
total_types = 0 total_types = 0
for t2 in self.unrevealed_types[p.colour].keys(): for t2 in self.unrevealed_types[p.colour].keys():
...@@ -316,17 +316,17 @@ class Board(): ...@@ -316,17 +316,17 @@ class Board():
for t2 in self.unrevealed_types[p.colour].keys(): for t2 in self.unrevealed_types[p.colour].keys():
prob2 = float(self.unrevealed_types[p.colour][t2]) / float(total_types) prob2 = float(self.unrevealed_types[p.colour][t2]) / float(total_types)
p.current_type = t2 #p.current_type = t2
for point in self.possible_moves(p, reject_allied): for point in self.possible_moves(p, reject_allied, state=t2):
result[point[0]][point[1]] += prob2 * prob result[point[0]][point[1]] += prob2 * prob
else: else:
p.current_type = t #p.current_type = t
for point in self.possible_moves(p, reject_allied): for point in self.possible_moves(p, reject_allied, state=t):
result[point[0]][point[1]] += prob result[point[0]][point[1]] += prob
#self.verify() #self.verify()
p.current_type = "unknown" #p.current_type = "unknown"
return result return result
def prob_is_type(self, p, state): def prob_is_type(self, p, state):
...@@ -364,8 +364,7 @@ class Board(): ...@@ -364,8 +364,7 @@ class Board():
p.current_type = old_type p.current_type = old_type
return result return result
if p.possible_moves != None:
return p.possible_moves
result = [] result = []
......
...@@ -19,7 +19,7 @@ class Piece(): ...@@ -19,7 +19,7 @@ class Piece():
self.move_pattern = None self.move_pattern = None
self.coverage = None self.coverage = None
self.possible_moves = None self.possible_moves = {}
def init_from_copy(self, c): def init_from_copy(self, c):
...@@ -58,7 +58,10 @@ class Piece(): ...@@ -58,7 +58,10 @@ class Piece():
# Draw the two possible types underneath the current_type image # Draw the two possible types underneath the current_type image
for i in range(len(self.types)): for i in range(len(self.types)):
if always_reveal_states == True or self.types[i][0] != '?': if always_reveal_states == True or self.types[i][0] != '?':
img = small_images[self.colour][self.types[i]] if self.types[i][0] == '?':
img = small_images[self.colour][self.types[i][1:]]
else:
img = small_images[self.colour][self.types[i]]
else: else:
img = small_images[self.colour]["unknown"] # If the type hasn't been revealed, show a placeholder img = small_images[self.colour]["unknown"] # If the type hasn't been revealed, show a placeholder
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment