def space_init(self, agent_space, body_a, global_nets): '''Post init override for space env. Note that aeb is already correct from __init__''' self.agent_space = agent_space self.body_a = body_a self.aeb_space = agent_space.aeb_space self.nanflat_body_a = util.nanflatten(self.body_a) for idx, body in enumerate(self.nanflat_body_a): if idx == 0: # NOTE set default body self.body = body body.agent = self body.nanflat_a_idx = idx MemoryClass = getattr(memory, ps.get(self.agent_spec, 'memory.name')) body.memory = MemoryClass(self.agent_spec['memory'], body) self.body_num = len(self.nanflat_body_a) AlgorithmClass = getattr(algorithm, ps.get(self.agent_spec, 'algorithm.name')) self.algorithm = AlgorithmClass(self, global_nets) # after algo init, transfer any missing variables from default body for idx, body in enumerate(self.nanflat_body_a): for k, v in vars(self.body).items(): if util.gen_isnan(getattr(body, k, None)): setattr(body, k, v)
def test_gen_isnan(v, isnan): assert util.gen_isnan(v) == isnan
def test_gen_isnan(v, isnan): assert util.gen_isnan(v) == isnan