Skip to main content

SignalingGame

Struct SignalingGame 

Source
pub struct SignalingGame { /* private fields */ }
Expand description

2-agent referential signaling game over a fixed vocabulary.

See the module docs for the full description and the comms layout table.

Implementations§

Source§

impl SignalingGame

Source

pub const NUM_AGENTS: usize = 2

Number of agents (always 2: speaker + listener).

Source

pub fn new(vocab: usize) -> Self

Construct a signaling game over a vocab-token vocabulary with hidden token 0.

§Panics

Panics if vocab == 0 — a signaling game needs at least one token.

Source

pub fn with_hidden(vocab: usize, hidden: i64) -> Self

Construct a signaling game with an explicit hidden token (for tests / deterministic rollouts).

§Panics

Panics if vocab == 0 or hidden is outside 0..vocab.

Source

pub fn vocab(&self) -> usize

Vocabulary size V.

Source

pub fn hidden(&self) -> i64

The hidden token the speaker must transmit this episode.

Source

pub fn received(&self) -> i64

The message token the listener received on the most recent step, or -1 if no step has occurred since the last reset.

Source

pub fn set_hidden(&mut self, hidden: i64)

Set the hidden token (0..vocab) and clear the received message.

§Panics

Panics if hidden is outside 0..vocab.

Trait Implementations§

Source§

impl Clone for SignalingGame

Source§

fn clone(&self) -> SignalingGame

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl CommunicatingEnvironment for SignalingGame

Source§

fn message_vocab(&self, agent_id: usize) -> Vec<usize>

Per-agent message action-space layout (one bin count per message dim), analogous to MultiAgentEnvironment::agent_action_space. These dims are appended after the task action dims in each agent’s action vector. An empty vec means the agent sends nothing.
Source§

fn message_obs_size(&self, agent_id: usize) -> usize

Number of observation dims that carry received messages for this agent. Zero means the agent receives nothing. The env is responsible for placing received messages into the observation vector returned by get_agent_observation / step_multi (see place_message).
Source§

fn delivery(&self) -> Delivery

Delivery policy for messages emitted this step. Defaults to broadcast, matching the Bucket Brigade signal semantics.
Source§

impl Debug for SignalingGame

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SignalingGame

Source§

fn default() -> Self

A 2-token signaling game (the smallest non-trivial vocabulary).

Source§

impl Environment for SignalingGame

Source§

type State = (i64, i64)

Full snapshot: the env consumes no RNG, so restoring reproduces every subsequent step exactly.

Source§

fn get_observation(&self) -> Vec<f32>

Single-agent surface returns the speaker’s observation. Multi-agent consumers should use MultiAgentEnvironment::get_agent_observation.

Source§

fn step(&mut self, action: i64) -> StepResult

Degenerate single-agent step: interpret action as the speaker’s emitted message and broadcast it. Multi-agent consumers should use MultiAgentEnvironment::step_multi.

Source§

type Action = i64

Action type accepted by Environment::step. Read more
Source§

fn reset(&mut self)

Reset the environment and return initial observation
Source§

fn observation_space(&self) -> SpaceInfo

Get the observation space dimensions
Source§

fn action_space(&self) -> SpaceInfo

Get the action space dimensions
Source§

fn render(&self) -> Vec<u8>

Render the current environment state
Source§

fn close(&mut self)

Close the environment
Source§

fn clone_state(&self) -> (i64, i64)

Snapshot the current env state for later restoration. Read more
Source§

fn restore_state(&mut self, state: &(i64, i64))

Restore the env to a previously-snapshotted state. Read more
Source§

impl JointEnv for SignalingGame

Thin adapter so the joint PPO trainer can drive the signaling game directly (issue #275, Phase 2). reset_joint / step_joint delegate to the existing MultiAgentEnvironment surface — all message routing is already handled inside SignalingGame::step_multi, so no extra plumbing lives here.

Source§

fn reset_joint(&mut self, _seed: Option<u64>) -> Vec<Vec<f32>>

Reset the env in-place. Returns per-agent observations.
Source§

fn step_joint(&mut self, actions: &[Vec<i64>]) -> JointStepResult

Step the env with per-agent actions. Read more
Source§

impl MultiAgentEnvironment for SignalingGame

Source§

fn num_agents(&self) -> usize

Number of agents in this environment.
Source§

fn get_agent_observation(&self, agent_id: usize) -> Vec<f32>

Get observation for a specific agent. Read more
Source§

fn agent_action_space(&self, agent_id: usize) -> Vec<usize>

Per-agent action-space layout. Read more
Source§

fn step_multi(&mut self, actions: &[Vec<i64>]) -> MultiAgentResult

Step the environment with multiple actions (one per agent). Read more
Source§

fn active_agents(&self) -> Vec<bool>

Get which agents are currently active (not terminated).

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more