o
    ciO                  	   @   s^  d dl Zd dlZd dlmZmZ d dlmZ d dl	m
Z
 e
 \ZZZG dd deZede ejddd	Ze  ejd
ddddZe  	dddZ	dddZedkreeg ddddddddZeeZe  eeg ddddddddZeeZe  eedgdgejjd   dddddddZeeZe  dS dS )    N)Image	ImageDraw)CartPoleEnv)try_import_tfc                       s<   e Zd Z fddZddd fdd
Z fddZ  ZS )	CartPoleDebugc                    st   t  j|i | ttdg| jjg}ttdg| jjg}tj	j
||dtjd| _d| _d| _d| _d S )N        g     @@   )shapedtyper      )super__init__npconcatenatearrayobservation_spacelowhighgymspacesBoxfloat32
timesteps__next_action_seed)selfargskwargsr   r   	__class__ b/home/ubuntu/.local/lib/python3.10/site-packages/ray/rllib/algorithms/dreamerv3/utils/debugging.pyr      s   
zCartPoleDebug.__init__N)seedoptionsc                   sR   t  j| jd}|  jd7  _d| _d| _tt| jg|d g}||d fS )N)r#   r   r   )r   resetr   r   r   r   r   r   )r   r#   r$   retobsr   r!   r"   r%      s   zCartPoleDebug.resetc                    sf   t  | j}|  jd7  _| jrdnd| _tt| jg|d g}d| j }||f|dd   S )Nr   r   皙?   )r   stepr   r   r   r   r   )r   actionr&   r'   rewardr   r!   r"   r*   !   s   
zCartPoleDebug.step)__name__
__module____qualname__r   r%   r*   __classcell__r!   r!   r   r"   r      s    r   zCartPoleDebug-v0	rgb_array)render_modezFrozenLake-v1F4x4)r2   is_slipperymap_namec	                 C   s\  | j dkrtj| dd  tjdtj_n
tj| tjdtj_t }	t	|	}
t
|
}|jdd|dd|ddd	d
 |jdd|dkrGdnd d| dd	d
 |jdd|dd	d
 |d urn|jdd|dd	d
 |jdd| d	d
 |jddtt|dd	d
 | j dkr|jdd| d  d	d
 t|
}|rtj|tjdS |S )Nr   r   r   r	      Vt=.2f (Rt=)r   r   r   fillr	      at=r   <----> (r	      rt+1=r	   *   rit+1=.6fr	   6   ct+1=r	   B   |h|t=.5f)   d   zt=)r
   r   r   r   cartpole_env	unwrappedstaterenderr   	fromarrayr   Drawtextmeanabsasarraytfconvert_to_tensoruint8)dreamed_obs	dreamed_V	dreamed_adreamed_r_tp1dreamed_ri_tp1dreamed_c_tp1value_target	initial_h	as_tensorr1   imagedraw_objnp_imgr!   r!   r"   create_cartpole_dream_image6   s2   


$

ro   c	                 C   s*  t j| ddtj_t }	t|	}
t	|
}|j
dd|dd|dddd	 |dkr.d
n|dkr4dn|dkr:dnd}|j
dd| d| ddd	 |j
dd|ddd	 |d urg|j
dd|ddd	 |j
dd| dd	 |j
ddt t |ddd	 t |
}|rtj|tjdS |S )Nr   )axisr7   r9   r:   r;   r<   r=   r>   rC   r   vr)   rD   ^r@   rB   rE   rF   rH   rI   rK   rL   rM   rO   rP   rR   rS   r6   )r   argmaxfrozenlake_envrW   srY   r   rZ   r   r[   r\   r]   r^   r_   r`   ra   rb   )rc   rd   re   rf   rg   rh   ri   rj   rk   r1   rl   rm   action_arrowrn   r!   r!   r"   create_frozenlake_dream_imagej   s.   

"	$
rw   __main__)g      Y@      ?{Gz      ?{Gz?g333333@r   ry   Tr   g       @)rc   rd   re   rf   rh   rj   ri   )ry   rz   r{   r|   r(   )F)	gymnasiumr   numpyr   PILr   r   'gymnasium.envs.classic_control.cartpoler   ray.rllib.utils.frameworkr   _r`   r   registermakerV   r%   rt   ro   rw   r-   r   r1   rZ   rl   showr   nr!   r!   r!   r"   <module>   sj     
=
,




	