better coloration

main
Nekkowe! 2023-10-01 11:36:02 +02:00
parent 35b9d8e081
commit 58023f2918
1 changed files with 37 additions and 24 deletions

61
sim.py
View File

@ -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)