AgentVerse's picture
bump version to 0.1.8
01523b5
from __future__ import annotations
import random
from typing import TYPE_CHECKING, Any, List, Union
from . import visibility_registry as VisibilityRegistry
from .base import BaseVisibility
if TYPE_CHECKING:
from agentverse.environments import BaseEnvironment
@VisibilityRegistry.register("prisoner")
class PrisonerVisibility(BaseVisibility):
"""
Visibility function for classroom, supports group discussion.
Args:
student_per_group:
The number of students per group.
num_discussion_turn:
The number of turns for group discussion.
grouping:
The grouping information. If it is a string, then it should be a
grouping method, options are ["random", "sequential"]. If it is a
list of list of int, then it should be the grouping information.
"""
current_turn: int = 0
def update_visible_agents(self, environment: BaseEnvironment):
self.update_receiver(environment, reset=False)
def update_receiver(self, environment: BaseEnvironment, reset=False):
if reset:
for agent in environment.agents:
agent.set_receiver(["all"])
else:
# 0:police 1: prisoner1 2: prisoner2
# environment.agents[0].set_receiver({"Police", "Suspect1", "Suspect2"})
# environment.agents[1].set_receiver({"Police", "Suspect1"})
# environment.agents[2].set_receiver({"Police", "Suspect2"})
# we update receiver in environment
pass
def reset(self):
self.current_turn = 0