CoolFace
Apppublic

rtpeterson02/GridWorld_Warehouse

sourceHugging Facemitupdated 5mo agoView on Hugging Face
0likes
app.cpython-312.pyc160 linesDownload Raw Back to root
1�

2o��icR����dZddlZddlZddlZddlmZddlZejd�ddl3mZddl
mZddlmZddlmZddlmZGd	�d4ej*�ZGd�d�Zed
dd��Ze�Zd�ZdBd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#ejHdejJjMd����5Z'ejPd�ejR�5ejTd �!�5ej$d"d#d$d%�&�Z+ejR�5ejXd'd(d)d'd*�+�Z-ejXdd,dd'd-�+�Z.ddd�ejR�5ej^d.d/�0�Z0ej^d1d2�0�Z1ej^d3d2�0�Z2ej^d4d5�0�Z3ddd�ddd�ejTd'�!�5ejPd6�ejP�Z4ejPd7�ejP�Z5ddd�ddd�ejR�5ejT�5ejPd8�ej$d9d#d$d:�&�Z6ddd�ejT�5ejPd;�ej$d<d#d$d:�&�Z7ddd�ddd�ejPd=�e+e6e7e4e5gZ8e0jse e-e.ge8�>�e1jse!e.ge8�>�e2jse"e.ge8�>�e3jse#e.ge8�>�e'jud?�e8�@�ddd�e;dAk(re'jy�yy#1swY��%xYw#1swY���xYw#1swY���xYw#1swY��xxYw#1swY��}xYw#1swY��6xYw#1swY��xYw#1swY��xYw#1swY��xYw)Cux5Warehouse GridWorld — Q-Learning RL Agent6Gymnasium environment + tabular Q-learning with live Gradio visualisation.7�N)�spaces�Agg)�LinearSegmentedColormap)�BytesIO)�Image)�defaultdictc���eZdZdZddgiZddddd�Zd	d8ddd�Zdd
ededef�fd�
Z	d�Z9d�Zd�Zd�Z
ddd�d�Zdefd�Z�xZS)�WarehouseGridWorldu�10    7x7 warehouse maze.11    State   : (row, col) integer tuple used as Q-table key12    Obs     : Box(4,) normalised [agent_r, agent_c, goal_r, goal_c]13    Actions : Discrete(4) — 0=UP 1=RIGHT 2=DOWN 3=LEFT14    �render_modes�	rgb_array)�����r)r�)rr)rr
)rr���↑�→�↓�←�	grid_size�obstacle_density�seedc����t�|��||_||_||_tjdddtj��|_	tjd�|_tjddg�|_
tj|dz15|dz16g�|_t�|_d|_d|_||zdz|_g|_|j+�y)N���?)�)�shape�dtyperrr)�super�__init__rr�_seedr�Box�np�float32�observation_space�Discrete�action_space�array�	agent_pos�goal_pos�set�	obstacles�steps_taken�total_reward�	max_steps�episode_log�_build_grid)�selfrrr�	__class__s    �� /home/claude/gridworld_hf/app.pyrzWarehouseGridWorld.__init__!s����
���� )��� 0��� $��17�!'���C��D��18�19�!S���!'����!3����H�H�a��V�,����H�H�i�!�m�Y��]�%C�D��
�!�e���������%�	�1�A�5���!#�������c�P�tjj|j�}t	�|_dt
|j�h}t|jdz|jz�}d}t|j20�|kr�|dkr�t|jd|j��t|jd|j��}}|dz
}||f|vr|j21j||f�t|j22�|kr|dkr��yyyy)N)rrrri'r)r"�random�default_rngr r*r+�tupler)�intrr�len�integers�add)r1�rng�	forbidden�n_obs�attempts�r�cs       r3r0zWarehouseGridWorld._build_grid4s����I�I�)�)�$�*�*�5�������U�4�=�=�1�2�	�����!�+�d�.C�.C�C�D�����$�.�.�!�E�)�h��.?�����a����8�9�3�s�|�|�A�t�~�~�?^�;_�q�A���M�H��1�v�Y�&����"�"�A�q�6�*�	�$�.�.�!�E�)�h��.?�)�.?�)r4c�b�t|jd�t|jd�fS)Nrr)r9r(�r1s r3�_statezWarehouseGridWorld._state@s)���D�N�N�1�%�&��D�N�N�1�,=�(>�?�?r4c��t|jdz23�}tj|jd|z|jd|z|j24d|z|j25d|zgtj��S)Nrr�r)�floatrr"r'r(r)r#)r1�gs  r3�_obszWarehouseGridWorld._obsCsv���$�.�.�1�$�%���x�x�����*�1�,�d�n�n�Q�.?��.A����q�)�!�+�d�m�m�A�.>�q�.@�B�IK���U�	Ur4c��ttjtj|j|j26z27���S�N)r9r"�sum�absr(r)rDs r3�	manhattanzWarehouseGridWorld.manhattanHs,���2�6�6�"�&�&����$�-�-�!?�@�A�B�Br4N)r�optionsc���|�||_|j�tjddg�|_d|_d|_g|_|j�d|j�ifS)Nrr�state)28r r0r"r'r(r,r-r/rJrE)r1rrPs   r3�resetzWarehouseGridWorld.resetKsc�����D�J������H�H�a��V�,�������������y�y�{�W�d�k�k�m�4�4�4r4�actionc�b�|j|\}}t|jd�|zt|jd�|z}}|j|}d|cxkr|jkrnnd|cxkr|jks	nd\}}}	n�||f|j29vr#t
j||g�|_d\}}}	nSt
j||g�|_t
j|j|j�rd\}}}	nd\}}}	|xjdz
c_30|xj|z
c_|jjdd|jd�d	|�d	|�d31|d�d�	�|j|jk\}32|j�||	|33d
|j!�ifS)Nrr)g��wallF)g��obstacleF)g$@uGOAL★T)g���������okF�#z>3� z (z+.1f�)rR)�ACTIONSr9r(�ACTION_NAMESrr+r"r'�array_equalr)r,r-r/�insertr.rJrE)r1rT�dr�dc�nr�nc�label�reward�outcome�34terminated�	truncateds           r3�stepzWarehouseGridWorld.stepUs����,�,�v�&���B��d�n�n�Q�'�(�2�-�s�4�>�>�!�3D�/E��/J�B���#�#�F�+���R�(�$�.�.�(�Q�"�-E�t�~�~�-E�*=�'�F�G�Z��"�X����
'��X�X�r�2�h�/�D�N�*A�'�F�G�Z��X�X�r�2�h�/�D�N��~�~�d�n�n�d�m�m�<�.C�+����.?�+�������Q������V�#��������Q�t�'7�'7��&;�1�U�G�1�W�I�R�PV�W[�}�\]�#^�_��$�$����6�	��y�y�{�F�J�	�G�T�[�[�]�;S�S�Sr4)�皙�����?�*)�__name__�35__module__�__qualname__�__doc__�metadatar\r]r9rHrr0rErJrOrSri�
__classcell__)r2s@r3r36r37s~����#�[�M�2�H��6�f��A�G���5�U�;�L��#��U��QT��&38+�@�U�39C�!�$�5�T�3�Tr4r40c�6�eZdZ		dd�Zd�Zd�Zd�Zd�Zd�Zy)	�QLearningAgentc�����|_||_||_||_||_||_t
�fd��|_t
t�|_	g|_41g|_g|_g|_
d|_y)Nc�N��tj�tj��S�NrG)r"�zeros�float64)�	n_actionss�r3�<lambda>z)QLearningAgent.__init__.<locals>.<lambda>{s�������"�*�*�0U�r4r)rz�alpha�gamma�epsilon�
epsilon_decay�epsilon_minr�Qr9�visit_count�episode_rewards�
episode_steps�episode_success�epsilons�episode_num)r1rzr|r}r~rr�s `     r3rzQLearningAgent.__init__rsp���&���"��42�"��43�$���*���(���'�(U�V���'��,���%'���%'���%'���%'��
���r4c��tjj�|jkr)tjj|j�Sttj|j|��SrL)r"r6r~�randintrzr9�argmaxr�)r1rRs  r3�
choose_actionzQLearningAgent.choose_action�sP��
�9�9�������,��9�9�$�$�T�^�^�4�4��2�9�9�T�V�V�E�]�+�,�,r4c���|rdn*ttj|j|��}||j|zz|j||z44}|j||xx|j45|zz
cc<y)Nr)rHr"�maxr�r}r|)r1rRrTre�46next_state�done�q_next�td_errs        r3�updatezQLearningAgent.update�sh����%����t�v�v�j�/A�(B�"C���$�*�*�v�-�-����u�
�f�0E�E�����u�
�f�����f�!4�4�r4c�h�t|j|j|jz�|_yrL)r�r�r~rrDs r3�
decay_epsilonzQLearningAgent.decay_epsilon�s%���4�+�+�T�\�\�D�<N�<N�-N�O��r4c���i}t|�D]l}t|�D]\}||f|vr�47|j||f}tj|dk7�r#gd�t	tj48|��nd|||f<�^�n|S)Nr)rrrr�·)�ranger�r"�anyr9r�)r1rr+�resultrArB�qs       r3�best_arrowszQLearningAgent.best_arrows�s������y�!�	j�A��9�%�
j���q�6�Y�&���F�F�A�q�6�N��QS�QW�QW�XY�]^�X^�Q_�!:�3�r�y�y��|�;L�!M�ei���1�v��	
j�	j��
r4c�@��t�fd���_tt��_�jj��jj��jj��jj�d�_	d�_49y)Nc�b��tj�jtj��Srw)r"rxrzryrDs�r3r{z/QLearningAgent.reset_learning.<locals>.<lambda>�s���������r�z�z�0Z�r4rr)rr�r9r�r��clearr�r�r�r�r~rDs`r3�reset_learningzQLearningAgent.reset_learning�sr���'�(Z�[���'��,������"�"�$���� � �"����"�"�$��
�
���������r4N)rrkgffffff�?rg50ףp=51�?皙�����?)	rmrnrorr�r�r�r�r��r4r3rtrtqs'��59�>B��"-�525�53P��r4rtrjrkrl)rrrc���t�}|j|dddd��tj|�|j	d�tj|�j�S)N�png�tightr��n)�format�bbox_inches�54pad_inches�dpir)r�savefig�plt�close�seekr�open�copy)�fig�bufs  r3�_fig_to_pilr��sL��55�)�C��K�K��E�w�4�S�K�Q��I�I�c�N��H�H�Q�K��:�:�c�?���!�!r4c���tj}d}tj||zdz||zdzfd��\}}|j	d|�|jd|�|j
d�|jd�|jjd�ttjj�d�	�}|r$tj|tj�ni}|rt!t#t$|��n	t!�}	t'|�D�]o}56t'|�D�]]}||dz57|58z59}
}|60|ftjv}|61|f|	v}tjj)|62|fd�}|rd63}nN|rd}nI|rE|dkDr@||z}t+dd
d|z64zz�}t+ddd|z65zz�}dj-||�}nd}|j/tj0||
fdddd|���|r |j3|dz|
dzdddddd��n=|r;|j)|66|fd�dk7r$|j3|dz|
dz||67|fddddd��|s��,|dkDs��3|r��7|j3|d z|
d!zt5|�ddd"d#�$���`��rtj6\}}|j/tj0||dz68|z69fddd%d&d'���|j3|dz|dz70|z71d(ddd)d&�$�tj8\}}|j/tj:|dz|dz72|z73fd*d+d,�-��|j3|dz|dz74|z75d.ddd/d0dd"�1�	t'|dz�D]*}|j=|dd�2�|j?|dd�2��,|j3d3d4d5tj@d6�d7tjB��|jDd8d9d:�;�tG|�S)<N�F�d��figsizer�r�equal�off�#F7F7F2r)�defaultz#FDEDEDz#D4EDFF���7���#z#{:02x}{:02x}ffz#EFEFEA��?z#CCCCBB)�	linewidth�	edgecolor�	facecoloru✕�center��#E24B4A�bold)�ha�va�fontsize�color�76fontweightr��z#444444g�������?)r�r�r�r�r|�333333�?g�p=77ף�?�z#999999)r�r�r�r�r�#1D9E75z#E1F5EEu★�g{�G�z�?�#378ADD��r��zorder�A��white)r�r�r�r�r�r��r�r�g{�G�z�?g�G�z��?uε=z.3fz  ep=��topz#888888)�	transformr�r�r�)$�envrr��subplots�set_xlim�set_ylim�78set_aspect�axis�patch�
set_facecolorr��agentr��valuesr�r+r*�mapr8r��getr9r��	add_patch�	Rectangle�text�strr)r(�Circle�axhline�axvliner~r��	transAxesr�)�show_policy�show_visits�highlight_pathrI�cell_pxr��ax�max_v�arrows�path_setrArB�x�y�is_obs�is_path�visits�fcolor�ratio�r_ch�g_ch�gr2�gc2�ar�ac�is                          r3�render_gridr�s����}�}�A��G��|�|�Q�w�Y�s�]�A�g�I�c�M�$B��L�G�C���K�K��1��r�{�{�1�a�(��M�M�'��B�G�G�E�N��I�I���I�&��5�$�$�+�+�-�q�9�E�6A�u� � ��C�M�M�2�r�F�2@�s�3�u�n�-�.�c�e�H�
�1�X�5���q��	5�A���Q����q�A��!�f��
�
�-�F��!�f��(�G��'�'�+�+�Q��F�A�6�F��"���"����!���%����S�2��U��#3�3�4���S�2��U��#3�3�4��*�1�1�$��=��"���L�L�����1�v�q�!�s�1:�f�N�
O������#��q��u�e��X�!#�9���I�����Q��F�D�!9�T�!A�����#��q��u�f�a��V�n��h�!#�9�D��B��v��z�&�����$���$���F���X�!"�)��5�;	5�5�D�|�|�H�C���L�L�����Q�q�S��W�~�q�!�q�)2�i�I�J��G�G�C��G�Q�s�U�3�Y��(�x��y��*��]�]�F�B���L�L����R��V�Q�s�U�2�X�.��I�a�P�Q��G�G�B�s�F�A�c�E�"�H�c�h�8��w�6�!��E��1�Q�3�Z�6��79�80�81�1�I��82�5�83�84�85�1�I��86�5�6��G�G�D�$�#�e�m�m�C�0��e�6G�6G�5H�I��l�l�Q�5�	��K��s��r4c87��ttj�dkrttjdd��\}}|jddddd|jdd	�88�|jd�|jjd�t|�Sttd
ttj�d
z��}td
t|�dz�}tjd
ddd��\}}|jjd�tjtjtj |�|zd��}|dj#|tjddd��|dj#||d
z89d|dd��|dj%ddd��|dj'dd��|dj)d �!�|djd"�tjtj*tj |�|zd��}|d
j#|tj*d#dd��|d
j#||d
z90d|d$d��|d
j%d%dd��|d
j'dd��|d
j)d �!�|d
jd"�td&t|�dz�}tjtj,D�cgc]
}t/|���c}tj |�|zd��dz}	|dj#||d
z91d|	d'd��|dj1dd(�|dj%d)dd��|dj'dd��|dj)d �!�|djd"�tj2d*�+�t|�Scc}w),Nr)r�g@r�r�r�z&Train the agent to see learning curvesr��z#AAAAAA)r�r�r�r�r�r�r�r�92r)r93gffffff@�valid)�moderz#BBDDFFgffffff�?)r�r�r|r�r�zEpisode reward�	r�r��pad�Episoder�)r�rj)�	labelsizez#F0F0EBz#BBF0DDr�zSteps per episoder�r��izSuccess rate %g333333�?�r)r:r�r�r�r�r�r�r�r�r�r��listr�r�r"�convolve�ones�plot�	set_title�94set_xlabel�tick_paramsr�r�rHr��tight_layout)95r�r��eps�window�axes�sm_r�sm_s�win2�s�srs96          r3�render_training_chartr$�sV��97�5� � �!�A�%��,�,�x�S�9���R�98����S�B���B�L�L��9�	�	.�	������	�	�/�/�	�:��3���
�%��3�u�4�4�5�a�7�8�
9�C�
��C��H�b�L�
!�F����Q��9�#�>�I�C���I�I���I�&�
�;�;�u�,�,�b�g�g�f�o�f�.D�7�S�D���G�L�L��e�+�+�9��SV�L�W���G�L�L��V�A�X�Y���Y�!�L�D���G���&����:���G���y�1��-�t�A�w�/B�/B�Q�/B�/O���G���)�$�
�;�;�u�*�*�B�G�G�F�O�F�,B��Q�D���G�L�L��e�)�)��c�QT�L�U���G�L�L��V�A�X�Y���Y�!�L�D���G���)�A�1��=���G���y�1��-�t�A�w�/B�/B�Q�/B�/O���G���)�$��q�#�c�(�A�+��D�
�;�;�%�*?�*?�@�Q��a��@��w�w�t�}�T�)��9�;>�?�B���G�L�L��T�!�V�W��r��a�L�@���G���Q�����G���&����:���G���y�1��-�t�A�w�/B�/B�Q�/B�/O���G���)�$�������s����As�6Oc�`�tj}tjdgd��}t	j99dddd��\}}|jjd�t|�D���cgc]i}t|�D]Y}td�D]I}||ftjvr3tj||f|d	k7rtj||f|��K�[�k}}}}|rtd100�|D��nd}t|�D�]N\}}	tj||f�}101t|�D]D}t|�D]4}||ftjvs�tj||f||102||f<�6�F|	j!|103|||d�
�}|	j#gd�|dd��|	j%g�|	j'g�tjD]6\}}
|	j)t	j*|
dz104|dz105fdddd����8tj,\}}|	j)t	j*|dz106|dz107fdddd�����Qt	j.|ddd��t	j0ddd��t	j2d��t5|�Scc}}}w) N�rl)r�r�r�rr)r
g333333@r�r�r�rc3�2K�|]}t|����y�wrL)rN��.0�vs  r3�	<genexpr>z#render_q_heatmap.<locals>.<genexpr>/s����(�!�s�1�v�(�s�rr�)�cmap�vmin�vmax�aspect)u↑ UPu	→ RIGHTu↓ DOWNu← LEFTr
rrr�z#DDDDCCrr�z	#1D9E7566r
r�g���Q��?)r��shrinkrz1Q-values per action  (green=high reward, red=low)gR���Q�?)r�r�g�������?r)r�rr�	from_listr�r�r�r�r�r+r�r�r��	enumerater"rx�imshowr�108set_xticks�109set_yticksr�r�r)�colorbar�suptitlerr�)rIr,r�rrArB�a�all_valsr.r��mat�im�or_�ocrrs                r3�render_q_heatmapr>&s����=�=�A�"�,�,�T�3R�S�D����Q��8��=�I�C���I�I���I�&��q��J�J��5��8�J�&'�U�1�X�J�89��a�5��
�
�-�%�'�'�1�Q�%�.��2C�q�2H�����1���q�!�J�!�J�!�J�H�J�-5�3�(�x�(�(�#�D��4��[���2��h�h��1�v����q��	3�A��1�X�
3���q�6����.� %����A���� 2�C��1��I�
3�	3��Y�Y�s��T�E��W�Y�
M��110���A�!�D�q�VW��X�111�
�
�b��2�=�=��,����	\�I�S�"��L�L�����3���C��'8�!�Q�i�XY�Z�[�	\��<�<���S�112���S�]�]�C��G�S��W�#5�q�!�;�WX�Y�Z�[��L�L���R���4�8��L�L�D�q�TX�Y�������s����-Js�/A.J)c��ttj�}ttj�}|rd|z|zd�d�nd}|r(tjtjdd�d�nd}td�tjj�D��}tjdzttj�z113}d	tj�d114|�d|�dtjd
�d|�d|�dtjd�dtjd�dtj�dtj d�d�j#�S)Nr�z.1f�%u—i����z.2fc3�RK�|]}tj|dk7�s�d���!y�w)rrN)r"r�r(s  r3r+z_stats_md.<locals>.<genexpr>Ns����?�q����q�A�v���?�s�'�'rz8115| Metric | Value |116|---|---|117| **Episodes trained** | `z` |118| **Win rate (all)** | `z"` |119| **Avg reward (last 20)** | `z#` |120| **Epsilon (exploration)** | `z.4fz` |121| **States discovered** | `z` / `z` |122| **Agent pos** | `(row=rz, col=rz)` |123| **Steps this ep** | `z` |124| **Reward this ep** | `z+.2fz` |125)r:r�r�rMr�r"�meanr�r�r�rr+r�r~r(r,r-�strip)�n�wins�wr�avg_r�known�totals      r3�	_stats_mdrJIs?��
��&�&�
'�A�
��&�&�
'�D�%&��D���126�3��q�
!�E�B�>?�����-�-�c�d�3�4�S�9�U�E�
�?�E�G�G�N�N�,�?�
?�E�
�]�]�A�
��C�M�M� 2�
2�E��!�,�,�-�.����$�g�& � %�
�
�c�2�3�!�7�%��w�/����q�)�*�&����q�1A�0B�C����(�)��)�)�$�/�0��127�E�G�r4c�v�tjsydjd�tjddD��S)Nu"_No moves yet — run an episode._�128c3�&K�|]	}d|�����y�w)z- Nr�)r)�ls  r3r+z_log_md.<locals>.<genexpr>`s����<�!�r�!��X�<�s�r�)r�r/�joinr�r4r3�_log_mdrP]s,���?�?�3��9�9�<�s���s��';�<�<�<r4c	���tt|��D�]�}tj�\}}|d}d}d}d}|s�tj|�}	tj|xxdz
cc<tj|	�\}}129}}}|d}
tj||	|130|
|xs|�|
}||131z
}|dz
}|xs|}|s��tj�txjdz
c_132tjj|�tjj|�tjjtt!j"tj$tj&���tj(jtj*����t-�t/�t1�t3�t5�fS)NrRFrrr)r�r9r�rSr�r�r�rir�r�r�r��appendr�r��boolr"r^r(r)r�r~rr$r>rJrP)�133n_episodesr�ep�obs�inforRr��	ep_reward�ep_stepsrTre�term�truncr�s              r3�run_episodesr\gsv���C�134�O�$�-���I�I�K�	��T���M�����	�����(�(��/�F����e�$��)�$�-0�X�X�f�-=�*�C���u�d��g��J��L�L����135�D�M�E�J�"�E����I���N�H��=�5�D��	����
���Q���
���$�$�Y�/�
���"�"�8�,�
���$�$�T�"�.�.�������*U�%V�W�
�����e�m�m�,�/-�2�=�/�1�3C�3E�y�{�T[�T]�]�]r4c��td|�S)Nr)r\�rs r3�run_one_episoder_�s����4� � r4c�x�tj}dt_tj�\}}|d}d}t	tj136�g}|s�tjtjkr�tj|�}tj|�\}}}	}137}|d}|jt	tj138��|	xs|139}|s"tjtjkr��|t_t|��}|t�t�t�t�fS)NrrRF)r�)r�r~r�rSr8r(r,r.r�rirRrr$r>rJrP)r�savedrVrWrRr��pathrTrerZr[�grids            r3�
run_best_pathrd�s����M�M�E��E�M��I�I�K�I�C����M�E��D��3�=�=�)�*�D��s������6��$�$�U�+��),���&�)9�&��V�T�5�$��g������E�#�-�-�(�)������s������6��E�M��d�+�D��&�(�*:�*<�i�k�7�9�T�Tr4c���tj�tjt	|���tdd��}|t
�t�t�dfS)Nr^F)r�r�z_Agent reset. Ready to train._)	r�r�r�rSr9rr$r>rJ)rrcs  r3�	reset_allrf�sH��	�����I�I�3�t�9�I���5�e�<�D��&�(�*:�*<�i�k�Kk�k�kr4zWarehouse GridWorld RL�blue)�primary_hue)�title�themeu�140# 🏭 Warehouse GridWorld — Q-Learning RL Agent141The agent explores the maze, builds a **Q-table**, and gradually learns the optimal path to **★**.  142Cell brightness = visit count · Arrows = current best policy · Blue path = learned route.143r)�scaleu-Environment — policy arrows + visit heatmap�pilFi�)rd�type�interactive�heightrr��zEpisodes per run)�valuerirdi�z	Grid seedu▶ Train N episodes�primary)�variantu👁 Run 1 episode�	secondaryu🏆 Show best pathu🔄 Reset agent�stopz### Agent statsz### Last episode logz### Learning curveszTraining curves��z### Q-value heatmapszQ-table per actionu�144---145**Reward:** Goal `+10` · Step `-0.1` · Obstacle `-2` · Wall `-0.5` &nbsp;|&nbsp;146**Algorithm:** Tabular Q-Learning · α=0.2 · γ=0.95 · ε decays 1.0→0.05 &nbsp;|&nbsp;147**Obs:** `Box(4,)` normalised · **Actions:** `Discrete(4)`148)�fn�inputs�outputsc��td�S)Nrl)rfr�r4r3r{r{�s149���2��r4)rwry�__main__)TTN)=rp�gradio�gr�numpyr"�	gymnasium�gymr�150matplotlib�use�matplotlib.pyplot�pyplotr��matplotlib.colorsr�ior�PILr�collectionsr�Envr151rtr�r�r�rr$r>rJrPr\r_rdrf�Blocks�themes�Soft�demo�Markdown�Row�Column�grid_img�Slider�n_ep_slider�seed_slider�Button�	btn_train�btn_run1�btn_best�	btn_reset�stats_md�log_md�	chart_img�qmap_imgry�click�loadrm�launchr�r4r3�<module>r�s����152������153���u���5���#�TT����TT�v1�1�p	�Q��B�G�����"�A�H&�R�F�(=�^�:!�U�(l��R�Y�Y�-�R�Y�Y�^�^�PV�^�5W�X�39�\`��B�K�K���154�����%�
�R�Y�Y�Q�
�155	N��r�x�x�&U�%*��c�K�H������
U�'�b�i�i��3�b�q�HZ�[��'�b�i�i��3�b�q��T��
U������
N�%�B�I�I�&<�i�P�	�%�B�I�I�&:�k�R��%�B�I�I�&;�k�R��%�B�I�I�&8�f�M�	�	
N�
156	N��R�Y�Y�Q�
�	%��B�K�K�)�*�"�r�{�{�}�H��B�K�K�.�/�"�r�{�{�}�F�		%�%�&157�����@�
�R�Y�Y�[�	@��B�K�K�-�.� ����'8�u�-2�3�@�I�	@��R�Y�Y�[�	@��B�K�K�.�/� ����';�%�-2�3�@�H�	@�@��B�K�K�����H�h��?�G�
�O�O�|�k�;�-G�QX�O�Y��N�N���}�QX�N�Y��N�N�}��}�QX�N�Y�
�O�O�y��}�QX�O�Y��I�I�&��I�8�g39�j�z���K�K�M��S
U�
U��
N�
N��
158	N�159	N��	%�	%��%�%��(	@�	@��	@�	@��@�@��739�39�s��$O!�+N-�?(N�'/M9	�N�/AN	�N�N-�#AN �*N-�2O!�O�)N:�O�)O�O�B160O!�9N
�>N�N
�N�N�N-� N*�%N-�-N7	�2O!�:O�?O�O�O�O	�O!�!O*