o
    ci                     @   sv   d dl Z d dlZd dlmZmZ d dlZd dlm	Z	 G dd dej
Ze	dd ZG dd	 d	eZG d
d deZdS )    N)DiscreteTuple)make_multi_agentc                   @   s2   e Zd ZdZd
ddZdddddZdd	 ZdS )	RandomEnvaN  A randomly acting environment.

    Can be instantiated with arbitrary action-, observation-, and reward
    spaces. Observations and rewards are generated by simply sampling from the
    observation/reward spaces. The probability of a `terminated=True` after each
    action can be configured, as well as the max episode length.
    Nc              	   C   s   |pi }| dtd| _| dtd| _| dtjjdddtjd| _	| d	d
| _
| j
r<| j | _| j	 | _| d| _| jd u rN| dd| _| dd | _| dd
| _d| _d S )Naction_space   observation_spacereward_space            ? )lowhighshapedtypestatic_samplesFp_terminatedp_doneg?max_episode_lencheck_action_boundsr   )getr   r   r   gymspacesBoxnpfloat32r	   r   sampleobservation_samplereward_sampler   r   r   stepsselfconfigr   r   ^/home/ubuntu/.local/lib/python3.10/site-packages/ray/rllib/examples/envs/classes/random_env.py__init__   s"   

zRandomEnv.__init__)seedoptionsc                C   s*   d| _ | js| j i fS t| ji fS )Nr   )r   r   r   r   copydeepcopyr   )r!   r%   r&   r   r   r#   reset3   s   zRandomEnv.resetc                 C   s   | j r| j|std| j|t| jtr+t|t| jjkr+td| j||  j	d7  _	d}d}| j
rB| j	| j
krBd}n| jdkrYttjjddg| jd| j gd}| jsi| j | j ||i fS t| jt| j||i fS )NzIllegal action for {}: {}   FTg        r   )p)r   r   contains
ValueErrorformat
isinstancer   lenr   r   r   r   boolr   randomchoicer   r   r   r	   r'   r(   r   r   )r!   action
terminated	truncatedr   r   r#   step:   sD   

	
zRandomEnv.stepN)__name__
__module____qualname____doc__r$   r)   r7   r   r   r   r#   r   	   s
    
!r   c                 C   s   t | S r8   )r   )cr   r   r#   <lambda>g   s    r>   c                          e Zd Zd fdd	Z  ZS )RandomLargeObsSpaceEnvNc                    s4   |pi }| dtjdddi t j|d d S )Nr   r
   r   i  r"   updater   r   r   superr$   r    	__class__r   r#   r$   l   s   zRandomLargeObsSpaceEnv.__init__r8   r9   r:   r;   r$   __classcell__r   r   rF   r#   r@   k       r@   c                       r?   )!RandomLargeObsSpaceEnvContActionsNc                    sB   |pi }| tjdddtjdddd t j|d d S )Nr
   r   rA   )   )r   r   rB   rC   r    rF   r   r#   r$   u   s   z*RandomLargeObsSpaceEnvContActions.__init__r8   rH   r   r   rF   r#   rK   t   rJ   rK   )r'   	gymnasiumr   gymnasium.spacesr   r   numpyr   +ray.rllib.examples.envs.classes.multi_agentr   Envr   RandomMultiAgentEnvr@   rK   r   r   r   r#   <module>   s    ^	