Sheep training flock of 10 fix?

This commit is contained in:
Johnny Fernandes
2026-04-24 14:54:20 +01:00
parent 17eb25864e
commit fcfa2c35c8
4 changed files with 342 additions and 33 deletions
+12 -10
View File
@@ -84,23 +84,25 @@ def build_obs(dog_pos: np.ndarray,
d_from_com = np.linalg.norm(active_pos - com, axis=1)
sorted_idx = np.argsort(d_from_com)[::-1]
radius = float(d_from_com[sorted_idx[0]])
far = active_pos[sorted_idx[0]]
second_far_dist = float(d_from_com[sorted_idx[1]]) if len(sorted_idx) > 1 else 0.0
def nth(n):
return active_pos[sorted_idx[n]] if len(sorted_idx) > n else com
far1, far2, far3 = nth(0), nth(1), nth(2)
else:
com = PEN_CENTER.copy()
radius = second_far_dist = 0.0
far = PEN_CENTER.copy()
radius = 0.0
far1 = far2 = far3 = PEN_CENTER.copy()
frac_active = n_active / max(n_sheep, 1)
return np.array([
dog_pos[0] / FIELD, dog_pos[1] / FIELD,
(com[0] - dog_pos[0]) / D, (com[1] - dog_pos[1]) / D,
(far[0] - dog_pos[0]) / D, (far[1] - dog_pos[1]) / D,
(PEN_CENTER[0] - com[0]) / D, (PEN_CENTER[1] - com[1]) / D,
(PEN_CENTER[0] - far[0]) / D, (PEN_CENTER[1] - far[1]) / D,
radius / D,
second_far_dist / D,
(com[0] - dog_pos[0]) / D, (com[1] - dog_pos[1]) / D,
(far1[0] - dog_pos[0]) / D, (far1[1] - dog_pos[1]) / D,
(far2[0] - dog_pos[0]) / D, (far2[1] - dog_pos[1]) / D,
(far3[0] - dog_pos[0]) / D, (far3[1] - dog_pos[1]) / D,
(PEN_CENTER[0] - com[0]) / D, (PEN_CENTER[1] - com[1]) / D,
(PEN_CENTER[0] - far1[0]) / D, (PEN_CENTER[1] - far1[1]) / D,
radius / D,
frac_active,
], dtype=np.float32)