better coloration
parent
35b9d8e081
commit
58023f2918
61
sim.py
61
sim.py
|
@ -10,11 +10,11 @@ class Direction(Enum):
|
|||
EAST = (1, 0)
|
||||
|
||||
class Colours(Enum):
|
||||
WALL = [30,30,30]
|
||||
STOCKED = [200,150,0]
|
||||
DEPLETED = [100,40,0]
|
||||
UNDEFINED = [255,0,255]
|
||||
AGENT = [0,255,0]
|
||||
WALL = [30, 30, 30]
|
||||
STOCKED = [240, 170, 0]
|
||||
DEPLETED = [77, 61, 41]
|
||||
UNDEFINED = [255, 0, 255]
|
||||
AGENT = [0, 255, 0]
|
||||
|
||||
@dataclass
|
||||
class Observations:
|
||||
|
@ -53,9 +53,6 @@ class Environment:
|
|||
)),
|
||||
np.ones((shape[0], 1))
|
||||
))
|
||||
|
||||
print(self.obstacle_map)
|
||||
print(self.obstacle_map.shape)
|
||||
|
||||
def step(self):
|
||||
agent_map = np.zeros(self.shape)
|
||||
|
@ -74,16 +71,31 @@ class Environment:
|
|||
def render(self):
|
||||
pixel_data = np.zeros(self.shape + (3,))
|
||||
|
||||
print(pixel_data.shape)
|
||||
|
||||
pixel_data += (
|
||||
((self.obstacle_map[..., np.newaxis] == 1) * np.array(Colours.WALL.value))
|
||||
+ ((self.obstacle_map[..., np.newaxis] == 0) * (self.resource_map[..., np.newaxis] == 0) * np.array(Colours.DEPLETED.value))
|
||||
+ ((self.obstacle_map[..., np.newaxis] == 0) * (self.resource_map[..., np.newaxis] > 0) * np.array(Colours.STOCKED.value))
|
||||
(
|
||||
(self.obstacle_map[..., np.newaxis] == 1) # Flag: wall
|
||||
* np.array(Colours.WALL.value) # Colour
|
||||
)
|
||||
+ (
|
||||
(self.obstacle_map[..., np.newaxis] == 0) # Flag: no wall
|
||||
* (self.resource_map[..., np.newaxis] == 0) # Flag: depleted
|
||||
* np.array(Colours.DEPLETED.value) # Colour
|
||||
)
|
||||
+ (
|
||||
(
|
||||
# Set of flags for applying the "cell is stocked" colour component
|
||||
(self.obstacle_map[..., np.newaxis] == 0) # Flag: no wall
|
||||
* (self.resource_map[..., np.newaxis] > 0) # Flag: not depleted
|
||||
) * (
|
||||
# Remapping of resource values to visualize relative cell resources
|
||||
self.resource_map[..., np.newaxis] # Resource values
|
||||
/ 100 # Remap of resource values to (vaguely) 0-1 float range
|
||||
* 0.4 # Remap of 0-1 float range to 0-0.2 float range
|
||||
+ 0.6 # Raising baseline of 0-0.2 float range to 0.8-1 float range
|
||||
)
|
||||
* np.array(Colours.STOCKED.value) # Colour
|
||||
)
|
||||
)
|
||||
|
||||
print(pixel_data)
|
||||
print(pixel_data.shape)
|
||||
|
||||
for agent in self.agents:
|
||||
pixel_data[tuple(agent.position)] = agent.get_colour()
|
||||
|
@ -210,10 +222,7 @@ class CAMSReverseAndSidestepAgent(DirectionalAgent):
|
|||
self.move_forward()
|
||||
self.number_of_turns += 1
|
||||
elif self.number_of_turns > 0:
|
||||
self.turn_right()
|
||||
self.move_forward()
|
||||
self.turn_right()
|
||||
self.number_of_turns = 0
|
||||
self.sidestep_and_reset_counter()
|
||||
elif self.resources >= self.required_resources:
|
||||
self.resources -= self.required_resources
|
||||
new_agent = CAMSReverseAndSidestepAgent(
|
||||
|
@ -226,13 +235,17 @@ class CAMSReverseAndSidestepAgent(DirectionalAgent):
|
|||
self.reverse_direction()
|
||||
self.number_of_turns += 1
|
||||
elif self.number_of_turns > 0:
|
||||
self.turn_right()
|
||||
self.move_forward()
|
||||
self.turn_right()
|
||||
self.number_of_turns = 0
|
||||
self.sidestep_and_reset_counter()
|
||||
else:
|
||||
self.move_forward()
|
||||
|
||||
def sidestep_and_reset_counter(self):
|
||||
self.turn_right()
|
||||
self.move_forward()
|
||||
self.turn_right()
|
||||
self.number_of_turns = 0
|
||||
|
||||
|
||||
def eat(self):
|
||||
resources = self.environment.eat(self.position)
|
||||
|
||||
|
|
Loading…
Reference in New Issue