diff --git a/.gitignore b/.gitignore index 3d6ff5e..5bd8281 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ **/data/* **/*.zip **/__pycache__ -/env \ No newline at end of file +/env +**/runs/* +**/wandb/* \ No newline at end of file diff --git a/dqn_letter_gssr.ipynb b/dqn_letter_gssr.ipynb index fd92d10..1039266 100644 --- a/dqn_letter_gssr.ipynb +++ b/dqn_letter_gssr.ipynb @@ -25,31 +25,2890 @@ "cell_type": "code", "execution_count": 2, "metadata": {}, - "outputs": [ - { - "ename": "TypeError", - "evalue": "LetterGuessingEnv.__init__() missing 1 required positional argument: 'seed'", - "output_type": "error", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[1;32mIn[2], line 5\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mstable_baselines3\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcommon\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01menv_checker\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m check_env\n\u001b[0;32m 3\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mletter_guess\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m LetterGuessingEnv\n\u001b[1;32m----> 5\u001b[0m env \u001b[38;5;241m=\u001b[39m \u001b[43mLetterGuessingEnv\u001b[49m\u001b[43m(\u001b[49m\u001b[43mvalid_words\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mload_valid_words\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;66;03m# Make sure to load your valid words\u001b[39;00m\n\u001b[0;32m 6\u001b[0m check_env(env) \u001b[38;5;66;03m# Optional: Verify the environment is compatible with SB3\u001b[39;00m\n\u001b[0;32m 8\u001b[0m model \u001b[38;5;241m=\u001b[39m PPO(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mMlpPolicy\u001b[39m\u001b[38;5;124m\"\u001b[39m, env, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n", - "\u001b[1;31mTypeError\u001b[0m: LetterGuessingEnv.__init__() missing 1 required positional argument: 'seed'" - ] - } - ], + "outputs": [], "source": [ "from stable_baselines3 import PPO # Or any other suitable RL algorithm\n", "from stable_baselines3.common.env_checker import check_env\n", "from letter_guess import LetterGuessingEnv\n", - "\n", + "from tqdm import tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ "env = LetterGuessingEnv(valid_words=load_valid_words()) # Make sure to load your valid words\n", - "check_env(env) # Optional: Verify the environment is compatible with SB3\n", - "\n", - "model = PPO(\"MlpPolicy\", env, verbose=1)\n", + "check_env(env) # Optional: Verify the environment is compatible with SB3" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "import wandb\n", + "from wandb.integration.sb3 import WandbCallback" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Failed to detect the name of this notebook, you can set it manually with the WANDB_NOTEBOOK_NAME environment variable to enable code saving.\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mltcptgeneral\u001b[0m (\u001b[33mfulltime\u001b[0m). Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n" + ] + }, + { + "data": { + "text/html": [ + "Tracking run with wandb version 0.16.4" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Run data is saved locally in /home/art/cse151b-final-project/wandb/run-20240319_162920-ot2i0b8h" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Syncing run confused-meadow-3 to Weights & Biases (docs)
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View project at https://wandb.ai/fulltime/wordle" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View run at https://wandb.ai/fulltime/wordle/runs/ot2i0b8h" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "config = {\n", + " \"policy_type\": \"MlpPolicy\",\n", + " \"total_timesteps\": 200_000\n", + "}\n", + "run = wandb.init(\n", + " project=\"wordle\",\n", + " config=config,\n", + " sync_tensorboard=True\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using cuda device\n", + "Wrapping the env with a `Monitor` wrapper\n", + "Wrapping the env in a DummyVecEnv.\n", + "Logging to runs/ot2i0b8h/PPO_1\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "585e7545478a485aa91c487b8630840f", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 2.48 |\n", + "| ep_rew_mean | -3.7 |\n", + "| time/ | |\n", + "| fps | 465 |\n", + "| iterations | 1 |\n", + "| time_elapsed | 4 |\n", + "| total_timesteps | 2048 |\n", + "---------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 2.49 |\n", + "| ep_rew_mean | -3.65 |\n", + "| time/ | |\n", + "| fps | 395 |\n", + "| iterations | 2 |\n", + "| time_elapsed | 10 |\n", + "| total_timesteps | 4096 |\n", + "| train/ | |\n", + "| approx_kl | 0.04501068 |\n", + "| clip_fraction | 0.427 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -3.23 |\n", + "| explained_variance | 0.189 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.205 |\n", + "| n_updates | 10 |\n", + "| policy_gradient_loss | -0.0667 |\n", + "| value_loss | 0.997 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 2.84 |\n", + "| ep_rew_mean | -3.4 |\n", + "| time/ | |\n", + "| fps | 381 |\n", + "| iterations | 3 |\n", + "| time_elapsed | 16 |\n", + "| total_timesteps | 6144 |\n", + "| train/ | |\n", + "| approx_kl | 0.01765968 |\n", + "| clip_fraction | 0.319 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -3.17 |\n", + "| explained_variance | 0.481 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.123 |\n", + "| n_updates | 20 |\n", + "| policy_gradient_loss | -0.0525 |\n", + "| value_loss | 0.383 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 2.98 |\n", + "| ep_rew_mean | -3.28 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 4 |\n", + "| time_elapsed | 21 |\n", + "| total_timesteps | 8192 |\n", + "| train/ | |\n", + "| approx_kl | 0.018652592 |\n", + "| clip_fraction | 0.368 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -3.11 |\n", + "| explained_variance | 0.428 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.181 |\n", + "| n_updates | 30 |\n", + "| policy_gradient_loss | -0.0572 |\n", + "| value_loss | 0.51 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.1 |\n", + "| ep_rew_mean | -3.24 |\n", + "| time/ | |\n", + "| fps | 369 |\n", + "| iterations | 5 |\n", + "| time_elapsed | 27 |\n", + "| total_timesteps | 10240 |\n", + "| train/ | |\n", + "| approx_kl | 0.023806999 |\n", + "| clip_fraction | 0.365 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -3.04 |\n", + "| explained_variance | 0.46 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.118 |\n", + "| n_updates | 40 |\n", + "| policy_gradient_loss | -0.0609 |\n", + "| value_loss | 0.499 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.15 |\n", + "| ep_rew_mean | -3.09 |\n", + "| time/ | |\n", + "| fps | 366 |\n", + "| iterations | 6 |\n", + "| time_elapsed | 33 |\n", + "| total_timesteps | 12288 |\n", + "| train/ | |\n", + "| approx_kl | 0.024716537 |\n", + "| clip_fraction | 0.372 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.94 |\n", + "| explained_variance | 0.495 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.266 |\n", + "| n_updates | 50 |\n", + "| policy_gradient_loss | -0.0578 |\n", + "| value_loss | 0.503 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.46 |\n", + "| ep_rew_mean | -2.8 |\n", + "| time/ | |\n", + "| fps | 365 |\n", + "| iterations | 7 |\n", + "| time_elapsed | 39 |\n", + "| total_timesteps | 14336 |\n", + "| train/ | |\n", + "| approx_kl | 0.023435738 |\n", + "| clip_fraction | 0.357 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.82 |\n", + "| explained_variance | 0.556 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.105 |\n", + "| n_updates | 60 |\n", + "| policy_gradient_loss | -0.0537 |\n", + "| value_loss | 0.491 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.54 |\n", + "| ep_rew_mean | -2.74 |\n", + "| time/ | |\n", + "| fps | 363 |\n", + "| iterations | 8 |\n", + "| time_elapsed | 45 |\n", + "| total_timesteps | 16384 |\n", + "| train/ | |\n", + "| approx_kl | 0.02574392 |\n", + "| clip_fraction | 0.29 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.71 |\n", + "| explained_variance | 0.608 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.125 |\n", + "| n_updates | 70 |\n", + "| policy_gradient_loss | -0.0445 |\n", + "| value_loss | 0.464 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.71 |\n", + "| ep_rew_mean | -2.63 |\n", + "| time/ | |\n", + "| fps | 362 |\n", + "| iterations | 9 |\n", + "| time_elapsed | 50 |\n", + "| total_timesteps | 18432 |\n", + "| train/ | |\n", + "| approx_kl | 0.021754535 |\n", + "| clip_fraction | 0.251 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.56 |\n", + "| explained_variance | 0.673 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.152 |\n", + "| n_updates | 80 |\n", + "| policy_gradient_loss | -0.0385 |\n", + "| value_loss | 0.4 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.8 |\n", + "| ep_rew_mean | -2.5 |\n", + "| time/ | |\n", + "| fps | 362 |\n", + "| iterations | 10 |\n", + "| time_elapsed | 56 |\n", + "| total_timesteps | 20480 |\n", + "| train/ | |\n", + "| approx_kl | 0.018548178 |\n", + "| clip_fraction | 0.239 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.46 |\n", + "| explained_variance | 0.702 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.218 |\n", + "| n_updates | 90 |\n", + "| policy_gradient_loss | -0.0361 |\n", + "| value_loss | 0.396 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.8 |\n", + "| ep_rew_mean | -2.34 |\n", + "| time/ | |\n", + "| fps | 362 |\n", + "| iterations | 11 |\n", + "| time_elapsed | 62 |\n", + "| total_timesteps | 22528 |\n", + "| train/ | |\n", + "| approx_kl | 0.016667131 |\n", + "| clip_fraction | 0.24 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.36 |\n", + "| explained_variance | 0.698 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.226 |\n", + "| n_updates | 100 |\n", + "| policy_gradient_loss | -0.037 |\n", + "| value_loss | 0.411 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 3.95 |\n", + "| ep_rew_mean | -2.31 |\n", + "| time/ | |\n", + "| fps | 361 |\n", + "| iterations | 12 |\n", + "| time_elapsed | 67 |\n", + "| total_timesteps | 24576 |\n", + "| train/ | |\n", + "| approx_kl | 0.020023255 |\n", + "| clip_fraction | 0.257 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.24 |\n", + "| explained_variance | 0.712 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0958 |\n", + "| n_updates | 110 |\n", + "| policy_gradient_loss | -0.0381 |\n", + "| value_loss | 0.406 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.19 |\n", + "| ep_rew_mean | -2.03 |\n", + "| time/ | |\n", + "| fps | 360 |\n", + "| iterations | 13 |\n", + "| time_elapsed | 73 |\n", + "| total_timesteps | 26624 |\n", + "| train/ | |\n", + "| approx_kl | 0.019943349 |\n", + "| clip_fraction | 0.266 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -2.13 |\n", + "| explained_variance | 0.712 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0974 |\n", + "| n_updates | 120 |\n", + "| policy_gradient_loss | -0.0387 |\n", + "| value_loss | 0.444 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.24 |\n", + "| ep_rew_mean | -1.96 |\n", + "| time/ | |\n", + "| fps | 360 |\n", + "| iterations | 14 |\n", + "| time_elapsed | 79 |\n", + "| total_timesteps | 28672 |\n", + "| train/ | |\n", + "| approx_kl | 0.022638176 |\n", + "| clip_fraction | 0.298 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.98 |\n", + "| explained_variance | 0.697 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.145 |\n", + "| n_updates | 130 |\n", + "| policy_gradient_loss | -0.0433 |\n", + "| value_loss | 0.486 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.45 |\n", + "| ep_rew_mean | -1.89 |\n", + "| time/ | |\n", + "| fps | 361 |\n", + "| iterations | 15 |\n", + "| time_elapsed | 84 |\n", + "| total_timesteps | 30720 |\n", + "| train/ | |\n", + "| approx_kl | 0.02262218 |\n", + "| clip_fraction | 0.354 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.77 |\n", + "| explained_variance | 0.727 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0807 |\n", + "| n_updates | 140 |\n", + "| policy_gradient_loss | -0.0439 |\n", + "| value_loss | 0.454 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.91 |\n", + "| ep_rew_mean | -1.65 |\n", + "| time/ | |\n", + "| fps | 362 |\n", + "| iterations | 16 |\n", + "| time_elapsed | 90 |\n", + "| total_timesteps | 32768 |\n", + "| train/ | |\n", + "| approx_kl | 0.023807548 |\n", + "| clip_fraction | 0.251 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.62 |\n", + "| explained_variance | 0.654 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.171 |\n", + "| n_updates | 150 |\n", + "| policy_gradient_loss | -0.0355 |\n", + "| value_loss | 0.686 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.86 |\n", + "| ep_rew_mean | -1.42 |\n", + "| time/ | |\n", + "| fps | 361 |\n", + "| iterations | 17 |\n", + "| time_elapsed | 96 |\n", + "| total_timesteps | 34816 |\n", + "| train/ | |\n", + "| approx_kl | 0.018085614 |\n", + "| clip_fraction | 0.198 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.49 |\n", + "| explained_variance | 0.699 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.339 |\n", + "| n_updates | 160 |\n", + "| policy_gradient_loss | -0.0297 |\n", + "| value_loss | 0.674 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.4 |\n", + "| ep_rew_mean | -1.88 |\n", + "| time/ | |\n", + "| fps | 361 |\n", + "| iterations | 18 |\n", + "| time_elapsed | 102 |\n", + "| total_timesteps | 36864 |\n", + "| train/ | |\n", + "| approx_kl | 0.015559142 |\n", + "| clip_fraction | 0.222 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.35 |\n", + "| explained_variance | 0.719 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.354 |\n", + "| n_updates | 170 |\n", + "| policy_gradient_loss | -0.0349 |\n", + "| value_loss | 0.629 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.54 |\n", + "| ep_rew_mean | -1.22 |\n", + "| time/ | |\n", + "| fps | 360 |\n", + "| iterations | 19 |\n", + "| time_elapsed | 108 |\n", + "| total_timesteps | 38912 |\n", + "| train/ | |\n", + "| approx_kl | 0.014995611 |\n", + "| clip_fraction | 0.17 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.32 |\n", + "| explained_variance | 0.436 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.33 |\n", + "| n_updates | 180 |\n", + "| policy_gradient_loss | -0.031 |\n", + "| value_loss | 2.79 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.28 |\n", + "| ep_rew_mean | -1.2 |\n", + "| time/ | |\n", + "| fps | 360 |\n", + "| iterations | 20 |\n", + "| time_elapsed | 113 |\n", + "| total_timesteps | 40960 |\n", + "| train/ | |\n", + "| approx_kl | 0.018023107 |\n", + "| clip_fraction | 0.169 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.23 |\n", + "| explained_variance | 0.559 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.743 |\n", + "| n_updates | 190 |\n", + "| policy_gradient_loss | -0.0327 |\n", + "| value_loss | 1.24 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 6.22 |\n", + "| ep_rew_mean | -0.38 |\n", + "| time/ | |\n", + "| fps | 361 |\n", + "| iterations | 21 |\n", + "| time_elapsed | 119 |\n", + "| total_timesteps | 43008 |\n", + "| train/ | |\n", + "| approx_kl | 0.023376558 |\n", + "| clip_fraction | 0.29 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.07 |\n", + "| explained_variance | 0.628 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.502 |\n", + "| n_updates | 200 |\n", + "| policy_gradient_loss | -0.0451 |\n", + "| value_loss | 1.11 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 7.06 |\n", + "| ep_rew_mean | 0.26 |\n", + "| time/ | |\n", + "| fps | 362 |\n", + "| iterations | 22 |\n", + "| time_elapsed | 124 |\n", + "| total_timesteps | 45056 |\n", + "| train/ | |\n", + "| approx_kl | 0.023838695 |\n", + "| clip_fraction | 0.269 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -1.01 |\n", + "| explained_variance | 0.566 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.925 |\n", + "| n_updates | 210 |\n", + "| policy_gradient_loss | -0.0463 |\n", + "| value_loss | 1.71 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 7.93 |\n", + "| ep_rew_mean | 1.19 |\n", + "| time/ | |\n", + "| fps | 362 |\n", + "| iterations | 23 |\n", + "| time_elapsed | 129 |\n", + "| total_timesteps | 47104 |\n", + "| train/ | |\n", + "| approx_kl | 0.021363221 |\n", + "| clip_fraction | 0.229 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.906 |\n", + "| explained_variance | 0.594 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.819 |\n", + "| n_updates | 220 |\n", + "| policy_gradient_loss | -0.0426 |\n", + "| value_loss | 1.94 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.52 |\n", + "| ep_rew_mean | 1.98 |\n", + "| time/ | |\n", + "| fps | 363 |\n", + "| iterations | 24 |\n", + "| time_elapsed | 135 |\n", + "| total_timesteps | 49152 |\n", + "| train/ | |\n", + "| approx_kl | 0.022241611 |\n", + "| clip_fraction | 0.167 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.882 |\n", + "| explained_variance | 0.667 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.838 |\n", + "| n_updates | 230 |\n", + "| policy_gradient_loss | -0.0343 |\n", + "| value_loss | 1.73 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.9 |\n", + "| ep_rew_mean | 1.8 |\n", + "| time/ | |\n", + "| fps | 364 |\n", + "| iterations | 25 |\n", + "| time_elapsed | 140 |\n", + "| total_timesteps | 51200 |\n", + "| train/ | |\n", + "| approx_kl | 0.011297604 |\n", + "| clip_fraction | 0.111 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.859 |\n", + "| explained_variance | 0.763 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.5 |\n", + "| n_updates | 240 |\n", + "| policy_gradient_loss | -0.024 |\n", + "| value_loss | 1.35 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.01 |\n", + "| ep_rew_mean | 2.23 |\n", + "| time/ | |\n", + "| fps | 364 |\n", + "| iterations | 26 |\n", + "| time_elapsed | 145 |\n", + "| total_timesteps | 53248 |\n", + "| train/ | |\n", + "| approx_kl | 0.010706454 |\n", + "| clip_fraction | 0.0958 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.84 |\n", + "| explained_variance | 0.486 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.872 |\n", + "| n_updates | 250 |\n", + "| policy_gradient_loss | -0.0237 |\n", + "| value_loss | 2.77 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.75 |\n", + "| ep_rew_mean | 1.81 |\n", + "| time/ | |\n", + "| fps | 365 |\n", + "| iterations | 27 |\n", + "| time_elapsed | 151 |\n", + "| total_timesteps | 55296 |\n", + "| train/ | |\n", + "| approx_kl | 0.011905432 |\n", + "| clip_fraction | 0.12 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.785 |\n", + "| explained_variance | 0.838 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.121 |\n", + "| n_updates | 260 |\n", + "| policy_gradient_loss | -0.0206 |\n", + "| value_loss | 0.851 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.07 |\n", + "| ep_rew_mean | 2.13 |\n", + "| time/ | |\n", + "| fps | 365 |\n", + "| iterations | 28 |\n", + "| time_elapsed | 156 |\n", + "| total_timesteps | 57344 |\n", + "| train/ | |\n", + "| approx_kl | 0.009603689 |\n", + "| clip_fraction | 0.0931 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.808 |\n", + "| explained_variance | 0.684 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.391 |\n", + "| n_updates | 270 |\n", + "| policy_gradient_loss | -0.0184 |\n", + "| value_loss | 1.63 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "------------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.87 |\n", + "| ep_rew_mean | 2.51 |\n", + "| time/ | |\n", + "| fps | 366 |\n", + "| iterations | 29 |\n", + "| time_elapsed | 162 |\n", + "| total_timesteps | 59392 |\n", + "| train/ | |\n", + "| approx_kl | 0.0071417904 |\n", + "| clip_fraction | 0.0738 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.736 |\n", + "| explained_variance | 0.826 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.83 |\n", + "| n_updates | 280 |\n", + "| policy_gradient_loss | -0.0131 |\n", + "| value_loss | 1.72 |\n", + "------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.02 |\n", + "| ep_rew_mean | 2.74 |\n", + "| time/ | |\n", + "| fps | 366 |\n", + "| iterations | 30 |\n", + "| time_elapsed | 167 |\n", + "| total_timesteps | 61440 |\n", + "| train/ | |\n", + "| approx_kl | 0.009269893 |\n", + "| clip_fraction | 0.0918 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.686 |\n", + "| explained_variance | 0.912 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.163 |\n", + "| n_updates | 290 |\n", + "| policy_gradient_loss | -0.0166 |\n", + "| value_loss | 0.537 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.51 |\n", + "| ep_rew_mean | 2.29 |\n", + "| time/ | |\n", + "| fps | 367 |\n", + "| iterations | 31 |\n", + "| time_elapsed | 172 |\n", + "| total_timesteps | 63488 |\n", + "| train/ | |\n", + "| approx_kl | 0.010982089 |\n", + "| clip_fraction | 0.0863 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.657 |\n", + "| explained_variance | 0.946 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.339 |\n", + "| n_updates | 300 |\n", + "| policy_gradient_loss | -0.0149 |\n", + "| value_loss | 0.341 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.94 |\n", + "| ep_rew_mean | 2.7 |\n", + "| time/ | |\n", + "| fps | 368 |\n", + "| iterations | 32 |\n", + "| time_elapsed | 177 |\n", + "| total_timesteps | 65536 |\n", + "| train/ | |\n", + "| approx_kl | 0.01880536 |\n", + "| clip_fraction | 0.0622 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.667 |\n", + "| explained_variance | 0.778 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.13 |\n", + "| n_updates | 310 |\n", + "| policy_gradient_loss | -0.0107 |\n", + "| value_loss | 2.3 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.82 |\n", + "| ep_rew_mean | 2.6 |\n", + "| time/ | |\n", + "| fps | 369 |\n", + "| iterations | 33 |\n", + "| time_elapsed | 182 |\n", + "| total_timesteps | 67584 |\n", + "| train/ | |\n", + "| approx_kl | 0.013803964 |\n", + "| clip_fraction | 0.1 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.644 |\n", + "| explained_variance | 0.952 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0438 |\n", + "| n_updates | 320 |\n", + "| policy_gradient_loss | -0.0186 |\n", + "| value_loss | 0.31 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9 |\n", + "| ep_rew_mean | 2.9 |\n", + "| time/ | |\n", + "| fps | 370 |\n", + "| iterations | 34 |\n", + "| time_elapsed | 188 |\n", + "| total_timesteps | 69632 |\n", + "| train/ | |\n", + "| approx_kl | 0.011061303 |\n", + "| clip_fraction | 0.0942 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.597 |\n", + "| explained_variance | 0.905 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.293 |\n", + "| n_updates | 330 |\n", + "| policy_gradient_loss | -0.0158 |\n", + "| value_loss | 0.61 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.96 |\n", + "| ep_rew_mean | 2.6 |\n", + "| time/ | |\n", + "| fps | 370 |\n", + "| iterations | 35 |\n", + "| time_elapsed | 193 |\n", + "| total_timesteps | 71680 |\n", + "| train/ | |\n", + "| approx_kl | 0.016911192 |\n", + "| clip_fraction | 0.165 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.551 |\n", + "| explained_variance | 0.926 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.229 |\n", + "| n_updates | 340 |\n", + "| policy_gradient_loss | -0.0229 |\n", + "| value_loss | 0.519 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.5 |\n", + "| ep_rew_mean | 3.32 |\n", + "| time/ | |\n", + "| fps | 370 |\n", + "| iterations | 36 |\n", + "| time_elapsed | 198 |\n", + "| total_timesteps | 73728 |\n", + "| train/ | |\n", + "| approx_kl | 0.012311206 |\n", + "| clip_fraction | 0.119 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.595 |\n", + "| explained_variance | 0.709 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.68 |\n", + "| n_updates | 350 |\n", + "| policy_gradient_loss | -0.0275 |\n", + "| value_loss | 1.95 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.6 |\n", + "| ep_rew_mean | 3.3 |\n", + "| time/ | |\n", + "| fps | 370 |\n", + "| iterations | 37 |\n", + "| time_elapsed | 204 |\n", + "| total_timesteps | 75776 |\n", + "| train/ | |\n", + "| approx_kl | 0.059752032 |\n", + "| clip_fraction | 0.154 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.534 |\n", + "| explained_variance | 0.785 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.835 |\n", + "| n_updates | 360 |\n", + "| policy_gradient_loss | -0.0234 |\n", + "| value_loss | 1.46 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.8 |\n", + "| ep_rew_mean | 2.7 |\n", + "| time/ | |\n", + "| fps | 370 |\n", + "| iterations | 38 |\n", + "| time_elapsed | 209 |\n", + "| total_timesteps | 77824 |\n", + "| train/ | |\n", + "| approx_kl | 0.01475055 |\n", + "| clip_fraction | 0.0968 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.455 |\n", + "| explained_variance | 0.917 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.153 |\n", + "| n_updates | 370 |\n", + "| policy_gradient_loss | -0.019 |\n", + "| value_loss | 0.428 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 3.01 |\n", + "| time/ | |\n", + "| fps | 370 |\n", + "| iterations | 39 |\n", + "| time_elapsed | 215 |\n", + "| total_timesteps | 79872 |\n", + "| train/ | |\n", + "| approx_kl | 0.012021113 |\n", + "| clip_fraction | 0.0851 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.558 |\n", + "| explained_variance | 0.702 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.8 |\n", + "| n_updates | 380 |\n", + "| policy_gradient_loss | -0.0284 |\n", + "| value_loss | 4.45 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.83 |\n", + "| ep_rew_mean | 3.57 |\n", + "| time/ | |\n", + "| fps | 370 |\n", + "| iterations | 40 |\n", + "| time_elapsed | 220 |\n", + "| total_timesteps | 81920 |\n", + "| train/ | |\n", + "| approx_kl | 0.010166377 |\n", + "| clip_fraction | 0.0623 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.454 |\n", + "| explained_variance | 0.728 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.43 |\n", + "| n_updates | 390 |\n", + "| policy_gradient_loss | -0.0201 |\n", + "| value_loss | 2.21 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.3 |\n", + "| ep_rew_mean | 3.14 |\n", + "| time/ | |\n", + "| fps | 371 |\n", + "| iterations | 41 |\n", + "| time_elapsed | 226 |\n", + "| total_timesteps | 83968 |\n", + "| train/ | |\n", + "| approx_kl | 0.017603599 |\n", + "| clip_fraction | 0.0748 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.384 |\n", + "| explained_variance | 0.957 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.152 |\n", + "| n_updates | 400 |\n", + "| policy_gradient_loss | -0.0122 |\n", + "| value_loss | 0.286 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.95 |\n", + "| ep_rew_mean | 3.81 |\n", + "| time/ | |\n", + "| fps | 371 |\n", + "| iterations | 42 |\n", + "| time_elapsed | 231 |\n", + "| total_timesteps | 86016 |\n", + "| train/ | |\n", + "| approx_kl | 0.028185518 |\n", + "| clip_fraction | 0.0954 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.383 |\n", + "| explained_variance | 0.811 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.412 |\n", + "| n_updates | 410 |\n", + "| policy_gradient_loss | -0.0224 |\n", + "| value_loss | 2.05 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.5 |\n", + "| ep_rew_mean | 3.57 |\n", + "| time/ | |\n", + "| fps | 371 |\n", + "| iterations | 43 |\n", + "| time_elapsed | 236 |\n", + "| total_timesteps | 88064 |\n", + "| train/ | |\n", + "| approx_kl | 0.02107103 |\n", + "| clip_fraction | 0.0702 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.375 |\n", + "| explained_variance | 0.732 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.156 |\n", + "| n_updates | 420 |\n", + "| policy_gradient_loss | -0.0342 |\n", + "| value_loss | 1.54 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.76 |\n", + "| ep_rew_mean | 3.7 |\n", + "| time/ | |\n", + "| fps | 371 |\n", + "| iterations | 44 |\n", + "| time_elapsed | 242 |\n", + "| total_timesteps | 90112 |\n", + "| train/ | |\n", + "| approx_kl | 0.007913441 |\n", + "| clip_fraction | 0.0349 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.346 |\n", + "| explained_variance | 0.827 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 2.92 |\n", + "| n_updates | 430 |\n", + "| policy_gradient_loss | -0.00355 |\n", + "| value_loss | 2.2 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.8 |\n", + "| ep_rew_mean | -12.4 |\n", + "| time/ | |\n", + "| fps | 371 |\n", + "| iterations | 45 |\n", + "| time_elapsed | 247 |\n", + "| total_timesteps | 92160 |\n", + "| train/ | |\n", + "| approx_kl | 0.5432366 |\n", + "| clip_fraction | 0.109 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.316 |\n", + "| explained_variance | 0.958 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.231 |\n", + "| n_updates | 440 |\n", + "| policy_gradient_loss | -0.0068 |\n", + "| value_loss | 0.313 |\n", + "---------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 45.9 |\n", + "| ep_rew_mean | -32.4 |\n", + "| time/ | |\n", + "| fps | 372 |\n", + "| iterations | 46 |\n", + "| time_elapsed | 252 |\n", + "| total_timesteps | 94208 |\n", + "| train/ | |\n", + "| approx_kl | 0.008981178 |\n", + "| clip_fraction | 0.0144 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.11 |\n", + "| explained_variance | -0.0603 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.91 |\n", + "| n_updates | 450 |\n", + "| policy_gradient_loss | -0.00156 |\n", + "| value_loss | 17.2 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "------------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 62.7 |\n", + "| ep_rew_mean | -49.3 |\n", + "| time/ | |\n", + "| fps | 373 |\n", + "| iterations | 47 |\n", + "| time_elapsed | 257 |\n", + "| total_timesteps | 96256 |\n", + "| train/ | |\n", + "| approx_kl | 0.0025778997 |\n", + "| clip_fraction | 0.0184 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.165 |\n", + "| explained_variance | 0.396 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 19.1 |\n", + "| n_updates | 460 |\n", + "| policy_gradient_loss | -0.00601 |\n", + "| value_loss | 45.6 |\n", + "------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 49.3 |\n", + "| ep_rew_mean | -35.6 |\n", + "| time/ | |\n", + "| fps | 373 |\n", + "| iterations | 48 |\n", + "| time_elapsed | 262 |\n", + "| total_timesteps | 98304 |\n", + "| train/ | |\n", + "| approx_kl | 0.014914533 |\n", + "| clip_fraction | 0.0816 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.272 |\n", + "| explained_variance | 0.394 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 33.5 |\n", + "| n_updates | 470 |\n", + "| policy_gradient_loss | -0.0164 |\n", + "| value_loss | 74.1 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "------------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 39.9 |\n", + "| ep_rew_mean | -26.3 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 49 |\n", + "| time_elapsed | 268 |\n", + "| total_timesteps | 100352 |\n", + "| train/ | |\n", + "| approx_kl | 0.0012997694 |\n", + "| clip_fraction | 0.026 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.24 |\n", + "| explained_variance | 0.465 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 44.5 |\n", + "| n_updates | 480 |\n", + "| policy_gradient_loss | -0.00881 |\n", + "| value_loss | 76.6 |\n", + "------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "------------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 27 |\n", + "| ep_rew_mean | -13.3 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 50 |\n", + "| time_elapsed | 273 |\n", + "| total_timesteps | 102400 |\n", + "| train/ | |\n", + "| approx_kl | 0.0014951692 |\n", + "| clip_fraction | 0.037 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.25 |\n", + "| explained_variance | 0.594 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 30.2 |\n", + "| n_updates | 490 |\n", + "| policy_gradient_loss | -0.00958 |\n", + "| value_loss | 77.4 |\n", + "------------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 17.4 |\n", + "| ep_rew_mean | -3.57 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 51 |\n", + "| time_elapsed | 279 |\n", + "| total_timesteps | 104448 |\n", + "| train/ | |\n", + "| approx_kl | 0.0443189 |\n", + "| clip_fraction | 0.176 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.457 |\n", + "| explained_variance | 0.338 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 44.4 |\n", + "| n_updates | 500 |\n", + "| policy_gradient_loss | -0.0247 |\n", + "| value_loss | 70.8 |\n", + "---------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 13.3 |\n", + "| ep_rew_mean | 0.45 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 52 |\n", + "| time_elapsed | 284 |\n", + "| total_timesteps | 106496 |\n", + "| train/ | |\n", + "| approx_kl | 0.005663138 |\n", + "| clip_fraction | 0.069 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.463 |\n", + "| explained_variance | 0.558 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 14.7 |\n", + "| n_updates | 510 |\n", + "| policy_gradient_loss | -0.0117 |\n", + "| value_loss | 36.8 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 19.8 |\n", + "| ep_rew_mean | -5.92 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 53 |\n", + "| time_elapsed | 289 |\n", + "| total_timesteps | 108544 |\n", + "| train/ | |\n", + "| approx_kl | 0.020181399 |\n", + "| clip_fraction | 0.176 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.499 |\n", + "| explained_variance | 0.182 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 3.45 |\n", + "| n_updates | 520 |\n", + "| policy_gradient_loss | -0.0254 |\n", + "| value_loss | 9.2 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.4 |\n", + "| ep_rew_mean | 2.26 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 54 |\n", + "| time_elapsed | 295 |\n", + "| total_timesteps | 110592 |\n", + "| train/ | |\n", + "| approx_kl | 0.009738399 |\n", + "| clip_fraction | 0.108 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.538 |\n", + "| explained_variance | 0.891 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.88 |\n", + "| n_updates | 530 |\n", + "| policy_gradient_loss | -0.00573 |\n", + "| value_loss | 22 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.4 |\n", + "| ep_rew_mean | 3.06 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 55 |\n", + "| time_elapsed | 300 |\n", + "| total_timesteps | 112640 |\n", + "| train/ | |\n", + "| approx_kl | 0.01536967 |\n", + "| clip_fraction | 0.191 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.49 |\n", + "| explained_variance | 0.315 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.971 |\n", + "| n_updates | 540 |\n", + "| policy_gradient_loss | -0.0219 |\n", + "| value_loss | 6.46 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "---------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.8 |\n", + "| ep_rew_mean | 1.63 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 56 |\n", + "| time_elapsed | 305 |\n", + "| total_timesteps | 114688 |\n", + "| train/ | |\n", + "| approx_kl | 0.0688808 |\n", + "| clip_fraction | 0.264 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.496 |\n", + "| explained_variance | 0.838 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.205 |\n", + "| n_updates | 550 |\n", + "| policy_gradient_loss | -0.0406 |\n", + "| value_loss | 0.836 |\n", + "---------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.3 |\n", + "| ep_rew_mean | 2.98 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 57 |\n", + "| time_elapsed | 311 |\n", + "| total_timesteps | 116736 |\n", + "| train/ | |\n", + "| approx_kl | 0.04210388 |\n", + "| clip_fraction | 0.326 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.534 |\n", + "| explained_variance | 0.734 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.907 |\n", + "| n_updates | 560 |\n", + "| policy_gradient_loss | -0.0421 |\n", + "| value_loss | 1.91 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.3 |\n", + "| ep_rew_mean | 3.28 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 58 |\n", + "| time_elapsed | 316 |\n", + "| total_timesteps | 118784 |\n", + "| train/ | |\n", + "| approx_kl | 0.051502623 |\n", + "| clip_fraction | 0.224 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.434 |\n", + "| explained_variance | 0.875 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.404 |\n", + "| n_updates | 570 |\n", + "| policy_gradient_loss | -0.0345 |\n", + "| value_loss | 0.827 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 3.78 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 59 |\n", + "| time_elapsed | 322 |\n", + "| total_timesteps | 120832 |\n", + "| train/ | |\n", + "| approx_kl | 0.07014565 |\n", + "| clip_fraction | 0.165 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.391 |\n", + "| explained_variance | 0.903 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.145 |\n", + "| n_updates | 580 |\n", + "| policy_gradient_loss | -0.0254 |\n", + "| value_loss | 0.681 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 16.4 |\n", + "| ep_rew_mean | -3.11 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 60 |\n", + "| time_elapsed | 327 |\n", + "| total_timesteps | 122880 |\n", + "| train/ | |\n", + "| approx_kl | 0.118292876 |\n", + "| clip_fraction | 0.151 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.466 |\n", + "| explained_variance | 0.952 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0778 |\n", + "| n_updates | 590 |\n", + "| policy_gradient_loss | -0.0214 |\n", + "| value_loss | 0.316 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 12.5 |\n", + "| ep_rew_mean | 1.05 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 61 |\n", + "| time_elapsed | 333 |\n", + "| total_timesteps | 124928 |\n", + "| train/ | |\n", + "| approx_kl | 0.061776154 |\n", + "| clip_fraction | 0.321 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.665 |\n", + "| explained_variance | 0.401 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 9.22 |\n", + "| n_updates | 600 |\n", + "| policy_gradient_loss | -0.0454 |\n", + "| value_loss | 17 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.8 |\n", + "| ep_rew_mean | 2.8 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 62 |\n", + "| time_elapsed | 338 |\n", + "| total_timesteps | 126976 |\n", + "| train/ | |\n", + "| approx_kl | 0.01477613 |\n", + "| clip_fraction | 0.153 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.579 |\n", + "| explained_variance | 0.682 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 6.12 |\n", + "| n_updates | 610 |\n", + "| policy_gradient_loss | -0.027 |\n", + "| value_loss | 10.5 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.4 |\n", + "| ep_rew_mean | 2.68 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 63 |\n", + "| time_elapsed | 344 |\n", + "| total_timesteps | 129024 |\n", + "| train/ | |\n", + "| approx_kl | 0.015770137 |\n", + "| clip_fraction | 0.128 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.507 |\n", + "| explained_variance | 0.869 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 2.13 |\n", + "| n_updates | 620 |\n", + "| policy_gradient_loss | -0.0253 |\n", + "| value_loss | 5.99 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 3.48 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 64 |\n", + "| time_elapsed | 349 |\n", + "| total_timesteps | 131072 |\n", + "| train/ | |\n", + "| approx_kl | 0.007838536 |\n", + "| clip_fraction | 0.0755 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.446 |\n", + "| explained_variance | 0.749 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 11.9 |\n", + "| n_updates | 630 |\n", + "| policy_gradient_loss | -0.0106 |\n", + "| value_loss | 9.21 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10 |\n", + "| ep_rew_mean | 3.8 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 65 |\n", + "| time_elapsed | 354 |\n", + "| total_timesteps | 133120 |\n", + "| train/ | |\n", + "| approx_kl | 0.035350725 |\n", + "| clip_fraction | 0.101 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.368 |\n", + "| explained_variance | 0.867 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.388 |\n", + "| n_updates | 640 |\n", + "| policy_gradient_loss | -0.0213 |\n", + "| value_loss | 1.11 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 14.6 |\n", + "| ep_rew_mean | -0.59 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 66 |\n", + "| time_elapsed | 360 |\n", + "| total_timesteps | 135168 |\n", + "| train/ | |\n", + "| approx_kl | 0.042963736 |\n", + "| clip_fraction | 0.0817 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.321 |\n", + "| explained_variance | 0.941 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.00919 |\n", + "| n_updates | 650 |\n", + "| policy_gradient_loss | -0.0127 |\n", + "| value_loss | 0.325 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.3 |\n", + "| ep_rew_mean | 3.64 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 67 |\n", + "| time_elapsed | 366 |\n", + "| total_timesteps | 137216 |\n", + "| train/ | |\n", + "| approx_kl | 0.08396668 |\n", + "| clip_fraction | 0.184 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.409 |\n", + "| explained_variance | 0.803 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 2.09 |\n", + "| n_updates | 660 |\n", + "| policy_gradient_loss | -0.0203 |\n", + "| value_loss | 8.99 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 19.8 |\n", + "| ep_rew_mean | -9.15 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 68 |\n", + "| time_elapsed | 371 |\n", + "| total_timesteps | 139264 |\n", + "| train/ | |\n", + "| approx_kl | 0.15326424 |\n", + "| clip_fraction | 0.199 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.39 |\n", + "| explained_variance | 0.894 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.122 |\n", + "| n_updates | 670 |\n", + "| policy_gradient_loss | -0.0201 |\n", + "| value_loss | 0.415 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.38 |\n", + "| ep_rew_mean | 3.18 |\n", + "| time/ | |\n", + "| fps | 374 |\n", + "| iterations | 69 |\n", + "| time_elapsed | 376 |\n", + "| total_timesteps | 141312 |\n", + "| train/ | |\n", + "| approx_kl | 0.21504487 |\n", + "| clip_fraction | 0.411 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.483 |\n", + "| explained_variance | 0.408 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 6.24 |\n", + "| n_updates | 680 |\n", + "| policy_gradient_loss | -0.0591 |\n", + "| value_loss | 18.4 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.98 |\n", + "| ep_rew_mean | 3.8 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 70 |\n", + "| time_elapsed | 382 |\n", + "| total_timesteps | 143360 |\n", + "| train/ | |\n", + "| approx_kl | 0.050312966 |\n", + "| clip_fraction | 0.0584 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.341 |\n", + "| explained_variance | 0.707 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0602 |\n", + "| n_updates | 690 |\n", + "| policy_gradient_loss | -0.00661 |\n", + "| value_loss | 0.845 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11.7 |\n", + "| ep_rew_mean | 2.07 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 71 |\n", + "| time_elapsed | 387 |\n", + "| total_timesteps | 145408 |\n", + "| train/ | |\n", + "| approx_kl | 0.018565401 |\n", + "| clip_fraction | 0.0643 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.322 |\n", + "| explained_variance | 0.977 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.348 |\n", + "| n_updates | 700 |\n", + "| policy_gradient_loss | -0.0112 |\n", + "| value_loss | 0.175 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 3.47 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 72 |\n", + "| time_elapsed | 392 |\n", + "| total_timesteps | 147456 |\n", + "| train/ | |\n", + "| approx_kl | 0.10186449 |\n", + "| clip_fraction | 0.19 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.395 |\n", + "| explained_variance | 0.47 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.66 |\n", + "| n_updates | 710 |\n", + "| policy_gradient_loss | -0.0419 |\n", + "| value_loss | 4.71 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 3.72 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 73 |\n", + "| time_elapsed | 398 |\n", + "| total_timesteps | 149504 |\n", + "| train/ | |\n", + "| approx_kl | 0.01903234 |\n", + "| clip_fraction | 0.0737 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.333 |\n", + "| explained_variance | 0.723 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 2.71 |\n", + "| n_updates | 720 |\n", + "| policy_gradient_loss | -0.022 |\n", + "| value_loss | 2.97 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.94 |\n", + "| ep_rew_mean | 3.92 |\n", + "| time/ | |\n", + "| fps | 375 |\n", + "| iterations | 74 |\n", + "| time_elapsed | 403 |\n", + "| total_timesteps | 151552 |\n", + "| train/ | |\n", + "| approx_kl | 0.026403807 |\n", + "| clip_fraction | 0.065 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.322 |\n", + "| explained_variance | 0.934 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.24 |\n", + "| n_updates | 730 |\n", + "| policy_gradient_loss | -0.00481 |\n", + "| value_loss | 0.481 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 3.81 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 75 |\n", + "| time_elapsed | 408 |\n", + "| total_timesteps | 153600 |\n", + "| train/ | |\n", + "| approx_kl | 0.011051587 |\n", + "| clip_fraction | 0.0593 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.324 |\n", + "| explained_variance | 0.984 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.00908 |\n", + "| n_updates | 740 |\n", + "| policy_gradient_loss | -0.00591 |\n", + "| value_loss | 0.113 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 3.63 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 76 |\n", + "| time_elapsed | 413 |\n", + "| total_timesteps | 155648 |\n", + "| train/ | |\n", + "| approx_kl | 0.00972967 |\n", + "| clip_fraction | 0.0544 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.339 |\n", + "| explained_variance | 0.922 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0226 |\n", + "| n_updates | 750 |\n", + "| policy_gradient_loss | -0.00438 |\n", + "| value_loss | 0.758 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.92 |\n", + "| ep_rew_mean | 3.86 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 77 |\n", + "| time_elapsed | 418 |\n", + "| total_timesteps | 157696 |\n", + "| train/ | |\n", + "| approx_kl | 0.013084366 |\n", + "| clip_fraction | 0.0481 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.348 |\n", + "| explained_variance | 0.812 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.0736 |\n", + "| n_updates | 760 |\n", + "| policy_gradient_loss | -0.0157 |\n", + "| value_loss | 1.47 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.05 |\n", + "| ep_rew_mean | -2.29 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 78 |\n", + "| time_elapsed | 424 |\n", + "| total_timesteps | 159744 |\n", + "| train/ | |\n", + "| approx_kl | 0.42402273 |\n", + "| clip_fraction | 0.215 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.49 |\n", + "| explained_variance | 0.983 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.00926 |\n", + "| n_updates | 770 |\n", + "| policy_gradient_loss | -0.0284 |\n", + "| value_loss | 0.109 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.53 |\n", + "| ep_rew_mean | -2.17 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 79 |\n", + "| time_elapsed | 429 |\n", + "| total_timesteps | 161792 |\n", + "| train/ | |\n", + "| approx_kl | 0.27915305 |\n", + "| clip_fraction | 0.138 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.376 |\n", + "| explained_variance | 0.503 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.373 |\n", + "| n_updates | 780 |\n", + "| policy_gradient_loss | -0.00444 |\n", + "| value_loss | 5.03 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.38 |\n", + "| ep_rew_mean | -1.74 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 80 |\n", + "| time_elapsed | 435 |\n", + "| total_timesteps | 163840 |\n", + "| train/ | |\n", + "| approx_kl | 0.019562341 |\n", + "| clip_fraction | 0.0921 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.457 |\n", + "| explained_variance | 0.562 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.638 |\n", + "| n_updates | 790 |\n", + "| policy_gradient_loss | -0.0128 |\n", + "| value_loss | 0.895 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 4.34 |\n", + "| ep_rew_mean | -1.7 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 81 |\n", + "| time_elapsed | 440 |\n", + "| total_timesteps | 165888 |\n", + "| train/ | |\n", + "| approx_kl | 0.18844175 |\n", + "| clip_fraction | 0.147 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.279 |\n", + "| explained_variance | 0.102 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.03 |\n", + "| n_updates | 800 |\n", + "| policy_gradient_loss | 0.013 |\n", + "| value_loss | 11.4 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 5.54 |\n", + "| ep_rew_mean | -0.66 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 82 |\n", + "| time_elapsed | 445 |\n", + "| total_timesteps | 167936 |\n", + "| train/ | |\n", + "| approx_kl | 0.06374202 |\n", + "| clip_fraction | 0.21 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.398 |\n", + "| explained_variance | 0.566 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.599 |\n", + "| n_updates | 810 |\n", + "| policy_gradient_loss | -0.0207 |\n", + "| value_loss | 1.59 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 7.65 |\n", + "| ep_rew_mean | 1.61 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 83 |\n", + "| time_elapsed | 451 |\n", + "| total_timesteps | 169984 |\n", + "| train/ | |\n", + "| approx_kl | 0.06125373 |\n", + "| clip_fraction | 0.251 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.434 |\n", + "| explained_variance | 0.299 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.27 |\n", + "| n_updates | 820 |\n", + "| policy_gradient_loss | -0.0399 |\n", + "| value_loss | 3.7 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.86 |\n", + "| ep_rew_mean | 2.46 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 84 |\n", + "| time_elapsed | 457 |\n", + "| total_timesteps | 172032 |\n", + "| train/ | |\n", + "| approx_kl | 0.047695376 |\n", + "| clip_fraction | 0.171 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.387 |\n", + "| explained_variance | 0.336 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.72 |\n", + "| n_updates | 830 |\n", + "| policy_gradient_loss | -0.0407 |\n", + "| value_loss | 3.91 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.84 |\n", + "| ep_rew_mean | 3.66 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 85 |\n", + "| time_elapsed | 462 |\n", + "| total_timesteps | 174080 |\n", + "| train/ | |\n", + "| approx_kl | 0.13684572 |\n", + "| clip_fraction | 0.133 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.346 |\n", + "| explained_variance | 0.625 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.13 |\n", + "| n_updates | 840 |\n", + "| policy_gradient_loss | -0.0231 |\n", + "| value_loss | 2.36 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 25.5 |\n", + "| ep_rew_mean | -12.2 |\n", + "| time/ | |\n", + "| fps | 376 |\n", + "| iterations | 86 |\n", + "| time_elapsed | 467 |\n", + "| total_timesteps | 176128 |\n", + "| train/ | |\n", + "| approx_kl | 0.36170986 |\n", + "| clip_fraction | 0.332 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.473 |\n", + "| explained_variance | 0.919 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.364 |\n", + "| n_updates | 850 |\n", + "| policy_gradient_loss | -0.0374 |\n", + "| value_loss | 0.278 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 17.2 |\n", + "| ep_rew_mean | -4.45 |\n", + "| time/ | |\n", + "| fps | 377 |\n", + "| iterations | 87 |\n", + "| time_elapsed | 472 |\n", + "| total_timesteps | 178176 |\n", + "| train/ | |\n", + "| approx_kl | 0.102079734 |\n", + "| clip_fraction | 0.34 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.613 |\n", + "| explained_variance | 0.0593 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 5.95 |\n", + "| n_updates | 860 |\n", + "| policy_gradient_loss | -0.04 |\n", + "| value_loss | 20.6 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 14.5 |\n", + "| ep_rew_mean | -2.36 |\n", + "| time/ | |\n", + "| fps | 378 |\n", + "| iterations | 88 |\n", + "| time_elapsed | 476 |\n", + "| total_timesteps | 180224 |\n", + "| train/ | |\n", + "| approx_kl | 0.042367905 |\n", + "| clip_fraction | 0.264 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.799 |\n", + "| explained_variance | 0.69 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 4.22 |\n", + "| n_updates | 870 |\n", + "| policy_gradient_loss | -0.0265 |\n", + "| value_loss | 16.7 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 12.3 |\n", + "| ep_rew_mean | 0.46 |\n", + "| time/ | |\n", + "| fps | 379 |\n", + "| iterations | 89 |\n", + "| time_elapsed | 480 |\n", + "| total_timesteps | 182272 |\n", + "| train/ | |\n", + "| approx_kl | 0.02418825 |\n", + "| clip_fraction | 0.262 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.744 |\n", + "| explained_variance | 0.75 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 3.08 |\n", + "| n_updates | 880 |\n", + "| policy_gradient_loss | -0.026 |\n", + "| value_loss | 16.2 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11 |\n", + "| ep_rew_mean | 2.19 |\n", + "| time/ | |\n", + "| fps | 380 |\n", + "| iterations | 90 |\n", + "| time_elapsed | 484 |\n", + "| total_timesteps | 184320 |\n", + "| train/ | |\n", + "| approx_kl | 0.024347484 |\n", + "| clip_fraction | 0.271 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.669 |\n", + "| explained_variance | 0.675 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 4.76 |\n", + "| n_updates | 890 |\n", + "| policy_gradient_loss | -0.0243 |\n", + "| value_loss | 10.1 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 12.1 |\n", + "| ep_rew_mean | 1.35 |\n", + "| time/ | |\n", + "| fps | 381 |\n", + "| iterations | 91 |\n", + "| time_elapsed | 488 |\n", + "| total_timesteps | 186368 |\n", + "| train/ | |\n", + "| approx_kl | 0.02668532 |\n", + "| clip_fraction | 0.256 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.576 |\n", + "| explained_variance | 0.706 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.797 |\n", + "| n_updates | 900 |\n", + "| policy_gradient_loss | -0.0378 |\n", + "| value_loss | 1.6 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 11 |\n", + "| ep_rew_mean | 2.55 |\n", + "| time/ | |\n", + "| fps | 382 |\n", + "| iterations | 92 |\n", + "| time_elapsed | 492 |\n", + "| total_timesteps | 188416 |\n", + "| train/ | |\n", + "| approx_kl | 0.017341316 |\n", + "| clip_fraction | 0.0919 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.681 |\n", + "| explained_variance | 0.865 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 9.01 |\n", + "| n_updates | 910 |\n", + "| policy_gradient_loss | -0.0076 |\n", + "| value_loss | 25.5 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 10.2 |\n", + "| ep_rew_mean | 2.27 |\n", + "| time/ | |\n", + "| fps | 383 |\n", + "| iterations | 93 |\n", + "| time_elapsed | 496 |\n", + "| total_timesteps | 190464 |\n", + "| train/ | |\n", + "| approx_kl | 0.070169866 |\n", + "| clip_fraction | 0.224 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.476 |\n", + "| explained_variance | 0.791 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 13 |\n", + "| n_updates | 920 |\n", + "| policy_gradient_loss | -0.0203 |\n", + "| value_loss | 5.41 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.33 |\n", + "| ep_rew_mean | 3.17 |\n", + "| time/ | |\n", + "| fps | 384 |\n", + "| iterations | 94 |\n", + "| time_elapsed | 500 |\n", + "| total_timesteps | 192512 |\n", + "| train/ | |\n", + "| approx_kl | 0.062242664 |\n", + "| clip_fraction | 0.184 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.504 |\n", + "| explained_variance | 0.426 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.94 |\n", + "| n_updates | 930 |\n", + "| policy_gradient_loss | -0.0392 |\n", + "| value_loss | 6.22 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.85 |\n", + "| ep_rew_mean | 3.79 |\n", + "| time/ | |\n", + "| fps | 385 |\n", + "| iterations | 95 |\n", + "| time_elapsed | 504 |\n", + "| total_timesteps | 194560 |\n", + "| train/ | |\n", + "| approx_kl | 0.042221397 |\n", + "| clip_fraction | 0.0712 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.328 |\n", + "| explained_variance | 0.893 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.236 |\n", + "| n_updates | 940 |\n", + "| policy_gradient_loss | -0.0162 |\n", + "| value_loss | 0.692 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 8.17 |\n", + "| ep_rew_mean | 2.09 |\n", + "| time/ | |\n", + "| fps | 387 |\n", + "| iterations | 96 |\n", + "| time_elapsed | 507 |\n", + "| total_timesteps | 196608 |\n", + "| train/ | |\n", + "| approx_kl | 0.036962293 |\n", + "| clip_fraction | 0.154 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.374 |\n", + "| explained_variance | 0.981 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | -0.0447 |\n", + "| n_updates | 950 |\n", + "| policy_gradient_loss | -0.0142 |\n", + "| value_loss | 0.151 |\n", + "-----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 9.38 |\n", + "| ep_rew_mean | 3.36 |\n", + "| time/ | |\n", + "| fps | 387 |\n", + "| iterations | 97 |\n", + "| time_elapsed | 512 |\n", + "| total_timesteps | 198656 |\n", + "| train/ | |\n", + "| approx_kl | 0.06385146 |\n", + "| clip_fraction | 0.245 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.366 |\n", + "| explained_variance | 0.553 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 1.4 |\n", + "| n_updates | 960 |\n", + "| policy_gradient_loss | -0.0399 |\n", + "| value_loss | 2.79 |\n", + "----------------------------------------\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "----------------------------------------\n", + "| rollout/ | |\n", + "| ep_len_mean | 24.8 |\n", + "| ep_rew_mean | -11.4 |\n", + "| time/ | |\n", + "| fps | 389 |\n", + "| iterations | 98 |\n", + "| time_elapsed | 515 |\n", + "| total_timesteps | 200704 |\n", + "| train/ | |\n", + "| approx_kl | 0.26313344 |\n", + "| clip_fraction | 0.178 |\n", + "| clip_range | 0.2 |\n", + "| entropy_loss | -0.363 |\n", + "| explained_variance | 0.898 |\n", + "| learning_rate | 0.0003 |\n", + "| loss | 0.247 |\n", + "| n_updates | 970 |\n", + "| policy_gradient_loss | -0.0285 |\n", + "| value_loss | 0.521 |\n", + "----------------------------------------\n" + ] + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    },
+    {
+     "data": {
+      "text/html": [
+       "
\n",
+       "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "528f9bb0103a402d83eb31e85dd97caf", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "VBox(children=(Label(value='0.438 MB of 0.438 MB uploaded\\r'), FloatProgress(value=1.0, max=1.0)))" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "wandb: WARNING Source type is set to 'repo' but some required information is missing from the environment. A job will not be created from this run. See https://docs.wandb.ai/guides/launch/create-job\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "

Run history:


global_step▁▁▁▂▂▂▂▂▂▃▃▃▃▃▃▄▄▄▄▄▅▅▅▅▅▅▆▆▆▆▆▇▇▇▇▇▇███
rollout/ep_len_mean▁▁▁▁▁▁▁▁▁▂▂▂▂▂▂▂▂▂▄█▅▄▂▂▃▂▂▄▂▂▂▁▁▂▂▃▂▂▂▄
rollout/ep_rew_mean▇▇▇▇▇▇▇▇▇█████████▅▁▅▆██▇██▆███▇▇██▇███▅
time/fps█▂▂▁▁▁▁▁▁▁▁▁▁▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▂▃▃▃
train/approx_kl▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▂▁▂▂▂▁▂▃▂▁▁█▁▂▃▂▁▂▂▅
train/clip_fraction█▇▇▅▅▆▅▄▆▄▂▂▂▂▃▂▂▂▁▂▄▄▅▅▆▃▂▄▂▂▂▄▂▅▃▅▅▅▂▄
train/clip_range▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
train/entropy_loss▁▁▂▃▃▄▅▅▆▆▆▇▇▇▇▇▇▇██▇▇▇▇▇▇█▇▇▇█▇▇▇▇▆▇▇█▇
train/explained_variance▃▄▅▆▆▆▆▄▆▆▅▇█▇▆██▆▁▄▄▃▇▇▄▇█▇▆▆██▅▃▆▆▆▇▇▇
train/learning_rate▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
train/loss▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▆█▂▁▁▂▁▁▁▁▁▁▁▁▁▁▂▂▃▁▁
train/policy_gradient_loss▁▂▂▄▄▄▄▅▃▄▆▇▇▆▅▆▇▄█▆▆▅▄▄▃▅▇▆▇▆█▅▇▄▆▅▆▆▆▅
train/value_loss▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▃██▂▁▁▃▂▁▁▁▁▁▁▁▁▁▃▂▂▁▁

Run summary:


global_step200704
rollout/ep_len_mean24.77
rollout/ep_rew_mean-11.45
time/fps389.0
train/approx_kl0.26313
train/clip_fraction0.17793
train/clip_range0.2
train/entropy_loss-0.36315
train/explained_variance0.89819
train/learning_rate0.0003
train/loss0.24744
train/policy_gradient_loss-0.02851
train/value_loss0.52073

" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View run confused-meadow-3 at: https://wandb.ai/fulltime/wordle/runs/ot2i0b8h
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 2 other file(s)" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "Find logs at: ./wandb/run-20240319_162920-ot2i0b8h/logs" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "model = PPO(config[\"policy_type\"], env=env, verbose=0, tensorboard_log=f\"runs/{run.id}\")\n", "\n", "# Train for a certain number of timesteps\n", - "model.learn(total_timesteps=100000)\n", + "model.learn(\n", + " total_timesteps=config[\"total_timesteps\"],\n", + " callback=WandbCallback(\n", + " model_save_path=f\"models/{run.id}\",\n", + " verbose=2,\n", + " ),\n", + "\tprogress_bar=True\n", + ")\n", + "\n", + "run.finish()\n", "\n", "# Save the model\n", "model.save(\"wordle_ppo_model\")" @@ -57,10 +2916,60 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], - "source": [] + "source": [ + "model.save(\"wordle_ppo_model\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "model = PPO.load(\"wordle_ppo_model\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 1000/1000 [00:20<00:00, 49.06it/s]" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "-6.703\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "rewards = 0\n", + "for i in tqdm(range(1000)):\n", + " obs, _ = env.reset()\n", + " done = False\n", + " while not done:\n", + " action, _ = model.predict(obs)\n", + " obs, reward, done, _, info = env.step(action)\n", + " rewards += reward\n", + "print(rewards / 1000)" + ] } ], "metadata": { @@ -79,7 +2988,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.5" + "version": "3.8.10" } }, "nbformat": 4, diff --git a/gym_wordle/__init__.py b/gym_wordle/__init__.py deleted file mode 100644 index 9efa1cd..0000000 --- a/gym_wordle/__init__.py +++ /dev/null @@ -1,7 +0,0 @@ -from gym.envs.registration import register -from .wordle import WordleEnv - -register( - id='Wordle-v0', - entry_point='gym_wordle.wordle:WordleEnv' -) diff --git a/gym_wordle/dictionary/guess_list.csv b/gym_wordle/dictionary/guess_list.csv deleted file mode 100644 index 670b1bb..0000000 --- a/gym_wordle/dictionary/guess_list.csv +++ /dev/null @@ -1,12972 +0,0 @@ -aahed -aalii -aargh -aarti -abaca -abaci -aback -abacs -abaft -abaka -abamp -aband -abase -abash -abask -abate -abaya -abbas -abbed -abbes -abbey -abbot -abcee -abeam -abear -abele -abers -abets -abhor -abide -abies -abled -abler -ables -ablet -ablow -abmho -abode -abohm -aboil -aboma -aboon -abord -abore -abort -about -above -abram -abray -abrim -abrin -abris -absey -absit -abuna -abune -abuse -abuts -abuzz -abyes -abysm -abyss -acais -acari -accas -accoy -acerb -acers -aceta -achar -ached -aches -achoo -acids -acidy -acing -acini -ackee -acker -acmes -acmic -acned -acnes -acock -acold -acorn -acred -acres -acrid -acros -acted -actin -acton -actor -acute -acyls -adage -adapt -adaws -adays -adbot -addax -added -adder -addio -addle -adeem -adept -adhan -adieu -adios -adits -adman -admen -admin -admit -admix -adobe -adobo -adopt -adore -adorn -adown -adoze -adrad -adred -adsum -aduki -adult -adunc -adust -advew -adyta -adzed -adzes -aecia -aedes -aegis -aeons -aerie -aeros -aesir -afald -afara -afars -afear -affix -afire -aflaj -afoot -afore -afoul -afrit -afros -after -again -agama -agami -agape -agars -agast -agate -agave -agaze -agene -agent -agers -agger -aggie -aggri -aggro -aggry -aghas -agila -agile -aging -agios -agism -agist -agita -aglee -aglet -agley -agloo -aglow -aglus -agmas -agoge -agone -agons -agony -agood -agora -agree -agria -agrin -agros -agued -agues -aguna -aguti -ahead -aheap -ahent -ahigh -ahind -ahing -ahint -ahold -ahull -ahuru -aidas -aided -aider -aides -aidoi -aidos -aiery -aigas -aight -ailed -aimed -aimer -ainee -ainga -aioli -aired -airer -airns -airth -airts -aisle -aitch -aitus -aiver -aiyee -aizle -ajies -ajiva -ajuga -ajwan -akees -akela -akene -aking -akita -akkas -alaap -alack -alamo -aland -alane -alang -alans -alant -alapa -alaps -alarm -alary -alate -alays -albas -albee -album -alcid -alcos -aldea -alder -aldol -aleck -alecs -alefs -aleft -aleph -alert -alews -aleye -alfas -algae -algal -algas -algid -algin -algor -algum -alias -alibi -alien -alifs -align -alike -aline -alist -alive -aliya -alkie -alkos -alkyd -alkyl -allay -allee -allel -alley -allis -allod -allot -allow -alloy -allyl -almah -almas -almeh -almes -almud -almug -alods -aloed -aloes -aloft -aloha -aloin -alone -along -aloof -aloos -aloud -alowe -alpha -altar -alter -altho -altos -alula -alums -alure -alvar -alway -amahs -amain -amass -amate -amaut -amaze -amban -amber -ambit -amble -ambos -ambry -ameba -ameer -amend -amene -amens -ament -amias -amice -amici -amide -amido -amids -amies -amiga -amigo -amine -amino -amins -amirs -amiss -amity -amlas -amman -ammon -ammos -amnia -amnic -amnio -amoks -amole -among -amort -amour -amove -amowt -amped -ample -amply -ampul -amrit -amuck -amuse -amyls -anana -anata -ancho -ancle -ancon -andro -anear -anele -anent -angas -angel -anger -angle -anglo -angry -angst -anigh -anile -anils -anima -anime -animi -anion -anise -anker -ankhs -ankle -ankus -anlas -annal -annas -annat -annex -annoy -annul -anoas -anode -anole -anomy -ansae -antae -antar -antas -anted -antes -antic -antis -antra -antre -antsy -anura -anvil -anyon -aorta -apace -apage -apaid -apart -apayd -apays -apeak -apeek -apers -apert -apery -apgar -aphid -aphis -apian -aping -apiol -apish -apism -apnea -apode -apods -apoop -aport -appal -appay -appel -apple -apply -appro -appui -appuy -apres -apron -apses -apsis -apsos -apted -apter -aptly -aquae -aquas -araba -araks -arame -arars -arbas -arbor -arced -archi -arcos -arcus -ardeb -ardor -ardri -aread -areae -areal -arear -areas -areca -aredd -arede -arefy -areic -arena -arene -arepa -arere -arete -arets -arett -argal -argan -argil -argle -argol -argon -argot -argue -argus -arhat -arias -ariel -ariki -arils -ariot -arise -arish -arked -arled -arles -armed -armer -armet -armil -armor -arnas -arnut -aroba -aroha -aroid -aroma -arose -arpas -arpen -arrah -arras -array -arret -arris -arrow -arroz -arsed -arses -arsey -arsis -arson -artal -artel -artic -artis -artsy -aruhe -arums -arval -arvee -arvos -aryls -asana -ascon -ascot -ascus -asdic -ashed -ashen -ashes -ashet -aside -asked -asker -askew -askoi -askos -aspen -asper -aspic -aspie -aspis -aspro -assai -assam -assay -asses -asset -assez -assot -aster -astir -astun -asura -asway -aswim -asyla -ataps -ataxy -atigi -atilt -atimy -atlas -atman -atmas -atmos -atocs -atoke -atoks -atoll -atoms -atomy -atone -atony -atopy -atria -atrip -attap -attar -attic -atuas -audad -audio -audit -auger -aught -augur -aulas -aulic -auloi -aulos -aumil -aunes -aunts -aunty -aurae -aural -aurar -auras -aurei -aures -auric -auris -aurum -autos -auxin -avail -avale -avant -avast -avels -avens -avers -avert -avgas -avian -avine -avion -avise -aviso -avize -avoid -avows -avyze -await -awake -award -aware -awarn -awash -awato -awave -aways -awdls -aweel -aweto -awful -awing -awmry -awned -awner -awoke -awols -awork -axels -axial -axile -axils -axing -axiom -axion -axite -axled -axles -axman -axmen -axoid -axone -axons -ayahs -ayaya -ayelp -aygre -ayins -ayont -ayres -ayrie -azans -azide -azido -azine -azlon -azoic -azole -azons -azote -azoth -azuki -azure -azurn -azury -azygy -azyme -azyms -baaed -baals -babas -babel -babes -babka -baboo -babul -babus -bacca -bacco -baccy -bacha -bachs -backs -bacon -baddy -badge -badly -baels -baffs -baffy -bafts -bagel -baggy -baghs -bagie -bahts -bahus -bahut -bails -bairn -baisa -baith -baits -baiza -baize -bajan -bajra -bajri -bajus -baked -baken -baker -bakes -bakra -balas -balds -baldy -baled -baler -bales -balks -balky -balls -bally -balms -balmy -baloo -balsa -balti -balun -balus -bambi -banak -banal -banco -bancs -banda -bandh -bands -bandy -baned -banes -bangs -bania -banjo -banks -banns -bants -bantu -banty -banya -bapus -barbe -barbs -barby -barca -barde -bardo -bards -bardy -bared -barer -bares -barfi -barfs -barge -baric -barks -barky -barms -barmy -barns -barny -baron -barps -barra -barre -barro -barry -barye -basal -basan -based -basen -baser -bases -basho -basic -basij -basil -basin -basis -basks -bason -basse -bassi -basso -bassy -basta -baste -basti -basto -basts -batch -bated -bates -bathe -baths -batik -baton -batta -batts -battu -batty -bauds -bauks -baulk -baurs -bavin -bawds -bawdy -bawks -bawls -bawns -bawrs -bawty -bayed -bayer -bayes -bayle -bayou -bayts -bazar -bazoo -beach -beads -beady -beaks -beaky -beals -beams -beamy -beano -beans -beany -beard -beare -bears -beast -beath -beats -beaty -beaus -beaut -beaux -bebop -becap -becke -becks -bedad -bedel -bedes -bedew -bedim -bedye -beech -beedi -beefs -beefy -beeps -beers -beery -beets -befit -befog -begad -began -begar -begat -begem -beget -begin -begot -begum -begun -beige -beigy -being -beins -bekah -belah -belar -belay -belch -belee -belga -belie -belle -bells -belly -belon -below -belts -bemad -bemas -bemix -bemud -bench -bends -bendy -benes -benet -benga -benis -benne -benni -benny -bento -bents -benty -bepat -beray -beres -beret -bergs -berko -berks -berme -berms -berob -berry -berth -beryl -besat -besaw -besee -beses -beset -besit -besom -besot -besti -bests -betas -beted -betel -betes -beths -betid -beton -betta -betty -bevel -bever -bevor -bevue -bevvy -bewet -bewig -bezel -bezes -bezil -bezzy -bhais -bhaji -bhang -bhats -bhels -bhoot -bhuna -bhuts -biach -biali -bialy -bibbs -bibes -bible -biccy -bicep -bices -biddy -bided -bider -bides -bidet -bidis -bidon -bield -biers -biffo -biffs -biffy -bifid -bigae -biggs -biggy -bigha -bight -bigly -bigos -bigot -bijou -biked -biker -bikes -bikie -bilbo -bilby -biled -biles -bilge -bilgy -bilks -bills -billy -bimah -bimas -bimbo -binal -bindi -binds -biner -bines -binge -bingo -bings -bingy -binit -binks -bints -biogs -biome -biont -biota -biped -bipod -birch -birds -birks -birle -birls -biros -birrs -birse -birsy -birth -bises -bisks -bisom -bison -bitch -biter -bites -bitos -bitou -bitsy -bitte -bitts -bitty -bivia -bivvy -bizes -bizzo -bizzy -blabs -black -blade -blads -blady -blaer -blaes -blaff -blags -blahs -blain -blame -blams -bland -blank -blare -blart -blase -blash -blast -blate -blats -blatt -blaud -blawn -blaws -blays -blaze -bleak -blear -bleat -blebs -blech -bleed -bleep -blees -blend -blent -blert -bless -blest -blets -bleys -blimp -blimy -blind -bling -blini -blink -blins -bliny -blips -bliss -blist -blite -blits -blitz -blive -bloat -blobs -block -blocs -blogs -bloke -blond -blood -blook -bloom -bloop -blore -blots -blown -blows -blowy -blubs -blude -bluds -bludy -blued -bluer -blues -bluet -bluey -bluff -bluid -blume -blunk -blunt -blurb -blurs -blurt -blush -blype -boabs -boaks -board -boars -boart -boast -boats -bobac -bobak -bobas -bobby -bobol -bobos -bocca -bocce -bocci -boche -bocks -boded -bodes -bodge -bodhi -bodle -boeps -boets -boeuf -boffo -boffs -bogan -bogey -boggy -bogie -bogle -bogue -bogus -bohea -bohos -boils -boing -boink -boite -boked -bokeh -bokes -bokos -bolar -bolas -bolds -boles -bolix -bolls -bolos -bolts -bolus -bomas -bombe -bombo -bombs -bonce -bonds -boned -boner -bones -boney -bongo -bongs -bonie -bonks -bonne -bonny -bonus -bonza -bonze -booai -booay -boobs -booby -boody -booed -boofy -boogy -boohs -books -booky -bools -booms -boomy -boong -boons -boord -boors -boose -boost -booth -boots -booty -booze -boozy -boppy -borak -boral -boras -borax -borde -bords -bored -boree -borel -borer -bores -borgo -boric -borks -borms -borna -borne -boron -borts -borty -bortz -bosie -bosks -bosky -bosom -boson -bossy -bosun -botas -botch -botel -botes -bothy -botte -botts -botty -bouge -bough -bouks -boule -boult -bound -bouns -bourd -bourg -bourn -bouse -bousy -bouts -bovid -bowat -bowed -bowel -bower -bowes -bowet -bowie -bowls -bowne -bowrs -bowse -boxed -boxen -boxer -boxes -boxla -boxty -boyar -boyau -boyed -boyfs -boygs -boyla -boyos -boysy -bozos -braai -brace -brach -brack -bract -brads -braes -brags -braid -brail -brain -brake -braks -braky -brame -brand -brane -brank -brans -brant -brash -brass -brast -brats -brava -brave -bravi -bravo -brawl -brawn -braws -braxy -brays -braza -braze -bread -break -bream -brede -breds -breed -breem -breer -brees -breid -breis -breme -brens -brent -brere -brers -breve -brews -breys -briar -bribe -brick -bride -brief -brier -bries -brigs -briki -briks -brill -brims -brine -bring -brink -brins -briny -brios -brise -brisk -briss -brith -brits -britt -brize -broad -broch -brock -brods -brogh -brogs -broil -broke -brome -bromo -bronc -brond -brood -brook -brool -broom -broos -brose -brosy -broth -brown -brows -brugh -bruin -bruit -brule -brume -brung -brunt -brush -brusk -brust -brute -bruts -buats -buaze -bubal -bubas -bubba -bubbe -bubby -bubus -buchu -bucko -bucks -bucku -budas -buddy -budge -budis -budos -buffa -buffe -buffi -buffo -buffs -buffy -bufos -bufty -buggy -bugle -buhls -buhrs -buiks -build -built -buist -bukes -bulbs -bulge -bulgy -bulks -bulky -bulla -bulls -bully -bulse -bumbo -bumfs -bumph -bumps -bumpy -bunas -bunce -bunch -bunco -bunde -bundh -bunds -bundt -bundu -bundy -bungs -bungy -bunia -bunje -bunjy -bunko -bunks -bunns -bunny -bunts -bunty -bunya -buoys -buppy -buran -buras -burbs -burds -buret -burfi -burgh -burgs -burin -burka -burke -burks -burls -burly -burns -burnt -buroo -burps -burqa -burro -burrs -burry -bursa -burse -burst -busby -bused -buses -bushy -busks -busky -bussu -busti -busts -busty -butch -buteo -butes -butle -butoh -butte -butts -butty -butut -butyl -buxom -buyer -buzzy -bwana -bwazi -byded -bydes -byked -bykes -bylaw -byres -byrls -byssi -bytes -byway -caaed -cabal -cabas -cabby -caber -cabin -cable -cabob -caboc -cabre -cacao -cacas -cache -cacks -cacky -cacti -caddy -cadee -cades -cadet -cadge -cadgy -cadie -cadis -cadre -caeca -caese -cafes -caffs -caged -cager -cages -cagey -cagot -cahow -caids -cains -caird -cairn -cajon -cajun -caked -cakes -cakey -calfs -calid -calif -calix -calks -calla -calls -calms -calmy -calos -calpa -calps -calve -calyx -caman -camas -camel -cameo -cames -camis -camos -campi -campo -camps -campy -camus -canal -candy -caned -caneh -caner -canes -cangs -canid -canna -canns -canny -canoe -canon -canso -canst -canto -cants -canty -capas -caped -caper -capes -capex -caphs -capiz -caple -capon -capos -capot -capri -capul -caput -carap -carat -carbo -carbs -carby -cardi -cards -cardy -cared -carer -cares -caret -carex -cargo -carks -carle -carls -carns -carny -carob -carol -carom -caron -carpi -carps -carrs -carry -carse -carta -carte -carts -carve -carvy -casas -casco -cased -cases -casks -casky -caste -casts -casus -catch -cater -cates -catty -cauda -cauks -cauld -caulk -cauls -caums -caups -cauri -causa -cause -cavas -caved -cavel -caver -caves -cavie -cavil -cawed -cawks -caxon -cease -ceaze -cebid -cecal -cecum -cedar -ceded -ceder -cedes -cedis -ceiba -ceili -ceils -celeb -cella -celli -cello -cells -celom -celts -cense -cento -cents -centu -ceorl -cepes -cerci -cered -ceres -cerge -ceria -ceric -cerne -ceroc -ceros -certs -certy -cesse -cesta -cesti -cetes -cetyl -cezve -chace -chack -chaco -chado -chads -chafe -chaff -chaft -chain -chair -chais -chalk -chals -champ -chams -chana -chang -chank -chant -chaos -chape -chaps -chapt -chara -chard -chare -chark -charm -charr -chars -chart -chary -chase -chasm -chats -chave -chavs -chawk -chaws -chaya -chays -cheap -cheat -check -cheek -cheep -cheer -chefs -cheka -chela -chelp -chemo -chems -chere -chert -chess -chest -cheth -chevy -chews -chewy -chiao -chias -chibs -chica -chich -chick -chico -chics -chide -chief -chiel -chiks -child -chile -chili -chill -chimb -chime -chimo -chimp -china -chine -ching -chink -chino -chins -chips -chirk -chirl -chirm -chiro -chirp -chirr -chirt -chiru -chits -chive -chivs -chivy -chizz -chock -choco -chocs -chode -chogs -choil -choir -choke -choko -choky -chola -choli -cholo -chomp -chons -choof -chook -choom -choon -chops -chord -chore -chose -chota -chott -chout -choux -chowk -chows -chubs -chuck -chufa -chuff -chugs -chump -chums -chunk -churl -churn -churr -chuse -chute -chuts -chyle -chyme -chynd -cibol -cided -cider -cides -ciels -cigar -ciggy -cilia -cills -cimar -cimex -cinch -cinct -cines -cinqs -cions -cippi -circa -circs -cires -cirls -cirri -cisco -cissy -cists -cital -cited -citer -cites -cives -civet -civic -civie -civil -civvy -clach -clack -clade -clads -claes -clags -claim -clame -clamp -clams -clang -clank -clans -claps -clapt -claro -clart -clary -clash -clasp -class -clast -clats -claut -clave -clavi -claws -clays -clean -clear -cleat -cleck -cleek -cleep -clefs -cleft -clegs -cleik -clems -clepe -clept -clerk -cleve -clews -click -clied -clies -cliff -clift -climb -clime -cline -cling -clink -clint -clipe -clips -clipt -clits -cloak -cloam -clock -clods -cloff -clogs -cloke -clomb -clomp -clone -clonk -clons -cloop -cloot -clops -close -clote -cloth -clots -cloud -clour -clous -clout -clove -clown -clows -cloye -cloys -cloze -clubs -cluck -clued -clues -cluey -clump -clung -clunk -clype -cnida -coach -coact -coady -coala -coals -coaly -coapt -coarb -coast -coate -coati -coats -cobbs -cobby -cobia -coble -cobra -cobza -cocas -cocci -cocco -cocks -cocky -cocoa -cocos -codas -codec -coded -coden -coder -codes -codex -codon -coeds -coffs -cogie -cogon -cogue -cohab -cohen -cohoe -cohog -cohos -coifs -coign -coils -coins -coirs -coits -coked -cokes -colas -colby -colds -coled -coles -coley -colic -colin -colls -colly -colog -colon -color -colts -colza -comae -comal -comas -combe -combi -combo -combs -comby -comer -comes -comet -comfy -comic -comix -comma -commo -comms -commy -compo -comps -compt -comte -comus -conch -condo -coned -cones -coney -confs -conga -conge -congo -conia -conic -conin -conks -conky -conne -conns -conte -conto -conus -convo -cooch -cooed -cooee -cooer -cooey -coofs -cooks -cooky -cools -cooly -coomb -cooms -coomy -coons -coops -coopt -coost -coots -cooze -copal -copay -coped -copen -coper -copes -coppy -copra -copse -copsy -coqui -coral -coram -corbe -corby -cords -cored -corer -cores -corey -corgi -coria -corks -corky -corms -corni -corno -corns -cornu -corny -corps -corse -corso -cosec -cosed -coses -coset -cosey -cosie -costa -coste -costs -cotan -coted -cotes -coths -cotta -cotts -couch -coude -cough -could -count -coupe -coups -courb -courd -coure -cours -court -couta -couth -coved -coven -cover -coves -covet -covey -covin -cowal -cowan -cowed -cower -cowks -cowls -cowps -cowry -coxae -coxal -coxed -coxes -coxib -coyau -coyed -coyer -coyly -coypu -cozed -cozen -cozes -cozey -cozie -craal -crabs -crack -craft -crags -craic -craig -crake -crame -cramp -crams -crane -crank -crans -crape -craps -crapy -crare -crash -crass -crate -crave -crawl -craws -crays -craze -crazy -creak -cream -credo -creds -creed -creek -creel -creep -crees -creme -crems -crena -crepe -creps -crept -crepy -cress -crest -crewe -crews -crias -cribs -crick -cried -crier -cries -crime -crimp -crims -crine -crios -cripe -crips -crise -crisp -crith -crits -croak -croci -crock -crocs -croft -crogs -cromb -crome -crone -cronk -crons -crony -crook -crool -croon -crops -crore -cross -crost -croup -crout -crowd -crown -crows -croze -cruck -crude -crudo -cruds -crudy -cruel -crues -cruet -cruft -crumb -crump -crunk -cruor -crura -cruse -crush -crust -crusy -cruve -crwth -cryer -crypt -ctene -cubby -cubeb -cubed -cuber -cubes -cubic -cubit -cuddy -cuffo -cuffs -cuifs -cuing -cuish -cuits -cukes -culch -culet -culex -culls -cully -culms -culpa -culti -cults -culty -cumec -cumin -cundy -cunei -cunit -cunts -cupel -cupid -cuppa -cuppy -curat -curbs -curch -curds -curdy -cured -curer -cures -curet -curfs -curia -curie -curio -curli -curls -curly -curns -curny -currs -curry -curse -cursi -curst -curve -curvy -cusec -cushy -cusks -cusps -cuspy -cusso -cusum -cutch -cuter -cutes -cutey -cutie -cutin -cutis -cutto -cutty -cutup -cuvee -cuzes -cwtch -cyano -cyans -cyber -cycad -cycas -cycle -cyclo -cyder -cylix -cymae -cymar -cymas -cymes -cymol -cynic -cysts -cytes -cyton -czars -daals -dabba -daces -dacha -dacks -dadah -dadas -daddy -dados -daffs -daffy -dagga -daggy -dagos -dahls -daiko -daily -daine -daint -dairy -daisy -daker -daled -dales -dalis -dalle -dally -dalts -daman -damar -dames -damme -damns -damps -dampy -dance -dancy -dandy -dangs -danio -danks -danny -dants -daraf -darbs -darcy -dared -darer -dares -darga -dargs -daric -daris -darks -darky -darns -darre -darts -darzi -dashi -dashy -datal -dated -dater -dates -datos -datto -datum -daube -daubs -dauby -dauds -dault -daunt -daurs -dauts -daven -davit -dawah -dawds -dawed -dawen -dawks -dawns -dawts -dayan -daych -daynt -dazed -dazer -dazes -deads -deair -deals -dealt -deans -deare -dearn -dears -deary -deash -death -deave -deaws -deawy -debag -debar -debby -debel -debes -debit -debts -debud -debug -debur -debus -debut -debye -decad -decaf -decal -decan -decay -decko -decks -decor -decos -decoy -decry -dedal -deeds -deedy -deely -deems -deens -deeps -deere -deers -deets -deeve -deevs -defat -defer -deffo -defis -defog -degas -degum -degus -deice -deids -deify -deign -deils -deism -deist -deity -deked -dekes -dekko -delay -deled -deles -delfs -delft -delis -dells -delly -delos -delph -delta -delts -delve -deman -demes -demic -demit -demob -demoi -demon -demos -dempt -demur -denar -denay -dench -denes -denet -denim -denis -dense -dents -deoxy -depot -depth -derat -deray -derby -dered -deres -derig -derma -derms -derns -derny -deros -derro -derry -derth -dervs -desex -deshi -desis -desks -desse -deter -detox -deuce -devas -devel -devil -devis -devon -devos -devot -dewan -dewar -dewax -dewed -dexes -dexie -dhaba -dhaks -dhals -dhikr -dhobi -dhole -dholl -dhols -dhoti -dhows -dhuti -diact -dials -diane -diary -diazo -dibbs -diced -dicer -dices -dicey -dicht -dicks -dicky -dicot -dicta -dicts -dicty -diddy -didie -didos -didst -diebs -diels -diene -diets -diffs -dight -digit -dikas -diked -diker -dikes -dikey -dildo -dilli -dills -dilly -dimbo -dimer -dimes -dimly -dimps -dinar -dined -diner -dines -dinge -dingo -dings -dingy -dinic -dinks -dinky -dinna -dinos -dints -diode -diols -diota -dippy -dipso -diram -direr -dirge -dirke -dirks -dirls -dirts -dirty -disas -disci -disco -discs -dishy -disks -disme -dital -ditas -ditch -dited -dites -ditsy -ditto -ditts -ditty -ditzy -divan -divas -dived -diver -dives -divis -divna -divos -divot -divvy -diwan -dixie -dixit -diyas -dizen -dizzy -djinn -djins -doabs -doats -dobby -dobes -dobie -dobla -dobra -dobro -docht -docks -docos -docus -doddy -dodge -dodgy -dodos -doeks -doers -doest -doeth -doffs -dogan -doges -dogey -doggo -doggy -dogie -dogma -dohyo -doilt -doily -doing -doits -dojos -dolce -dolci -doled -doles -dolia -dolls -dolly -dolma -dolor -dolos -dolts -domal -domed -domes -domic -donah -donas -donee -doner -donga -dongs -donko -donna -donne -donny -donor -donsy -donut -doobs -dooce -doody -dooks -doole -dools -dooly -dooms -doomy -doona -doorn -doors -doozy -dopas -doped -doper -dopes -dopey -dorad -dorba -dorbs -doree -dores -doric -doris -dorks -dorky -dorms -dormy -dorps -dorrs -dorsa -dorse -dorts -dorty -dosai -dosas -dosed -doseh -doser -doses -dosha -dotal -doted -doter -dotes -dotty -douar -doubt -douce -doucs -dough -douks -doula -douma -doums -doups -doura -douse -douts -doved -doven -dover -doves -dovie -dowar -dowds -dowdy -dowed -dowel -dower -dowie -dowle -dowls -dowly -downa -downs -downy -dowps -dowry -dowse -dowts -doxed -doxes -doxie -doyen -doyly -dozed -dozen -dozer -dozes -drabs -drack -draco -draff -draft -drags -drail -drain -drake -drama -drams -drank -drant -drape -draps -drats -drave -drawl -drawn -draws -drays -dread -dream -drear -dreck -dreed -dreer -drees -dregs -dreks -drent -drere -dress -drest -dreys -dribs -drice -dried -drier -dries -drift -drill -drily -drink -drips -dript -drive -droid -droil -droit -droke -drole -droll -drome -drone -drony -droob -droog -drook -drool -droop -drops -dropt -dross -drouk -drove -drown -drows -drubs -drugs -druid -drums -drunk -drupe -druse -drusy -druxy -dryad -dryas -dryer -dryly -dsobo -dsomo -duads -duals -duans -duars -dubbo -ducal -ducat -duces -duchy -ducks -ducky -ducts -duddy -duded -dudes -duels -duets -duett -duffs -dufus -duing -duits -dukas -duked -dukes -dukka -dulce -dules -dulia -dulls -dully -dulse -dumas -dumbo -dumbs -dumka -dumky -dummy -dumps -dumpy -dunam -dunce -dunch -dunes -dungs -dungy -dunks -dunno -dunny -dunsh -dunts -duomi -duomo -duped -duper -dupes -duple -duply -duppy -dural -duras -dured -dures -durgy -durns -duroc -duros -duroy -durra -durrs -durry -durst -durum -durzi -dusks -dusky -dusts -dusty -dutch -duvet -duxes -dwaal -dwale -dwalm -dwams -dwang -dwarf -dwaum -dweeb -dwell -dwelt -dwile -dwine -dyads -dyers -dying -dyked -dykes -dykey -dykon -dynel -dynes -dzhos -eager -eagle -eagre -ealed -eales -eaned -eards -eared -earls -early -earns -earnt -earst -earth -eased -easel -easer -eases -easle -easts -eaten -eater -eathe -eaved -eaves -ebbed -ebbet -ebons -ebony -ebook -ecads -eched -eches -echos -eclat -ecrus -edema -edged -edger -edges -edict -edify -edile -edits -educe -educt -eejit -eensy -eerie -eeven -eevns -effed -egads -egers -egest -eggar -egged -egger -egmas -egret -ehing -eider -eidos -eight -eigne -eiked -eikon -eilds -eisel -eject -ejido -eking -ekkas -elain -eland -elans -elate -elbow -elchi -elder -eldin -elect -elegy -elemi -elfed -elfin -eliad -elide -elint -elite -elmen -eloge -elogy -eloin -elope -elops -elpee -elsin -elude -elute -elvan -elven -elver -elves -emacs -email -embar -embay -embed -ember -embog -embow -embox -embus -emcee -emeer -emend -emerg -emery -emeus -emics -emirs -emits -emmas -emmer -emmet -emmew -emmys -emoji -emong -emote -emove -empts -empty -emule -emure -emyde -emyds -enact -enarm -enate -ended -ender -endew -endow -endue -enema -enemy -enews -enfix -eniac -enjoy -enlit -enmew -ennog -ennui -enoki -enols -enorm -enows -enrol -ensew -ensky -ensue -enter -entia -entry -enure -enurn -envoi -envoy -enzym -eorls -eosin -epact -epees -ephah -ephas -ephod -ephor -epics -epoch -epode -epopt -epoxy -epris -equal -eques -equid -equip -erase -erbia -erect -erevs -ergon -ergos -ergot -erhus -erica -erick -erics -ering -erned -ernes -erode -erose -erred -error -erses -eruct -erugo -erupt -eruvs -erven -ervil -escar -escot -esile -eskar -esker -esnes -essay -esses -ester -estoc -estop -estro -etage -etape -etats -etens -ethal -ether -ethic -ethne -ethos -ethyl -etics -etnas -ettin -ettle -etude -etuis -etwee -etyma -eughs -euked -eupad -euros -eusol -evade -evens -event -evert -every -evets -evhoe -evict -evils -evite -evohe -evoke -ewers -ewest -ewhow -ewked -exact -exalt -exams -excel -exeat -execs -exeem -exeme -exert -exfil -exies -exile -exine -exing -exist -exits -exode -exome -exons -expat -expel -expos -extol -extra -exude -exuls -exult -exurb -eyass -eyers -eying -eyots -eyras -eyres -eyrie -eyrir -ezine -fabby -fable -faced -facer -faces -facet -facia -facta -facts -faddy -faded -fader -fades -fadge -fados -faena -faery -faffs -faffy -faggy -fagin -fagot -faiks -fails -faine -fains -faint -fairs -fairy -faith -faked -faker -fakes -fakey -fakie -fakir -falaj -falls -false -famed -fames -fanal -fancy -fands -fanes -fanga -fango -fangs -fanks -fanny -fanon -fanos -fanum -faqir -farad -farce -farci -farcy -fards -fared -farer -fares -farle -farls -farms -faros -farro -farse -farts -fasci -fasti -fasts -fatal -fated -fates -fatly -fatso -fatty -fatwa -faugh -fauld -fault -fauna -fauns -faurd -fauts -fauve -favas -favel -faver -faves -favor -favus -fawns -fawny -faxed -faxes -fayed -fayer -fayne -fayre -fazed -fazes -feals -feare -fears -feart -fease -feast -feats -feaze -fecal -feces -fecht -fecit -fecks -fedex -feebs -feeds -feels -feens -feers -feese -feeze -fehme -feign -feint -feist -felch -felid -fella -fells -felly -felon -felts -felty -femal -femes -femme -femmy -femur -fence -fends -fendy -fenis -fenks -fenny -fents -feods -feoff -feral -ferer -feres -feria -ferly -fermi -ferms -ferns -ferny -ferry -fesse -festa -fests -festy -fetal -fetas -fetch -feted -fetes -fetid -fetor -fetta -fetts -fetus -fetwa -feuar -feuds -feued -fever -fewer -feyed -feyer -feyly -fezes -fezzy -fiars -fiats -fiber -fibre -fibro -fices -fiche -fichu -ficin -ficos -ficus -fides -fidge -fidos -fiefs -field -fiend -fient -fiere -fiers -fiery -fiest -fifed -fifer -fifes -fifis -fifth -fifty -figgy -fight -figos -fiked -fikes -filar -filch -filed -filer -files -filet -filii -filks -fille -fillo -fills -filly -filmi -films -filmy -filos -filth -filum -final -finca -finch -finds -fined -finer -fines -finis -finks -finny -finos -fiord -fiqhs -fique -fired -firer -fires -firie -firks -firms -firns -firry -first -firth -fiscs -fishy -fisks -fists -fisty -fitch -fitly -fitna -fitte -fitts -fiver -fives -fixed -fixer -fixes -fixit -fizzy -fjeld -fjord -flabs -flack -flaff -flags -flail -flair -flake -flaks -flaky -flame -flamm -flams -flamy -flane -flank -flans -flaps -flare -flary -flash -flask -flats -flava -flawn -flaws -flawy -flaxy -flays -fleam -fleas -fleck -fleek -fleer -flees -fleet -flegs -fleme -flesh -fleur -flews -flexi -flexo -fleys -flick -flics -flied -flier -flies -flimp -flims -fling -flint -flips -flirs -flirt -flisk -flite -flits -flitt -float -flobs -flock -flocs -floes -flogs -flong -flood -floor -flops -flora -flors -flory -flosh -floss -flota -flote -flour -flout -flown -flows -flubs -flued -flues -fluey -fluff -fluid -fluke -fluky -flume -flump -flung -flunk -fluor -flurr -flush -flute -fluty -fluyt -flyby -flyer -flype -flyte -foals -foams -foamy -focal -focus -foehn -fogey -foggy -fogie -fogle -fogou -fohns -foids -foils -foins -foist -folds -foley -folia -folic -folie -folio -folks -folky -folly -fomes -fonda -fonds -fondu -fones -fonly -fonts -foods -foody -fools -foots -footy -foram -foray -forbs -forby -force -fordo -fords -forel -fores -forex -forge -forgo -forks -forky -forme -forms -forte -forth -forts -forty -forum -forza -forze -fossa -fosse -fouat -fouds -fouer -fouet -foule -fouls -found -fount -fours -fouth -fovea -fowls -fowth -foxed -foxes -foxie -foyer -foyle -foyne -frabs -frack -fract -frags -frail -fraim -frame -franc -frank -frape -fraps -frass -frate -frati -frats -fraud -fraus -frays -freak -freed -freer -frees -freet -freit -fremd -frena -freon -frere -fresh -frets -friar -fribs -fried -frier -fries -frigs -frill -frise -frisk -frist -frith -frits -fritt -fritz -frize -frizz -frock -froes -frogs -frond -frons -front -frore -frorn -frory -frosh -frost -froth -frown -frows -frowy -froze -frugs -fruit -frump -frush -frust -fryer -fubar -fubby -fubsy -fucks -fucus -fuddy -fudge -fudgy -fuels -fuero -fuffs -fuffy -fugal -fuggy -fugie -fugio -fugle -fugly -fugue -fugus -fujis -fulls -fully -fumed -fumer -fumes -fumet -fundi -funds -fundy -fungi -fungo -fungs -funks -funky -funny -fural -furan -furca -furls -furol -furor -furrs -furry -furth -furze -furzy -fused -fusee -fusel -fuses -fusil -fusks -fussy -fusts -fusty -futon -fuzed -fuzee -fuzes -fuzil -fuzzy -fyces -fyked -fykes -fyles -fyrds -fytte -gabba -gabby -gable -gaddi -gades -gadge -gadid -gadis -gadje -gadjo -gadso -gaffe -gaffs -gaged -gager -gages -gaids -gaily -gains -gairs -gaita -gaits -gaitt -gajos -galah -galas -galax -galea -galed -gales -galls -gally -galop -galut -galvo -gamas -gamay -gamba -gambe -gambo -gambs -gamed -gamer -games -gamey -gamic -gamin -gamma -gamme -gammy -gamps -gamut -ganch -gandy -ganef -ganev -gangs -ganja -ganof -gants -gaols -gaped -gaper -gapes -gapos -gappy -garbe -garbo -garbs -garda -gares -garis -garms -garni -garre -garth -garum -gases -gasps -gaspy -gassy -gasts -gatch -gated -gater -gates -gaths -gator -gauch -gaucy -gauds -gaudy -gauge -gauje -gault -gaums -gaumy -gaunt -gaups -gaurs -gauss -gauze -gauzy -gavel -gavot -gawcy -gawds -gawks -gawky -gawps -gawsy -gayal -gayer -gayly -gazal -gazar -gazed -gazer -gazes -gazon -gazoo -geals -geans -geare -gears -geats -gebur -gecko -gecks -geeks -geeky -geeps -geese -geest -geist -geits -gelds -gelee -gelid -gelly -gelts -gemel -gemma -gemmy -gemot -genal -genas -genes -genet -genic -genie -genii -genip -genny -genoa -genom -genre -genro -gents -genty -genua -genus -geode -geoid -gerah -gerbe -geres -gerle -germs -germy -gerne -gesse -gesso -geste -gests -getas -getup -geums -geyan -geyer -ghast -ghats -ghaut -ghazi -ghees -ghest -ghost -ghoul -ghyll -giant -gibed -gibel -giber -gibes -gibli -gibus -giddy -gifts -gigas -gighe -gigot -gigue -gilas -gilds -gilet -gills -gilly -gilpy -gilts -gimel -gimme -gimps -gimpy -ginch -ginge -gings -ginks -ginny -ginzo -gipon -gippo -gippy -gipsy -girds -girls -girly -girns -giron -giros -girrs -girsh -girth -girts -gismo -gisms -gists -gitch -gites -giust -gived -given -giver -gives -gizmo -glace -glade -glads -glady -glaik -glair -glams -gland -glans -glare -glary -glass -glaum -glaur -glaze -glazy -gleam -glean -gleba -glebe -gleby -glede -gleds -gleed -gleek -glees -gleet -gleis -glens -glent -gleys -glial -glias -glibs -glide -gliff -glift -glike -glime -glims -glint -glisk -glits -glitz -gloam -gloat -globe -globi -globs -globy -glode -glogg -gloms -gloom -gloop -glops -glory -gloss -glost -glout -glove -glows -gloze -glued -gluer -glues -gluey -glugs -glume -glums -gluon -glute -gluts -glyph -gnarl -gnarr -gnars -gnash -gnats -gnawn -gnaws -gnome -gnows -goads -goafs -goals -goary -goats -goaty -goban -gobar -gobbi -gobbo -gobby -gobis -gobos -godet -godly -godso -goels -goers -goest -goeth -goety -gofer -goffs -gogga -gogos -goier -going -gojis -golds -goldy -golem -goles -golfs -golly -golpe -golps -gombo -gomer -gompa -gonad -gonch -gonef -goner -gongs -gonia -gonif -gonks -gonna -gonof -gonys -gonzo -gooby -goods -goody -gooey -goofs -goofy -googs -gooks -gooky -goold -gools -gooly -goons -goony -goops -goopy -goors -goory -goose -goosy -gopak -gopik -goral -goras -gored -gores -gorge -goris -gorms -gormy -gorps -gorse -gorsy -gosht -gosse -gotch -goths -gothy -gotta -gouch -gouge -gouks -goura -gourd -gouts -gouty -gowan -gowds -gowfs -gowks -gowls -gowns -goxes -goyim -goyle -graal -grabs -grace -grade -grads -graff -graft -grail -grain -graip -grama -grame -gramp -grams -grana -grand -grans -grant -grape -graph -grapy -grasp -grass -grate -grave -gravs -gravy -grays -graze -great -grebe -grebo -grece -greed -greek -green -grees -greet -grege -grego -grein -grens -grese -greve -grews -greys -grice -gride -grids -grief -griff -grift -grigs -grike -grill -grime -grimy -grind -grins -griot -gripe -grips -gript -gripy -grise -grist -grisy -grith -grits -grize -groan -groat -grody -grogs -groin -groks -groma -grone -groof -groom -grope -gross -grosz -grots -grouf -group -grout -grove -grovy -growl -grown -grows -grrls -grrrl -grubs -grued -gruel -grues -grufe -gruff -grume -grump -grund -grunt -gryce -gryde -gryke -grype -grypt -guaco -guana -guano -guans -guard -guars -guava -gucks -gucky -gudes -guess -guest -guffs -gugas -guide -guids -guild -guile -guilt -guimp -guiro -guise -gulag -gular -gulas -gulch -gules -gulet -gulfs -gulfy -gulls -gully -gulph -gulps -gulpy -gumbo -gumma -gummi -gummy -gumps -gundy -gunge -gungy -gunks -gunky -gunny -guppy -guqin -gurdy -gurge -gurls -gurly -gurns -gurry -gursh -gurus -gushy -gusla -gusle -gusli -gussy -gusto -gusts -gusty -gutsy -gutta -gutty -guyed -guyle -guyot -guyse -gwine -gyals -gyans -gybed -gybes -gyeld -gymps -gynae -gynie -gynny -gynos -gyoza -gypos -gyppo -gyppy -gypsy -gyral -gyred -gyres -gyron -gyros -gyrus -gytes -gyved -gyves -haafs -haars -habit -hable -habus -hacek -hacks -hadal -haded -hades -hadji -hadst -haems -haets -haffs -hafiz -hafts -haggs -hahas -haick -haika -haiks -haiku -hails -haily -hains -haint -hairs -hairy -haith -hajes -hajis -hajji -hakam -hakas -hakea -hakes -hakim -hakus -halal -haled -haler -hales -halfa -halfs -halid -hallo -halls -halma -halms -halon -halos -halse -halts -halva -halve -halwa -hamal -hamba -hamed -hames -hammy -hamza -hanap -hance -hanch -hands -handy -hangi -hangs -hanks -hanky -hansa -hanse -hants -haole -haoma -hapax -haply -happi -happy -hapus -haram -hards -hardy -hared -harem -hares -harim -harks -harls -harms -harns -haros -harps -harpy -harry -harsh -harts -hashy -hasks -hasps -hasta -haste -hasty -hatch -hated -hater -hates -hatha -hauds -haufs -haugh -hauld -haulm -hauls -hault -hauns -haunt -hause -haute -haven -haver -haves -havoc -hawed -hawks -hawms -hawse -hayed -hayer -hayey -hayle -hazan -hazed -hazel -hazer -hazes -heads -heady -heald -heals -heame -heaps -heapy -heard -heare -hears -heart -heast -heath -heats -heave -heavy -heben -hebes -hecht -hecks -heder -hedge -hedgy -heeds -heedy -heels -heeze -hefte -hefts -hefty -heids -heigh -heils -heirs -heist -hejab -hejra -heled -heles -helio -helix -hello -hells -helms -helos -helot -helps -helve -hemal -hemes -hemic -hemin -hemps -hempy -hence -hench -hends -henge -henna -henny -henry -hents -hepar -herbs -herby -herds -heres -herls -herma -herms -herns -heron -heros -herry -herse -hertz -herye -hesps -hests -hetes -heths -heuch -heugh -hevea -hewed -hewer -hewgh -hexad -hexed -hexer -hexes -hexyl -heyed -hiant -hicks -hided -hider -hides -hiems -highs -hight -hijab -hijra -hiked -hiker -hikes -hikoi -hilar -hilch -hillo -hills -hilly -hilts -hilum -hilus -himbo -hinau -hinds -hinge -hings -hinky -hinny -hints -hiois -hiply -hippo -hippy -hired -hiree -hirer -hires -hissy -hists -hitch -hithe -hived -hiver -hives -hizen -hoaed -hoagy -hoard -hoars -hoary -hoast -hobby -hobos -hocks -hocus -hodad -hodja -hoers -hogan -hogen -hoggs -hoghs -hohed -hoick -hoied -hoiks -hoing -hoise -hoist -hokas -hoked -hokes -hokey -hokis -hokku -hokum -holds -holed -holes -holey -holks -holla -hollo -holly -holme -holms -holon -holos -holts -homas -homed -homer -homes -homey -homie -homme -homos -honan -honda -honds -honed -honer -hones -honey -hongi -hongs -honks -honky -honor -hooch -hoods -hoody -hooey -hoofs -hooka -hooks -hooky -hooly -hoons -hoops -hoord -hoors -hoosh -hoots -hooty -hoove -hopak -hoped -hoper -hopes -hoppy -horah -horal -horas -horde -horis -horks -horme -horns -horny -horse -horst -horsy -hosed -hosel -hosen -hoser -hoses -hosey -hosta -hosts -hotch -hotel -hoten -hotly -hotty -houff -houfs -hough -hound -houri -hours -house -houts -hovea -hoved -hovel -hoven -hover -hoves -howbe -howdy -howes -howff -howfs -howks -howls -howre -howso -hoxed -hoxes -hoyas -hoyed -hoyle -hubby -hucks -hudna -hudud -huers -huffs -huffy -huger -huggy -huhus -huias -hulas -hules -hulks -hulky -hullo -hulls -hully -human -humas -humfs -humic -humid -humor -humph -humps -humpy -humus -hunch -hunks -hunky -hunts -hurds -hurls -hurly -hurra -hurry -hurst -hurts -hushy -husks -husky -husos -hussy -hutch -hutia -huzza -huzzy -hwyls -hydra -hydro -hyena -hyens -hygge -hying -hykes -hylas -hyleg -hyles -hylic -hymen -hymns -hynde -hyoid -hyped -hyper -hypes -hypha -hyphy -hypos -hyrax -hyson -hythe -iambi -iambs -ibrik -icers -iched -iches -ichor -icier -icily -icing -icker -ickle -icons -ictal -ictic -ictus -idant -ideal -ideas -idees -ident -idiom -idiot -idled -idler -idles -idola -idols -idyll -idyls -iftar -igapo -igged -igloo -iglus -ihram -ikans -ikats -ikons -ileac -ileal -ileum -ileus -iliac -iliad -ilial -ilium -iller -illth -image -imago -imams -imari -imaum -imbar -imbed -imbue -imide -imido -imids -imine -imino -immew -immit -immix -imped -impel -impis -imply -impot -impro -imshi -imshy -inane -inapt -inarm -inbox -inbye -incel -incle -incog -incur -incus -incut -indew -index -india -indie -indol -indow -indri -indue -inept -inerm -inert -infer -infix -infos -infra -ingan -ingle -ingot -inion -inked -inker -inkle -inlay -inlet -inned -inner -innit -inorb -input -inrun -inset -inspo -intel -inter -intil -intis -intra -intro -inula -inure -inurn -inust -invar -inwit -iodic -iodid -iodin -ionic -iotas -ippon -irade -irate -irids -iring -irked -iroko -irone -irons -irony -isbas -ishes -isled -isles -islet -isnae -issei -issue -istle -itchy -items -ither -ivied -ivies -ivory -ixias -ixnay -ixora -ixtle -izard -izars -izzat -jaaps -jabot -jacal -jacks -jacky -jaded -jades -jafas -jaffa -jagas -jager -jaggs -jaggy -jagir -jagra -jails -jaker -jakes -jakey -jalap -jalop -jambe -jambo -jambs -jambu -james -jammy -jamon -janes -janns -janny -janty -japan -japed -japer -japes -jarks -jarls -jarps -jarta -jarul -jasey -jaspe -jasps -jatos -jauks -jaunt -jaups -javas -javel -jawan -jawed -jaxie -jazzy -jeans -jeats -jebel -jedis -jeels -jeely -jeeps -jeers -jeeze -jefes -jeffs -jehad -jehus -jelab -jello -jells -jelly -jembe -jemmy -jenny -jeons -jerid -jerks -jerky -jerry -jesse -jests -jesus -jetes -jeton -jetty -jeune -jewed -jewel -jewie -jhala -jiaos -jibba -jibbs -jibed -jiber -jibes -jiffs -jiffy -jiggy -jigot -jihad -jills -jilts -jimmy -jimpy -jingo -jinks -jinne -jinni -jinns -jirds -jirga -jirre -jisms -jived -jiver -jives -jivey -jnana -jobed -jobes -jocko -jocks -jocky -jocos -jodel -joeys -johns -joins -joint -joist -joked -joker -jokes -jokey -jokol -joled -joles -jolls -jolly -jolts -jolty -jomon -jomos -jones -jongs -jonty -jooks -joram -jorum -jotas -jotty -jotun -joual -jougs -jouks -joule -jours -joust -jowar -jowed -jowls -jowly -joyed -jubas -jubes -jucos -judas -judge -judgy -judos -jugal -jugum -juice -juicy -jujus -juked -jukes -jukus -julep -jumar -jumbo -jumby -jumps -jumpy -junco -junks -junky -junta -junto -jupes -jupon -jural -jurat -jurel -jures -juror -justs -jutes -jutty -juves -juvie -kaama -kabab -kabar -kabob -kacha -kacks -kadai -kades -kadis -kafir -kagos -kagus -kahal -kaiak -kaids -kaies -kaifs -kaika -kaiks -kails -kaims -kaing -kains -kakas -kakis -kalam -kales -kalif -kalis -kalpa -kamas -kames -kamik -kamis -kamme -kanae -kanas -kandy -kaneh -kanes -kanga -kangs -kanji -kants -kanzu -kaons -kapas -kaphs -kapok -kapow -kappa -kapus -kaput -karas -karat -karks -karma -karns -karoo -karos -karri -karst -karsy -karts -karzy -kasha -kasme -katal -katas -katis -katti -kaugh -kauri -kauru -kaury -kaval -kavas -kawas -kawau -kawed -kayak -kayle -kayos -kazis -kazoo -kbars -kebab -kebar -kebob -kecks -kedge -kedgy -keech -keefs -keeks -keels -keema -keeno -keens -keeps -keets -keeve -kefir -kehua -keirs -kelep -kelim -kells -kelly -kelps -kelpy -kelts -kelty -kembo -kembs -kemps -kempt -kempy -kenaf -kench -kendo -kenos -kente -kents -kepis -kerbs -kerel -kerfs -kerky -kerma -kerne -kerns -keros -kerry -kerve -kesar -kests -ketas -ketch -ketes -ketol -kevel -kevil -kexes -keyed -keyer -khadi -khafs -khaki -khans -khaph -khats -khaya -khazi -kheda -kheth -khets -khoja -khors -khoum -khuds -kiaat -kiack -kiang -kibbe -kibbi -kibei -kibes -kibla -kicks -kicky -kiddo -kiddy -kidel -kidge -kiefs -kiers -kieve -kievs -kight -kikes -kikoi -kiley -kilim -kills -kilns -kilos -kilps -kilts -kilty -kimbo -kinas -kinda -kinds -kindy -kines -kings -kinin -kinks -kinky -kinos -kiore -kiosk -kipes -kippa -kipps -kirby -kirks -kirns -kirri -kisan -kissy -kists -kited -kiter -kites -kithe -kiths -kitty -kitul -kivas -kiwis -klang -klaps -klett -klick -klieg -kliks -klong -kloof -kluge -klutz -knack -knags -knaps -knarl -knars -knaur -knave -knawe -knead -kneed -kneel -knees -knell -knelt -knife -knish -knits -knive -knobs -knock -knoll -knops -knosp -knots -knout -knowe -known -knows -knubs -knurl -knurr -knurs -knuts -koala -koans -koaps -koban -kobos -koels -koffs -kofta -kogal -kohas -kohen -kohls -koine -kojis -kokam -kokas -koker -kokra -kokum -kolas -kolos -kombu -konbu -kondo -konks -kooks -kooky -koori -kopek -kophs -kopje -koppa -korai -koras -korat -kores -korma -koros -korun -korus -koses -kotch -kotos -kotow -koura -kraal -krabs -kraft -krais -krait -krang -krans -kranz -kraut -krays -kreep -kreng -krewe -krill -krona -krone -kroon -krubi -krunk -ksars -kubie -kudos -kudus -kudzu -kufis -kugel -kuias -kukri -kukus -kulak -kulan -kulas -kulfi -kumis -kumys -kuris -kurre -kurta -kurus -kusso -kutas -kutch -kutis -kutus -kuzus -kvass -kvell -kwela -kyack -kyaks -kyang -kyars -kyats -kybos -kydst -kyles -kylie -kylin -kylix -kyloe -kynde -kynds -kypes -kyrie -kytes -kythe -laari -labda -label -labia -labis -labor -labra -laced -lacer -laces -lacet -lacey -lacks -laddy -laded -laden -lader -lades -ladle -laers -laevo -lagan -lager -lahal -lahar -laich -laics -laids -laigh -laika -laiks -laird -lairs -lairy -laith -laity -laked -laker -lakes -lakhs -lakin -laksa -laldy -lalls -lamas -lambs -lamby -lamed -lamer -lames -lamia -lammy -lamps -lanai -lanas -lance -lanch -lande -lands -lanes -lanks -lanky -lants -lapel -lapin -lapis -lapje -lapse -larch -lards -lardy -laree -lares -large -largo -laris -larks -larky -larns -larnt -larum -larva -lased -laser -lases -lassi -lasso -lassu -lassy -lasts -latah -latch -lated -laten -later -latex -lathe -lathi -laths -lathy -latke -latte -latus -lauan -lauch -lauds -laufs -laugh -laund -laura -laval -lavas -laved -laver -laves -lavra -lavvy -lawed -lawer -lawin -lawks -lawns -lawny -laxed -laxer -laxes -laxly -layed -layer -layin -layup -lazar -lazed -lazes -lazos -lazzi -lazzo -leach -leads -leady -leafs -leafy -leaks -leaky -leams -leans -leant -leany -leaps -leapt -leare -learn -lears -leary -lease -leash -least -leats -leave -leavy -leaze -leben -leccy -ledes -ledge -ledgy -ledum -leear -leech -leeks -leeps -leers -leery -leese -leets -leeze -lefte -lefts -lefty -legal -leger -leges -legge -leggo -leggy -legit -lehrs -lehua -leirs -leish -leman -lemed -lemel -lemes -lemma -lemme -lemon -lemur -lends -lenes -lengs -lenis -lenos -lense -lenti -lento -leone -leper -lepid -lepra -lepta -lered -leres -lerps -lesbo -leses -lests -letch -lethe -letup -leuch -leuco -leuds -leugh -levas -levee -level -lever -leves -levin -levis -lewis -lexes -lexis -lezes -lezza -lezzy -liana -liane -liang -liard -liars -liart -libel -liber -libra -libri -lichi -licht -licit -licks -lidar -lidos -liefs -liege -liens -liers -lieus -lieve -lifer -lifes -lifts -ligan -liger -ligge -light -ligne -liked -liken -liker -likes -likin -lilac -lills -lilos -lilts -liman -limas -limax -limba -limbi -limbo -limbs -limby -limed -limen -limes -limey -limit -limma -limns -limos -limpa -limps -linac -linch -linds -lindy -lined -linen -liner -lines -liney -linga -lingo -lings -lingy -linin -links -linky -linns -linny -linos -lints -linty -linum -linux -lions -lipas -lipes -lipid -lipin -lipos -lippy -liras -lirks -lirot -lisks -lisle -lisps -lists -litai -litas -lited -liter -lites -lithe -litho -liths -litre -lived -liven -liver -lives -livid -livor -livre -llama -llano -loach -loads -loafs -loams -loamy -loans -loast -loath -loave -lobar -lobby -lobed -lobes -lobos -lobus -local -loche -lochs -locie -locis -locks -locos -locum -locus -loden -lodes -lodge -loess -lofts -lofty -logan -loges -loggy -logia -logic -logie -login -logoi -logon -logos -lohan -loids -loins -loipe -loirs -lokes -lolls -lolly -lolog -lomas -lomed -lomes -loner -longa -longe -longs -looby -looed -looey -loofa -loofs -looie -looks -looky -looms -loons -loony -loops -loopy -loord -loose -loots -loped -loper -lopes -loppy -loral -loran -lords -lordy -lorel -lores -loric -loris -lorry -losed -losel -losen -loser -loses -lossy -lotah -lotas -lotes -lotic -lotos -lotsa -lotta -lotte -lotto -lotus -loued -lough -louie -louis -louma -lound -louns -loupe -loups -loure -lours -loury -louse -lousy -louts -lovat -loved -lover -loves -lovey -lovie -lowan -lowed -lower -lowes -lowly -lownd -lowne -lowns -lowps -lowry -lowse -lowts -loxed -loxes -loyal -lozen -luach -luaus -lubed -lubes -lubra -luces -lucid -lucks -lucky -lucre -ludes -ludic -ludos -luffa -luffs -luged -luger -luges -lulls -lulus -lumas -lumbi -lumen -lumme -lummy -lumps -lumpy -lunar -lunas -lunch -lunes -lunet -lunge -lungi -lungs -lunks -lunts -lupin -lupus -lurch -lured -lurer -lures -lurex -lurgi -lurgy -lurid -lurks -lurry -lurve -luser -lushy -lusks -lusts -lusty -lusus -lutea -luted -luter -lutes -luvvy -luxed -luxer -luxes -lweis -lyams -lyard -lyart -lyase -lycea -lycee -lycra -lying -lymes -lymph -lynch -lynes -lyres -lyric -lysed -lyses -lysin -lysis -lysol -lyssa -lyted -lytes -lythe -lytic -lytta -maaed -maare -maars -mabes -macas -macaw -maced -macer -maces -mache -machi -macho -machs -macks -macle -macon -macro -madam -madge -madid -madly -madre -maerl -mafia -mafic -mages -maggs -magic -magma -magot -magus -mahoe -mahua -mahwa -maids -maiko -maiks -maile -maill -mails -maims -mains -maire -mairs -maise -maist -maize -major -makar -maker -makes -makis -makos -malam -malar -malas -malax -males -malic -malik -malis -malls -malms -malmy -malts -malty -malus -malva -malwa -mamas -mamba -mambo -mamee -mamey -mamie -mamma -mammy -manas -manat -mandi -maneb -maned -maneh -manes -manet -manga -mange -mango -mangs -mangy -mania -manic -manis -manky -manly -manna -manor -manos -manse -manta -manto -manty -manul -manus -mapau -maple -maqui -marae -marah -maras -march -marcs -mardy -mares -marge -margs -maria -marid -marka -marks -marle -marls -marly -marms -maron -maror -marra -marri -marry -marse -marsh -marts -marvy -masas -mased -maser -mases -mashy -masks -mason -massa -masse -massy -masts -masty -masus -matai -match -mated -mater -mates -matey -maths -matin -matlo -matte -matts -matza -matzo -mauby -mauds -mauls -maund -mauri -mausy -mauts -mauve -mauzy -maven -mavie -mavin -mavis -mawed -mawks -mawky -mawns -mawrs -maxed -maxes -maxim -maxis -mayan -mayas -maybe -mayed -mayor -mayos -mayst -mazed -mazer -mazes -mazey -mazut -mbira -meads -meals -mealy -meane -means -meant -meany -meare -mease -meath -meats -meaty -mebos -mecca -mechs -mecks -medal -media -medic -medii -medle -meeds -meers -meets -meffs -meins -meint -meiny -meith -mekka -melas -melba -melds -melee -melic -melik -mells -melon -melts -melty -memes -memos -menad -mends -mened -menes -menge -mengs -mensa -mense -mensh -menta -mento -menus -meous -meows -merch -mercs -mercy -merde -mered -merel -merer -meres -merge -meril -meris -merit -merks -merle -merls -merry -merse -mesal -mesas -mesel -meses -meshy -mesic -mesne -meson -messy -mesto -metal -meted -meter -metes -metho -meths -metic -metif -metis -metol -metre -metro -meuse -meved -meves -mewed -mewls -meynt -mezes -mezze -mezzo -mhorr -miaou -miaow -miasm -miaul -micas -miche -micht -micks -micky -micos -micra -micro -middy -midge -midgy -midis -midst -miens -mieve -miffs -miffy -mifty -miggs -might -mihas -mihis -miked -mikes -mikra -mikva -milch -milds -miler -miles -milfs -milia -milko -milks -milky -mille -mills -milor -milos -milpa -milts -milty -miltz -mimed -mimeo -mimer -mimes -mimic -mimsy -minae -minar -minas -mince -mincy -minds -mined -miner -mines -minge -mings -mingy -minim -minis -minke -minks -minny -minor -minos -mints -minty -minus -mired -mires -mirex -mirid -mirin -mirks -mirky -mirly -miros -mirth -mirvs -mirza -misch -misdo -miser -mises -misgo -misos -missa -missy -mists -misty -mitch -miter -mites -mitis -mitre -mitts -mixed -mixen -mixer -mixes -mixte -mixup -mizen -mizzy -mneme -moans -moats -mobby -mobes -mobey -mobie -moble -mocha -mochi -mochs -mochy -mocks -modal -model -modem -moder -modes -modge -modii -modus -moers -mofos -moggy -mogul -mohel -mohos -mohrs -mohua -mohur -moile -moils -moira -moire -moist -moits -mojos -mokes -mokis -mokos -molal -molar -molas -molds -moldy -moled -moles -molla -molls -molly -molto -molts -molys -momes -momma -mommy -momus -monad -monal -monas -monde -mondo -moner -money -mongo -mongs -monic -monie -monks -monos -monte -month -monty -moobs -mooch -moods -moody -mooed -mooks -moola -mooli -mools -mooly -moong -moons -moony -moops -moors -moory -moose -moots -moove -moped -moper -mopes -mopey -moppy -mopsy -mopus -morae -moral -moras -morat -moray -morel -mores -moria -morne -morns -moron -morph -morra -morro -morse -morts -mosed -moses -mosey -mosks -mosso -mossy -moste -mosts -moted -motel -moten -motes -motet -motey -moths -mothy -motif -motis -motor -motte -motto -motts -motty -motus -motza -mouch -moues -mould -mouls -moult -mound -mount -moups -mourn -mouse -moust -mousy -mouth -moved -mover -moves -movie -mowas -mowed -mower -mowra -moxas -moxie -moyas -moyle -moyls -mozed -mozes -mozos -mpret -mucho -mucic -mucid -mucin -mucks -mucky -mucor -mucro -mucus -muddy -mudge -mudir -mudra -muffs -mufti -mugga -muggs -muggy -muhly -muids -muils -muirs -muist -mujik -mulch -mulct -muled -mules -muley -mulga -mulie -mulla -mulls -mulse -mulsh -mumms -mummy -mumps -mumsy -mumus -munch -munga -munge -mungo -mungs -munis -munts -muntu -muons -mural -muras -mured -mures -murex -murid -murks -murky -murls -murly -murra -murre -murri -murrs -murry -murti -murva -musar -musca -mused -muser -muses -muset -musha -mushy -music -musit -musks -musky -musos -musse -mussy -musth -musts -musty -mutch -muted -muter -mutes -mutha -mutis -muton -mutts -muxed -muxes -muzak -muzzy -mvule -myall -mylar -mynah -mynas -myoid -myoma -myope -myops -myopy -myrrh -mysid -mythi -myths -mythy -myxos -mzees -naams -naans -nabes -nabis -nabks -nabla -nabob -nache -nacho -nacre -nadas -nadir -naeve -naevi -naffs -nagas -naggy -nagor -nahal -naiad -naifs -naiks -nails -naira -nairu -naive -naked -naker -nakfa -nalas -naled -nalla -named -namer -names -namma -namus -nanas -nance -nancy -nandu -nanna -nanny -nanos -nanua -napas -naped -napes -napoo -nappa -nappe -nappy -naras -narco -narcs -nards -nares -naric -naris -narks -narky -narre -nasal -nashi -nasty -natal -natch -nates -natis -natty -nauch -naunt -naval -navar -navel -naves -navew -navvy -nawab -nazes -nazir -nazis -nduja -neafe -neals -neaps -nears -neath -neats -nebek -nebel -necks -neddy -needs -needy -neeld -neele -neemb -neems -neeps -neese -neeze -negro -negus -neifs -neigh -neist -neive -nelis -nelly -nemas -nemns -nempt -nenes -neons -neper -nepit -neral -nerds -nerdy -nerka -nerks -nerol -nerts -nertz -nerve -nervy -nests -netes -netop -netts -netty -neuks -neume -neums -nevel -never -neves -nevus -newbs -newed -newel -newer -newie -newly -newsy -newts -nexts -nexus -ngaio -ngana -ngati -ngoma -ngwee -nicad -nicer -niche -nicht -nicks -nicol -nidal -nided -nides -nidor -nidus -niece -niefs -nieve -nifes -niffs -niffy -nifty -niger -nighs -night -nihil -nikab -nikah -nikau -nills -nimbi -nimbs -nimps -niner -nines -ninja -ninny -ninon -ninth -nipas -nippy -niqab -nirls -nirly -nisei -nisse -nisus -niter -nites -nitid -niton -nitre -nitro -nitry -nitty -nival -nixed -nixer -nixes -nixie -nizam -nkosi -noahs -nobby -noble -nobly -nocks -nodal -noddy -nodes -nodus -noels -noggs -nohow -noils -noily -noint -noirs -noise -noisy -noles -nolls -nolos -nomad -nomas -nomen -nomes -nomic -nomoi -nomos -nonas -nonce -nones -nonet -nongs -nonis -nonny -nonyl -noobs -nooit -nooks -nooky -noons -noops -noose -nopal -noria -noris -norks -norma -norms -north -nosed -noser -noses -nosey -notal -notch -noted -noter -notes -notum -nould -noule -nouls -nouns -nouny -noups -novae -novas -novel -novum -noway -nowed -nowls -nowts -nowty -noxal -noxes -noyau -noyed -noyes -nubby -nubia -nucha -nuddy -nuder -nudes -nudge -nudie -nudzh -nuffs -nugae -nuked -nukes -nulla -nulls -numbs -numen -nummy -nunny -nurds -nurdy -nurls -nurrs -nurse -nutso -nutsy -nutty -nyaff -nyala -nying -nylon -nymph -nyssa -oaked -oaken -oaker -oakum -oared -oases -oasis -oasts -oaten -oater -oaths -oaves -obang -obeah -obeli -obese -obeys -obias -obied -obiit -obits -objet -oboes -obole -oboli -obols -occam -occur -ocean -ocher -oches -ochre -ochry -ocker -ocrea -octad -octal -octan -octas -octet -octyl -oculi -odahs -odals -odder -oddly -odeon -odeum -odism -odist -odium -odors -odour -odyle -odyls -ofays -offal -offed -offer -offie -oflag -often -ofter -ogams -ogeed -ogees -oggin -ogham -ogive -ogled -ogler -ogles -ogmic -ogres -ohias -ohing -ohmic -ohone -oidia -oiled -oiler -oinks -oints -ojime -okapi -okays -okehs -okras -oktas -olden -older -oldie -oleic -olein -olent -oleos -oleum -olios -olive -ollas -ollav -oller -ollie -ology -olpae -olpes -omasa -omber -ombre -ombus -omega -omens -omers -omits -omlah -omovs -omrah -oncer -onces -oncet -oncus -onely -oners -onery -onion -onium -onkus -onlay -onned -onset -ontic -oobit -oohed -oomph -oonts -ooped -oorie -ooses -ootid -oozed -oozes -opahs -opals -opens -opepe -opera -opine -oping -opium -oppos -opsin -opted -opter -optic -orach -oracy -orals -orang -orant -orate -orbed -orbit -orcas -orcin -order -ordos -oread -orfes -organ -orgia -orgic -orgue -oribi -oriel -orixa -orles -orlon -orlop -ormer -ornis -orpin -orris -ortho -orval -orzos -oscar -oshac -osier -osmic -osmol -ossia -ostia -otaku -otary -other -ottar -otter -ottos -oubit -oucht -ouens -ought -ouija -oulks -oumas -ounce -oundy -oupas -ouped -ouphe -ouphs -ourie -ousel -ousts -outby -outdo -outed -outer -outgo -outre -outro -outta -ouzel -ouzos -ovals -ovary -ovate -ovels -ovens -overs -overt -ovine -ovist -ovoid -ovoli -ovolo -ovule -owche -owies -owing -owled -owler -owlet -owned -owner -owres -owrie -owsen -oxbow -oxers -oxeye -oxide -oxids -oxies -oxime -oxims -oxlip -oxter -oyers -ozeki -ozone -ozzie -paals -paans -pacas -paced -pacer -paces -pacey -pacha -packs -pacos -pacta -pacts -paddy -padis -padle -padma -padre -padri -paean -paedo -paeon -pagan -paged -pager -pages -pagle -pagod -pagri -paiks -pails -pains -paint -paire -pairs -paisa -paise -pakka -palas -palay -palea -paled -paler -pales -palet -palis -palki -palla -palls -pally -palms -palmy -palpi -palps -palsa -palsy -pampa -panax -pance -panda -pands -pandy -paned -panel -panes -panga -pangs -panic -panim -panko -panne -panni -pansy -panto -pants -panty -paoli -paolo -papal -papas -papaw -paper -papes -pappi -pappy -parae -paras -parch -pardi -pards -pardy -pared -paren -pareo -parer -pares -pareu -parev -parge -pargo -paris -parka -parki -parks -parky -parle -parly -parma -parol -parps -parra -parrs -parry -parse -parti -parts -party -parve -parvo -paseo -pases -pasha -pashm -paska -paspy -passe -pasta -paste -pasts -pasty -patch -pated -paten -pater -pates -paths -patin -patio -patka -patly -patsy -patte -patty -patus -pauas -pauls -pause -pavan -paved -paven -paver -paves -pavid -pavin -pavis -pawas -pawaw -pawed -pawer -pawks -pawky -pawls -pawns -paxes -payed -payee -payer -payor -paysd -peace -peach -peage -peags -peaks -peaky -peals -peans -peare -pearl -pears -peart -pease -peats -peaty -peavy -peaze -pebas -pecan -pechs -pecke -pecks -pecky -pedal -pedes -pedis -pedro -peece -peeks -peels -peens -peeoy -peepe -peeps -peers -peery -peeve -peggy -peghs -peins -peise -peize -pekan -pekes -pekin -pekoe -pelas -pelau -peles -pelfs -pells -pelma -pelon -pelta -pelts -penal -pence -pends -pendu -pened -penes -pengo -penie -penis -penks -penna -penne -penni -penny -pents -peons -peony -pepla -pepos -peppy -pepsi -perai -perce -perch -percs -perdu -perdy -perea -peres -peril -peris -perks -perky -perms -perns -perog -perps -perry -perse -perst -perts -perve -pervo -pervs -pervy -pesky -pesos -pesto -pests -pesty -petal -petar -peter -petit -petre -petri -petti -petto -petty -pewee -pewit -peyse -phage -phang -phare -pharm -phase -pheer -phene -pheon -phese -phial -phish -phizz -phlox -phoca -phone -phono -phons -phony -photo -phots -phpht -phuts -phyla -phyle -piani -piano -pians -pibal -pical -picas -piccy -picks -picky -picot -picra -picul -piece -piend -piers -piert -pieta -piets -piety -piezo -piggy -pight -pigmy -piing -pikas -pikau -piked -piker -pikes -pikey -pikis -pikul -pilae -pilaf -pilao -pilar -pilau -pilaw -pilch -pilea -piled -pilei -piler -piles -pilis -pills -pilot -pilow -pilum -pilus -pimas -pimps -pinas -pinch -pined -pines -piney -pingo -pings -pinko -pinks -pinky -pinna -pinny -pinon -pinot -pinta -pinto -pints -pinup -pions -piony -pious -pioye -pioys -pipal -pipas -piped -piper -pipes -pipet -pipis -pipit -pippy -pipul -pique -pirai -pirls -pirns -pirog -pisco -pises -pisky -pisos -pissy -piste -pitas -pitch -piths -pithy -piton -pitot -pitta -piums -pivot -pixel -pixes -pixie -pized -pizes -pizza -plaas -place -plack -plage -plaid -plain -plait -plane -plank -plans -plant -plaps -plash -plasm -plast -plate -plats -platt -platy -playa -plays -plaza -plead -pleas -pleat -plebe -plebs -plena -pleon -plesh -plews -plica -plied -plier -plies -plims -pling -plink -ploat -plods -plong -plonk -plook -plops -plots -plotz -plouk -plows -ploye -ploys -pluck -plues -pluff -plugs -plumb -plume -plump -plums -plumy -plunk -pluot -plush -pluto -plyer -poach -poaka -poake -poboy -pocks -pocky -podal -poddy -podex -podge -podgy -podia -poems -poeps -poesy -poets -pogey -pogge -pogos -pohed -poilu -poind -point -poise -pokal -poked -poker -pokes -pokey -pokie -polar -poled -poler -poles -poley -polio -polis -polje -polka -polks -polls -polly -polos -polts -polyp -polys -pombe -pomes -pommy -pomos -pomps -ponce -poncy -ponds -pones -poney -ponga -pongo -pongs -pongy -ponks -ponts -ponty -ponzu -pooch -poods -pooed -poofs -poofy -poohs -pooja -pooka -pooks -pools -poons -poops -poopy -poori -poort -poots -poove -poovy -popes -poppa -poppy -popsy -porae -poral -porch -pored -porer -pores -porge -porgy -porin -porks -porky -porno -porns -porny -porta -ports -porty -posed -poser -poses -posey -posho -posit -posse -posts -potae -potch -poted -potes -potin -potoo -potsy -potto -potts -potty -pouch -pouff -poufs -pouke -pouks -poule -poulp -poult -pound -poupe -poupt -pours -pouts -pouty -powan -power -powin -pownd -powns -powny -powre -poxed -poxes -poynt -poyou -poyse -pozzy -praam -prads -prahu -prams -prana -prang -prank -praos -prase -prate -prats -pratt -praty -praus -prawn -prays -predy -preed -preen -prees -preif -prems -premy -prent -preon -preop -preps -presa -prese -press -prest -preve -prexy -preys -prial -price -prick -pricy -pride -pried -prief -prier -pries -prigs -prill -prima -prime -primi -primo -primp -prims -primy -prink -print -prion -prior -prise -prism -priss -privy -prize -proas -probe -probs -prods -proem -profs -progs -proin -proke -prole -proll -promo -proms -prone -prong -pronk -proof -props -prore -prose -proso -pross -prost -prosy -proto -proud -proul -prove -prowl -prows -proxy -proyn -prude -prune -prunt -pruta -pryer -pryse -psalm -pseud -pshaw -psion -psoae -psoai -psoas -psora -psych -psyop -pubco -pubes -pubic -pubis -pucan -pucer -puces -pucka -pucks -puddy -pudge -pudgy -pudic -pudor -pudsy -pudus -puers -puffa -puffs -puffy -puggy -pugil -puhas -pujah -pujas -pukas -puked -puker -pukes -pukey -pukka -pukus -pulao -pulas -puled -puler -pules -pulik -pulis -pulka -pulks -pulli -pulls -pully -pulmo -pulps -pulpy -pulse -pulus -pumas -pumie -pumps -punas -punce -punch -punga -pungs -punji -punka -punks -punky -punny -punto -punts -punty -pupae -pupal -pupas -pupil -puppy -pupus -purda -pured -puree -purer -pures -purge -purin -puris -purls -purpy -purrs -purse -pursy -purty -puses -pushy -pusle -pussy -putid -puton -putti -putto -putts -putty -puzel -pwned -pyats -pyets -pygal -pygmy -pyins -pylon -pyned -pynes -pyoid -pyots -pyral -pyran -pyres -pyrex -pyric -pyros -pyxed -pyxes -pyxie -pyxis -pzazz -qadis -qaids -qajaq -qanat -qapik -qibla -qophs -qorma -quack -quads -quaff -quags -quail -quair -quais -quake -quaky -quale -qualm -quant -quare -quark -quart -quash -quasi -quass -quate -quats -quayd -quays -qubit -quean -queen -queer -quell -queme -quena -quern -query -quest -queue -queyn -queys -quich -quick -quids -quiet -quiff -quill -quilt -quims -quina -quine -quino -quins -quint -quipo -quips -quipu -quire -quirk -quirt -quist -quite -quits -quoad -quods -quoif -quoin -quoit -quoll -quonk -quops -quota -quote -quoth -qursh -quyte -rabat -rabbi -rabic -rabid -rabis -raced -racer -races -rache -racks -racon -radar -radge -radii -radio -radix -radon -raffs -rafts -ragas -ragde -raged -ragee -rager -rages -ragga -raggs -raggy -ragis -ragus -rahed -rahui -raias -raids -raiks -raile -rails -raine -rains -rainy -raird -raise -raita -raits -rajah -rajas -rajes -raked -rakee -raker -rakes -rakia -rakis -rakus -rales -rally -ralph -ramal -ramee -ramen -ramet -ramie -ramin -ramis -rammy -ramps -ramus -ranas -rance -ranch -rands -randy -ranee -ranga -range -rangi -rangs -rangy -ranid -ranis -ranke -ranks -rants -raped -raper -rapes -raphe -rapid -rappe -rared -raree -rarer -rares -rarks -rased -raser -rases -rasps -raspy -rasse -rasta -ratal -ratan -ratas -ratch -rated -ratel -rater -rates -ratha -rathe -raths -ratio -ratoo -ratos -ratty -ratus -rauns -raupo -raved -ravel -raven -raver -raves -ravey -ravin -rawer -rawin -rawly -rawns -raxed -raxes -rayah -rayas -rayed -rayle -rayne -rayon -razed -razee -razer -razes -razoo -razor -reach -react -readd -reads -ready -reais -reaks -realm -realo -reals -reame -reams -reamy -reans -reaps -rearm -rears -reast -reata -reate -reave -rebar -rebbe -rebec -rebel -rebid -rebit -rebop -rebus -rebut -rebuy -recal -recap -recce -recco -reccy -recit -recks -recon -recta -recti -recto -recur -recut -redan -redds -reddy -reded -redes -redia -redid -redip -redly -redon -redos -redox -redry -redub -redux -redye -reech -reede -reeds -reedy -reefs -reefy -reeks -reeky -reels -reens -reest -reeve -refed -refel -refer -reffo -refis -refit -refix -refly -refry -regal -regar -reges -reggo -regie -regma -regna -regos -regur -rehab -rehem -reifs -reify -reign -reiki -reiks -reink -reins -reird -reist -reive -rejig -rejon -reked -rekes -rekey -relax -relay -relet -relic -relie -relit -rello -reman -remap -remen -remet -remex -remit -remix -renal -renay -rends -renew -reney -renga -renig -renin -renne -renos -rente -rents -reoil -reorg -repay -repeg -repel -repin -repla -reply -repos -repot -repps -repro -reran -rerig -rerun -resat -resaw -resay -resee -reses -reset -resew -resid -resin -resit -resod -resow -resto -rests -resty -resus -retag -retax -retch -retem -retia -retie -retox -retro -retry -reuse -revel -revet -revie -revue -rewan -rewax -rewed -rewet -rewin -rewon -rewth -rexes -rezes -rheas -rheme -rheum -rhies -rhime -rhine -rhino -rhody -rhomb -rhone -rhumb -rhyme -rhyne -rhyta -riads -rials -riant -riata -ribas -ribby -ribes -riced -ricer -rices -ricey -richt -ricin -ricks -rider -rides -ridge -ridgy -ridic -riels -riems -rieve -rifer -riffs -rifle -rifte -rifts -rifty -riggs -right -rigid -rigol -rigor -riled -riles -riley -rille -rills -rimae -rimed -rimer -rimes -rimus -rinds -rindy -rines -rings -rinks -rinse -rioja -riots -riped -ripen -riper -ripes -ripps -risen -riser -rises -rishi -risks -risky -risps -risus -rites -ritts -ritzy -rival -rivas -rived -rivel -riven -river -rives -rivet -riyal -rizas -roach -roads -roams -roans -roars -roary -roast -roate -robed -robes -robin -roble -robot -rocks -rocky -roded -rodeo -rodes -roger -rogue -roguy -rohes -roids -roils -roily -roins -roist -rojak -rojis -roked -roker -rokes -rolag -roles -rolfs -rolls -romal -roman -romeo -romps -ronde -rondo -roneo -rones -ronin -ronne -ronte -ronts -roods -roofs -roofy -rooks -rooky -rooms -roomy -roons -roops -roopy -roosa -roose -roost -roots -rooty -roped -roper -ropes -ropey -roque -roral -rores -roric -rorid -rorie -rorts -rorty -rosed -roses -roset -roshi -rosin -rosit -rosti -rosts -rotal -rotan -rotas -rotch -roted -rotes -rotis -rotls -roton -rotor -rotos -rotte -rouen -roues -rouge -rough -roule -rouls -roums -round -roups -roupy -rouse -roust -route -routh -routs -roved -roven -rover -roves -rowan -rowdy -rowed -rowel -rowen -rower -rowie -rowme -rownd -rowth -rowts -royal -royne -royst -rozet -rozit -ruana -rubai -rubby -rubel -rubes -rubin -ruble -rubli -rubus -ruche -rucks -rudas -rudds -ruddy -ruder -rudes -rudie -rudis -rueda -ruers -ruffe -ruffs -rugae -rugal -rugby -ruggy -ruing -ruins -rukhs -ruled -ruler -rules -rumal -rumba -rumbo -rumen -rumes -rumly -rummy -rumor -rumpo -rumps -rumpy -runch -runds -runed -runes -rungs -runic -runny -runts -runty -rupee -rupia -rural -rurps -rurus -rusas -ruses -rushy -rusks -rusma -russe -rusts -rusty -ruths -rutin -rutty -ryals -rybat -ryked -rykes -rymme -rynds -ryots -ryper -saags -sabal -sabed -saber -sabes -sabha -sabin -sabir -sable -sabot -sabra -sabre -sacks -sacra -saddo -sades -sadhe -sadhu -sadis -sadly -sados -sadza -safed -safer -safes -sagas -sager -sages -saggy -sagos -sagum -saheb -sahib -saice -saick -saics -saids -saiga -sails -saims -saine -sains -saint -sairs -saist -saith -sajou -sakai -saker -sakes -sakia -sakis -sakti -salad -salal -salat -salep -sales -salet -salic -salix -salle -sally -salmi -salol -salon -salop -salpa -salps -salsa -salse -salto -salts -salty -salue -salut -salve -salvo -saman -samas -samba -sambo -samek -samel -samen -sames -samey -samfu -sammy -sampi -samps -sands -sandy -saned -saner -sanes -sanga -sangh -sango -sangs -sanko -sansa -santo -sants -saola -sapan -sapid -sapor -sappy -saran -sards -sared -saree -sarge -sargo -sarin -saris -sarks -sarky -sarod -saros -sarus -saser -sasin -sasse -sassy -satai -satay -sated -satem -sates -satin -satis -satyr -sauba -sauce -sauch -saucy -saugh -sauls -sault -sauna -saunt -saury -saute -sauts -saved -saver -saves -savey -savin -savor -savoy -savvy -sawah -sawed -sawer -saxes -sayed -sayer -sayid -sayne -sayon -sayst -sazes -scabs -scads -scaff -scags -scail -scala -scald -scale -scall -scalp -scaly -scamp -scams -scand -scans -scant -scapa -scape -scapi -scare -scarf -scarp -scars -scart -scary -scath -scats -scatt -scaud -scaup -scaur -scaws -sceat -scena -scend -scene -scent -schav -schmo -schul -schwa -scion -sclim -scody -scoff -scogs -scold -scone -scoog -scoop -scoot -scopa -scope -scops -score -scorn -scots -scoug -scoup -scour -scout -scowl -scowp -scows -scrab -scrae -scrag -scram -scran -scrap -scrat -scraw -scray -scree -screw -scrim -scrip -scrob -scrod -scrog -scrow -scrub -scrum -scuba -scudi -scudo -scuds -scuff -scuft -scugs -sculk -scull -sculp -sculs -scums -scups -scurf -scurs -scuse -scuta -scute -scuts -scuzz -scyes -sdayn -sdein -seals -seame -seams -seamy -seans -seare -sears -sease -seats -seaze -sebum -secco -sechs -sects -sedan -seder -sedes -sedge -sedgy -sedum -seeds -seedy -seeks -seeld -seels -seely -seems -seeps -seepy -seers -sefer -segar -segni -segno -segol -segos -segue -sehri -seifs -seils -seine -seirs -seise -seism -seity -seiza -seize -sekos -sekts -selah -seles -selfs -sella -selle -sells -selva -semee -semen -semes -semie -semis -senas -sends -senes -sengi -senna -senor -sensa -sense -sensi -sente -senti -sents -senvy -senza -sepad -sepal -sepia -sepic -sepoy -septa -septs -serac -serai -seral -sered -serer -seres -serfs -serge -seric -serif -serin -serks -seron -serow -serra -serre -serrs -serry -serum -serve -servo -sesey -sessa -setae -setal -seton -setts -setup -seven -sever -sewan -sewar -sewed -sewel -sewen -sewer -sewin -sexed -sexer -sexes -sexto -sexts -seyen -shack -shade -shads -shady -shaft -shags -shahs -shake -shako -shakt -shaky -shale -shall -shalm -shalt -shaly -shama -shame -shams -shand -shank -shans -shape -shaps -shard -share -shark -sharn -sharp -shash -shaul -shave -shawl -shawm -shawn -shaws -shaya -shays -shchi -sheaf -sheal -shear -sheas -sheds -sheel -sheen -sheep -sheer -sheet -sheik -shelf -shell -shend -shent -sheol -sherd -shere -shero -shets -sheva -shewn -shews -shiai -shied -shiel -shier -shies -shift -shill -shily -shims -shine -shins -shiny -ships -shire -shirk -shirr -shirs -shirt -shish -shiso -shist -shite -shits -shiur -shiva -shive -shivs -shlep -shlub -shmek -shmoe -shoal -shoat -shock -shoed -shoer -shoes -shogi -shogs -shoji -shojo -shola -shone -shook -shool -shoon -shoos -shoot -shope -shops -shore -shorl -shorn -short -shote -shots -shott -shout -shove -showd -shown -shows -showy -shoyu -shred -shrew -shris -shrow -shrub -shrug -shtik -shtum -shtup -shuck -shule -shuln -shuls -shuns -shunt -shura -shush -shute -shuts -shwas -shyer -shyly -sials -sibbs -sibyl -sices -sicht -sicko -sicks -sicky -sidas -sided -sider -sides -sidha -sidhe -sidle -siege -sield -siens -sient -sieth -sieur -sieve -sifts -sighs -sight -sigil -sigla -sigma -signa -signs -sijos -sikas -siker -sikes -silds -siled -silen -siler -siles -silex -silks -silky -sills -silly -silos -silts -silty -silva -simar -simas -simba -simis -simps -simul -since -sinds -sined -sines -sinew -singe -sings -sinhs -sinks -sinky -sinus -siped -sipes -sippy -sired -siree -siren -sires -sirih -siris -siroc -sirra -sirup -sisal -sises -sissy -sista -sists -sitar -sited -sites -sithe -sitka -situp -situs -siver -sixer -sixes -sixmo -sixte -sixth -sixty -sizar -sized -sizel -sizer -sizes -skags -skail -skald -skank -skart -skate -skats -skatt -skaws -skean -skear -skeds -skeed -skeef -skeen -skeer -skees -skeet -skegg -skegs -skein -skelf -skell -skelm -skelp -skene -skens -skeos -skeps -skers -skets -skews -skids -skied -skier -skies -skiey -skiff -skill -skimo -skimp -skims -skink -skins -skint -skios -skips -skirl -skirr -skirt -skite -skits -skive -skivy -sklim -skoal -skody -skoff -skogs -skols -skool -skort -skosh -skran -skrik -skuas -skugs -skulk -skull -skunk -skyed -skyer -skyey -skyfs -skyre -skyrs -skyte -slabs -slack -slade -slaes -slags -slaid -slain -slake -slams -slane -slang -slank -slant -slaps -slart -slash -slate -slats -slaty -slave -slaws -slays -slebs -sleds -sleek -sleep -sleer -sleet -slept -slews -sleys -slice -slick -slide -slier -slily -slime -slims -slimy -sling -slink -slipe -slips -slipt -slish -slits -slive -sloan -slobs -sloes -slogs -sloid -slojd -slomo -sloom -sloop -sloot -slope -slops -slopy -slorm -slosh -sloth -slots -slove -slows -sloyd -slubb -slubs -slued -slues -sluff -slugs -sluit -slump -slums -slung -slunk -slurb -slurp -slurs -sluse -slush -sluts -slyer -slyly -slype -smaak -smack -smaik -small -smalm -smalt -smarm -smart -smash -smaze -smear -smeek -smees -smeik -smeke -smell -smelt -smerk -smews -smile -smirk -smirr -smirs -smite -smith -smits -smock -smogs -smoke -smoko -smoky -smolt -smoor -smoot -smore -smorg -smote -smout -smowt -smugs -smurs -smush -smuts -snabs -snack -snafu -snags -snail -snake -snaky -snaps -snare -snarf -snark -snarl -snars -snary -snash -snath -snaws -snead -sneak -sneap -snebs -sneck -sneds -sneed -sneer -snees -snell -snibs -snick -snide -snies -sniff -snift -snigs -snipe -snips -snipy -snirt -snits -snobs -snods -snoek -snoep -snogs -snoke -snood -snook -snool -snoop -snoot -snore -snort -snots -snout -snowk -snows -snowy -snubs -snuck -snuff -snugs -snush -snyes -soaks -soaps -soapy -soare -soars -soave -sobas -sober -socas -soces -socko -socks -socle -sodas -soddy -sodic -sodom -sofar -sofas -softa -softs -softy -soger -soggy -sohur -soils -soily -sojas -sojus -sokah -soken -sokes -sokol -solah -solan -solar -solas -solde -soldi -soldo -solds -soled -solei -soler -soles -solid -solon -solos -solum -solus -solve -soman -somas -sonar -sonce -sonde -sones -songs -sonic -sonly -sonne -sonny -sonse -sonsy -sooey -sooks -sooky -soole -sools -sooms -soops -soote -sooth -soots -sooty -sophs -sophy -sopor -soppy -sopra -soral -soras -sorbo -sorbs -sorda -sordo -sords -sored -soree -sorel -sorer -sores -sorex -sorgo -sorns -sorra -sorry -sorta -sorts -sorus -soths -sotol -souce -souct -sough -souks -souls -soums -sound -soups -soupy -sours -souse -south -souts -sowar -sowce -sowed -sower -sowff -sowfs -sowle -sowls -sowms -sownd -sowne -sowps -sowse -sowth -soyas -soyle -soyuz -sozin -space -spacy -spade -spado -spaed -spaer -spaes -spags -spahi -spail -spain -spait -spake -spald -spale -spall -spalt -spams -spane -spang -spank -spans -spard -spare -spark -spars -spart -spasm -spate -spats -spaul -spawl -spawn -spaws -spayd -spays -spaza -spazz -speak -speal -spean -spear -speat -speck -specs -spect -speed -speel -speer -speil -speir -speks -speld -spelk -spell -spelt -spend -spent -speos -sperm -spets -speug -spews -spewy -spial -spica -spice -spick -spics -spicy -spide -spied -spiel -spier -spies -spiff -spifs -spike -spiks -spiky -spile -spill -spilt -spims -spina -spine -spink -spins -spiny -spire -spirt -spiry -spite -spits -spitz -spivs -splat -splay -split -splog -spode -spods -spoil -spoke -spoof -spook -spool -spoom -spoon -spoor -spoot -spore -spork -sport -sposh -spots -spout -sprad -sprag -sprat -spray -spred -spree -sprew -sprig -sprit -sprod -sprog -sprue -sprug -spuds -spued -spuer -spues -spugs -spule -spume -spumy -spunk -spurn -spurs -spurt -sputa -spyal -spyre -squab -squad -squat -squaw -squeg -squib -squid -squit -squiz -stabs -stack -stade -staff -stage -stags -stagy -staid -staig -stain -stair -stake -stale -stalk -stall -stamp -stand -stane -stang -stank -staph -staps -stare -stark -starn -starr -stars -start -stash -state -stats -staun -stave -staws -stays -stead -steak -steal -steam -stean -stear -stedd -stede -steds -steed -steek -steel -steem -steen -steep -steer -steil -stein -stela -stele -stell -steme -stems -stend -steno -stens -stent -steps -stept -stere -stern -stets -stews -stewy -steys -stich -stick -stied -sties -stiff -stilb -stile -still -stilt -stime -stims -stimy -sting -stink -stint -stipa -stipe -stire -stirk -stirp -stirs -stive -stivy -stoae -stoai -stoas -stoat -stobs -stock -stoep -stogy -stoic -stoit -stoke -stole -stoln -stoma -stomp -stond -stone -stong -stonk -stonn -stony -stood -stook -stool -stoop -stoor -stope -stops -stopt -store -stork -storm -story -stoss -stots -stott -stoun -stoup -stour -stout -stove -stown -stowp -stows -strad -strae -strag -strak -strap -straw -stray -strep -strew -stria -strig -strim -strip -strop -strow -stroy -strum -strut -stubs -stuck -stude -studs -study -stuff -stull -stulm -stumm -stump -stums -stung -stunk -stuns -stunt -stupa -stupe -sture -sturt -styed -styes -style -styli -stylo -styme -stymy -styre -styte -suave -subah -subas -subby -suber -subha -succi -sucks -sucky -sucre -sudds -sudor -sudsy -suede -suent -suers -suete -suets -suety -sugan -sugar -sughs -sugos -suhur -suids -suing -suint -suite -suits -sujee -sukhs -sukuk -sulci -sulfa -sulfo -sulks -sulky -sully -sulph -sulus -sumac -sumis -summa -sumos -sumph -sumps -sunis -sunks -sunna -sunns -sunny -sunup -super -supes -supra -surah -sural -suras -surat -surds -sured -surer -sures -surfs -surfy -surge -surgy -surly -surra -sused -suses -sushi -susus -sutor -sutra -sutta -swabs -swack -swads -swage -swags -swail -swain -swale -swaly -swami -swamp -swamy -swang -swank -swans -swaps -swapt -sward -sware -swarf -swarm -swart -swash -swath -swats -swayl -sways -sweal -swear -sweat -swede -sweed -sweel -sweep -sweer -swees -sweet -sweir -swell -swelt -swept -swerf -sweys -swies -swift -swigs -swile -swill -swims -swine -swing -swink -swipe -swire -swirl -swish -swiss -swith -swits -swive -swizz -swobs -swole -swoln -swoon -swoop -swops -swopt -sword -swore -sworn -swots -swoun -swung -sybbe -sybil -syboe -sybow -sycee -syces -sycon -syens -syker -sykes -sylis -sylph -sylva -symar -synch -syncs -synds -syned -synes -synod -synth -syped -sypes -syphs -syrah -syren -syrup -sysop -sythe -syver -taals -taata -tabby -taber -tabes -tabid -tabis -tabla -table -taboo -tabor -tabun -tabus -tacan -taces -tacet -tache -tacho -tachs -tacit -tacks -tacky -tacos -tacts -taels -taffy -tafia -taggy -tagma -tahas -tahrs -taiga -taigs -taiko -tails -tains -taint -taira -taish -taits -tajes -takas -taken -taker -takes -takhi -takin -takis -takky -talak -talaq -talar -talas -talcs -talcy -talea -taler -tales -talks -talky -talls -tally -talma -talon -talpa -taluk -talus -tamal -tamed -tamer -tames -tamin -tamis -tammy -tamps -tanas -tanga -tangi -tango -tangs -tangy -tanhs -tanka -tanks -tanky -tanna -tansy -tanti -tanto -tanty -tapas -taped -tapen -taper -tapes -tapet -tapir -tapis -tappa -tapus -taras -tardo -tardy -tared -tares -targa -targe -tarns -taroc -tarok -taros -tarot -tarps -tarre -tarry -tarsi -tarts -tarty -tasar -tased -taser -tases -tasks -tassa -tasse -tasso -taste -tasty -tatar -tater -tates -taths -tatie -tatou -tatts -tatty -tatus -taube -tauld -taunt -tauon -taupe -tauts -tavah -tavas -taver -tawai -tawas -tawed -tawer -tawie -tawny -tawse -tawts -taxed -taxer -taxes -taxis -taxol -taxon -taxor -taxus -tayra -tazza -tazze -teach -teade -teads -teaed -teaks -teals -teams -tears -teary -tease -teats -teaze -techs -techy -tecta -teddy -teels -teems -teend -teene -teens -teeny -teers -teeth -teffs -teggs -tegua -tegus -tehrs -teiid -teils -teind -teins -telae -telco -teles -telex -telia -telic -tells -telly -teloi -telos -temed -temes -tempi -tempo -temps -tempt -temse -tench -tends -tendu -tenes -tenet -tenge -tenia -tenne -tenno -tenny -tenon -tenor -tense -tenth -tents -tenty -tenue -tepal -tepas -tepee -tepid -tepoy -terai -teras -terce -terek -teres -terfe -terfs -terga -terms -terne -terns -terra -terry -terse -terts -tesla -testa -teste -tests -testy -tetes -teths -tetra -tetri -teuch -teugh -tewed -tewel -tewit -texas -texes -texts -thack -thagi -thaim -thale -thali -thana -thane -thang -thank -thans -thanx -tharm -thars -thaws -thawy -thebe -theca -theed -theek -thees -theft -thegn -theic -thein -their -thelf -thema -theme -thens -theow -there -therm -these -thesp -theta -thete -thews -thewy -thick -thief -thigh -thigs -thilk -thill -thine -thing -think -thins -thiol -third -thirl -thoft -thole -tholi -thong -thorn -thoro -thorp -those -thous -thowl -thrae -thraw -three -threw -thrid -thrip -throb -throe -throw -thrum -thuds -thugs -thuja -thumb -thump -thunk -thurl -thuya -thyme -thymi -thymy -tians -tiara -tiars -tibia -tical -ticca -ticed -tices -tichy -ticks -ticky -tidal -tiddy -tided -tides -tiers -tiffs -tifos -tifts -tiger -tiges -tight -tigon -tikas -tikes -tikis -tikka -tilak -tilde -tiled -tiler -tiles -tills -tilly -tilth -tilts -timbo -timed -timer -times -timid -timon -timps -tinas -tinct -tinds -tinea -tined -tines -tinge -tings -tinks -tinny -tints -tinty -tipis -tippy -tipsy -tired -tires -tirls -tiros -tirrs -titan -titch -titer -tithe -titis -title -titre -titty -titup -tiyin -tiyns -tizes -tizzy -toads -toady -toast -toaze -tocks -tocky -tocos -today -todde -toddy -toeas -toffs -toffy -tofts -tofus -togae -togas -toged -toges -togue -tohos -toile -toils -toing -toise -toits -tokay -toked -token -toker -tokes -tokos -tolan -tolar -tolas -toled -toles -tolls -tolly -tolts -tolus -tolyl -toman -tombs -tomes -tomia -tommy -tomos -tonal -tondi -tondo -toned -toner -tones -toney -tonga -tongs -tonic -tonka -tonks -tonne -tonus -tools -tooms -toons -tooth -toots -topaz -toped -topee -topek -toper -topes -tophe -tophi -tophs -topic -topis -topoi -topos -toppy -toque -torah -toran -toras -torch -torcs -tores -toric -torii -toros -torot -torrs -torse -torsi -torsk -torso -torta -torte -torts -torus -tosas -tosed -toses -toshy -tossy -total -toted -totem -toter -totes -totty -touch -tough -touks -touns -tours -touse -tousy -touts -touze -touzy -towed -towel -tower -towie -towns -towny -towse -towsy -towts -towze -towzy -toxic -toxin -toyed -toyer -toyon -toyos -tozed -tozes -tozie -trabs -trace -track -tract -trade -trads -tragi -traik -trail -train -trait -tramp -trams -trank -tranq -trans -trant -trape -traps -trapt -trash -trass -trats -tratt -trave -trawl -trayf -trays -tread -treat -treck -treed -treen -trees -trefa -treif -treks -trema -trems -trend -tress -trest -trets -trews -treyf -treys -triac -triad -trial -tribe -trice -trick -tride -tried -trier -tries -triff -trigo -trigs -trike -trild -trill -trims -trine -trins -triol -trior -trios -tripe -trips -tripy -trist -trite -troad -troak -troat -trock -trode -trods -trogs -trois -troke -troll -tromp -trona -tronc -trone -tronk -trons -troop -trooz -trope -troth -trots -trout -trove -trows -troys -truce -truck -trued -truer -trues -trugo -trugs -trull -truly -trump -trunk -truss -trust -truth -tryer -tryke -tryma -tryps -tryst -tsade -tsadi -tsars -tsked -tsuba -tsubo -tuans -tuart -tuath -tubae -tubal -tubar -tubas -tubby -tubed -tuber -tubes -tucks -tufas -tuffe -tuffs -tufts -tufty -tugra -tuile -tuina -tuism -tuktu -tules -tulip -tulle -tulpa -tulsi -tumid -tummy -tumor -tumps -tumpy -tunas -tunds -tuned -tuner -tunes -tungs -tunic -tunny -tupek -tupik -tuple -tuque -turbo -turds -turfs -turfy -turks -turme -turms -turns -turnt -turps -turrs -tushy -tusks -tusky -tutee -tutor -tutti -tutty -tutus -tuxes -tuyer -twaes -twain -twals -twang -twank -twats -tways -tweak -tweed -tweel -tween -tweep -tweer -tweet -twerk -twerp -twice -twier -twigs -twill -twilt -twine -twink -twins -twiny -twire -twirl -twirp -twist -twite -twits -twixt -twoer -twyer -tyees -tyers -tying -tyiyn -tykes -tyler -tymps -tynde -tyned -tynes -typal -typed -types -typey -typic -typos -typps -typto -tyran -tyred -tyres -tyros -tythe -tzars -udals -udder -udons -ugali -ugged -uhlan -uhuru -ukase -ulama -ulans -ulcer -ulema -ulmin -ulnad -ulnae -ulnar -ulnas -ulpan -ultra -ulvas -ulyie -ulzie -umami -umbel -umber -umble -umbos -umbra -umbre -umiac -umiak -umiaq -ummah -ummas -ummed -umped -umphs -umpie -umpty -umrah -umras -unais -unapt -unarm -unary -unaus -unbag -unban -unbar -unbed -unbid -unbox -uncap -unces -uncia -uncle -uncos -uncoy -uncus -uncut -undam -undee -under -undid -undos -undue -undug -uneth -unfed -unfit -unfix -ungag -unget -ungod -ungot -ungum -unhat -unhip -unica -unify -union -unite -units -unity -unjam -unked -unket -unkid -unlaw -unlay -unled -unlet -unlid -unlit -unman -unmet -unmew -unmix -unpay -unpeg -unpen -unpin -unred -unrid -unrig -unrip -unsaw -unsay -unsee -unset -unsew -unsex -unsod -untax -untie -until -untin -unwed -unwet -unwit -unwon -unzip -upbow -upbye -updos -updry -upend -upjet -uplay -upled -uplit -upped -upper -upran -uprun -upsee -upset -upsey -uptak -upter -uptie -uraei -urali -uraos -urare -urari -urase -urate -urban -urbex -urbia -urdee -ureal -ureas -uredo -ureic -urena -urent -urged -urger -urges -urial -urine -urite -urman -urnal -urned -urped -ursae -ursid -urson -urubu -urvas -usage -users -usher -using -usnea -usque -usual -usure -usurp -usury -uteri -utile -utter -uveal -uveas -uvula -vacua -vaded -vades -vagal -vague -vagus -vails -vaire -vairs -vairy -vakas -vakil -vales -valet -valid -valis -valor -valse -value -valve -vamps -vampy -vanda -vaned -vanes -vangs -vants -vaped -vaper -vapes -vapid -vapor -varan -varas -vardy -varec -vares -varia -varix -varna -varus -varve -vasal -vases -vasts -vasty -vatic -vatus -vauch -vault -vaunt -vaute -vauts -vawte -vaxes -veale -veals -vealy -veena -veeps -veers -veery -vegan -vegas -veges -vegie -vegos -vehme -veils -veily -veins -veiny -velar -velds -veldt -veles -vells -velum -venae -venal -vends -vendu -veney -venge -venin -venom -vents -venue -venus -verbs -verge -verra -verry -verse -verso -verst -verts -vertu -verve -vespa -vesta -vests -vetch -vexed -vexer -vexes -vexil -vezir -vials -viand -vibes -vibex -vibey -vicar -viced -vices -vichy -video -viers -views -viewy -vifda -viffs -vigas -vigia -vigil -vigor -vilde -viler -villa -villi -vills -vimen -vinal -vinas -vinca -vined -viner -vines -vinew -vinic -vinos -vints -vinyl -viola -viold -viols -viper -viral -vired -vireo -vires -virga -virge -virid -virls -virtu -virus -visas -vised -vises -visie -visit -visne -vison -visor -vista -visto -vitae -vital -vitas -vitex -vitro -vitta -vivas -vivat -vivda -viver -vives -vivid -vixen -vizir -vizor -vleis -vlies -vlogs -voars -vocab -vocal -voces -voddy -vodka -vodou -vodun -voema -vogie -vogue -voice -voids -voila -voile -voips -volae -volar -voled -voles -volet -volks -volta -volte -volti -volts -volva -volve -vomer -vomit -voted -voter -votes -vouch -vouge -voulu -vowed -vowel -vower -voxel -vozhd -vraic -vrils -vroom -vrous -vrouw -vrows -vuggs -vuggy -vughs -vughy -vulgo -vulns -vulva -vutty -vying -waacs -wacke -wacko -wacks -wacky -wadds -waddy -waded -wader -wades -wadge -wadis -wadts -wafer -waffs -wafts -waged -wager -wages -wagga -wagon -wagyu -wahoo -waide -waifs -waift -wails -wains -wairs -waist -waite -waits -waive -wakas -waked -waken -waker -wakes -wakfs -waldo -walds -waled -waler -wales -walie -walis -walks -walla -walls -wally -walty -waltz -wamed -wames -wamus -wands -waned -wanes -waney -wangs -wanks -wanky -wanle -wanly -wanna -wants -wanty -wanze -waqfs -warbs -warby -wards -wared -wares -warez -warks -warms -warns -warps -warre -warst -warts -warty -wases -washy -wasms -wasps -waspy -waste -wasts -watap -watch -water -watts -wauff -waugh -wauks -waulk -wauls -waurs -waved -waver -waves -wavey -wawas -wawes -wawls -waxed -waxen -waxer -waxes -wayed -wazir -wazoo -weald -weals -weamb -weans -wears -weary -weave -webby -weber -wecht -wedel -wedge -wedgy -weeds -weedy -weeke -weeks -weels -weems -weens -weeny -weeps -weepy -weest -weete -weets -wefte -wefts -weids -weigh -weils -weird -weirs -weise -weize -wekas -welch -welds -welke -welks -welkt -wells -welly -welsh -welts -wembs -wench -wends -wenge -wenny -wents -weros -wersh -wests -wetas -wetly -wexed -wexes -whack -whale -whamo -whams -whang -whaps -whare -wharf -whata -whats -whaup -whaur -wheal -whear -wheat -wheel -wheen -wheep -wheft -whelk -whelm -whelp -whens -where -whets -whews -wheys -which -whids -whiff -whift -whigs -while -whilk -whims -whine -whins -whiny -whios -whips -whipt -whirl -whirr -whirs -whish -whisk -whiss -whist -white -whits -whity -whizz -whole -whomp -whoof -whoop -whoot -whops -whore -whorl -whort -whose -whoso -whows -whump -whups -whyda -wicca -wicks -wicky -widdy -widen -wider -wides -widow -width -wield -wiels -wifed -wifes -wifey -wifie -wifty -wigan -wigga -wiggy -wight -wikis -wilco -wilds -wiled -wiles -wilga -wilis -wilja -wills -willy -wilts -wimps -wimpy -wince -winch -winds -windy -wined -wines -winey -winge -wings -wingy -winks -winna -winns -winos -winze -wiped -wiper -wipes -wired -wirer -wires -wirra -wised -wiser -wises -wisha -wisht -wisps -wispy -wists -witan -witch -wited -wites -withe -withs -withy -witty -wived -wiver -wives -wizen -wizes -woads -woald -wocks -wodge -woful -wojus -woken -woker -wokka -wolds -wolfs -wolly -wolve -woman -wombs -womby -women -womyn -wonga -wongi -wonks -wonky -wonts -woods -woody -wooed -wooer -woofs -woofy -woold -wools -wooly -woons -woops -woopy -woose -woosh -wootz -woozy -words -wordy -works -world -worms -wormy -worry -worse -worst -worth -worts -would -wound -woven -wowed -wowee -woxen -wrack -wrang -wraps -wrapt -wrast -wrate -wrath -wrawl -wreak -wreck -wrens -wrest -wrick -wried -wrier -wries -wring -wrist -write -writs -wroke -wrong -wroot -wrote -wroth -wrung -wryer -wryly -wuddy -wudus -wulls -wurst -wuses -wushu -wussy -wuxia -wyled -wyles -wynds -wynns -wyted -wytes -xebec -xenia -xenic -xenon -xeric -xerox -xerus -xoana -xrays -xylan -xylem -xylic -xylol -xylyl -xysti -xysts -yaars -yabas -yabba -yabby -yacca -yacht -yacka -yacks -yaffs -yager -yages -yagis -yahoo -yaird -yakka -yakow -yales -yamen -yampy -yamun -yangs -yanks -yapok -yapon -yapps -yappy -yarak -yarco -yards -yarer -yarfa -yarks -yarns -yarrs -yarta -yarto -yates -yauds -yauld -yaups -yawed -yawey -yawls -yawns -yawny -yawps -ybore -yclad -ycled -ycond -ydrad -ydred -yeads -yeahs -yealm -yeans -yeard -yearn -years -yeast -yecch -yechs -yechy -yedes -yeeds -yeesh -yeggs -yelks -yells -yelms -yelps -yelts -yenta -yente -yerba -yerds -yerks -yeses -yesks -yests -yesty -yetis -yetts -yeuks -yeuky -yeven -yeves -yewen -yexed -yexes -yfere -yield -yiked -yikes -yills -yince -yipes -yippy -yirds -yirks -yirrs -yirth -yites -yitie -ylems -ylike -ylkes -ymolt -ympes -yobbo -yobby -yocks -yodel -yodhs -yodle -yogas -yogee -yoghs -yogic -yogin -yogis -yoick -yojan -yoked -yokel -yoker -yokes -yokul -yolks -yolky -yomim -yomps -yonic -yonis -yonks -yoofs -yoops -yores -yorks -yorps -youks -young -yourn -yours -yourt -youse -youth -yowed -yowes -yowie -yowls -yowza -yrapt -yrent -yrivd -yrneh -ysame -ytost -yuans -yucas -yucca -yucch -yucko -yucks -yucky -yufts -yugas -yuked -yukes -yukky -yukos -yulan -yules -yummo -yummy -yumps -yupon -yuppy -yurta -yurts -yuzus -zabra -zacks -zaida -zaidy -zaire -zakat -zaman -zambo -zamia -zanja -zante -zanza -zanze -zappy -zarfs -zaris -zatis -zaxes -zayin -zazen -zeals -zebec -zebra -zebub -zebus -zedas -zeins -zendo -zerda -zerks -zeros -zests -zesty -zetas -zexes -zezes -zhomo -zibet -ziffs -zigan -zilas -zilch -zilla -zills -zimbi -zimbs -zinco -zincs -zincy -zineb -zines -zings -zingy -zinke -zinky -zippo -zippy -ziram -zitis -zizel -zizit -zlote -zloty -zoaea -zobos -zobus -zocco -zoeae -zoeal -zoeas -zoism -zoist -zombi -zonae -zonal -zonda -zoned -zoner -zones -zonks -zooea -zooey -zooid -zooks -zooms -zoons -zooty -zoppa -zoppo -zoril -zoris -zorro -zouks -zowee -zowie -zulus -zupan -zupas -zuppa -zurfs -zuzim -zygal -zygon -zymes -zymic \ No newline at end of file diff --git a/gym_wordle/dictionary/guess_list.npy b/gym_wordle/dictionary/guess_list.npy deleted file mode 100644 index c235013..0000000 Binary files a/gym_wordle/dictionary/guess_list.npy and /dev/null differ diff --git a/gym_wordle/dictionary/solution_list.csv b/gym_wordle/dictionary/solution_list.csv deleted file mode 100644 index 821a934..0000000 --- a/gym_wordle/dictionary/solution_list.csv +++ /dev/null @@ -1,2315 +0,0 @@ -aback -abase -abate -abbey -abbot -abhor -abide -abled -abode -abort -about -above -abuse -abyss -acorn -acrid -actor -acute -adage -adapt -adept -admin -admit -adobe -adopt -adore -adorn -adult -affix -afire -afoot -afoul -after -again -agape -agate -agent -agile -aging -aglow -agony -agora -agree -ahead -aider -aisle -alarm -album -alert -algae -alibi -alien -align -alike -alive -allay -alley -allot -allow -alloy -aloft -alone -along -aloof -aloud -alpha -altar -alter -amass -amaze -amber -amble -amend -amiss -amity -among -ample -amply -amuse -angel -anger -angle -angry -angst -anime -ankle -annex -annoy -annul -anode -antic -anvil -aorta -apart -aphid -aping -apnea -apple -apply -apron -aptly -arbor -ardor -arena -argue -arise -armor -aroma -arose -array -arrow -arson -artsy -ascot -ashen -aside -askew -assay -asset -atoll -atone -attic -audio -audit -augur -aunty -avail -avert -avian -avoid -await -awake -award -aware -awash -awful -awoke -axial -axiom -axion -azure -bacon -badge -badly -bagel -baggy -baker -baler -balmy -banal -banjo -barge -baron -basal -basic -basil -basin -basis -baste -batch -bathe -baton -batty -bawdy -bayou -beach -beady -beard -beast -beech -beefy -befit -began -begat -beget -begin -begun -being -belch -belie -belle -belly -below -bench -beret -berry -berth -beset -betel -bevel -bezel -bible -bicep -biddy -bigot -bilge -billy -binge -bingo -biome -birch -birth -bison -bitty -black -blade -blame -bland -blank -blare -blast -blaze -bleak -bleat -bleed -bleep -blend -bless -blimp -blind -blink -bliss -blitz -bloat -block -bloke -blond -blood -bloom -blown -bluer -bluff -blunt -blurb -blurt -blush -board -boast -bobby -boney -bongo -bonus -booby -boost -booth -booty -booze -boozy -borax -borne -bosom -bossy -botch -bough -boule -bound -bowel -boxer -brace -braid -brain -brake -brand -brash -brass -brave -bravo -brawl -brawn -bread -break -breed -briar -bribe -brick -bride -brief -brine -bring -brink -briny -brisk -broad -broil -broke -brood -brook -broom -broth -brown -brunt -brush -brute -buddy -budge -buggy -bugle -build -built -bulge -bulky -bully -bunch -bunny -burly -burnt -burst -bused -bushy -butch -butte -buxom -buyer -bylaw -cabal -cabby -cabin -cable -cacao -cache -cacti -caddy -cadet -cagey -cairn -camel -cameo -canal -candy -canny -canoe -canon -caper -caput -carat -cargo -carol -carry -carve -caste -catch -cater -catty -caulk -cause -cavil -cease -cedar -cello -chafe -chaff -chain -chair -chalk -champ -chant -chaos -chard -charm -chart -chase -chasm -cheap -cheat -check -cheek -cheer -chess -chest -chick -chide -chief -child -chili -chill -chime -china -chirp -chock -choir -choke -chord -chore -chose -chuck -chump -chunk -churn -chute -cider -cigar -cinch -circa -civic -civil -clack -claim -clamp -clang -clank -clash -clasp -class -clean -clear -cleat -cleft -clerk -click -cliff -climb -cling -clink -cloak -clock -clone -close -cloth -cloud -clout -clove -clown -cluck -clued -clump -clung -coach -coast -cobra -cocoa -colon -color -comet -comfy -comic -comma -conch -condo -conic -copse -coral -corer -corny -couch -cough -could -count -coupe -court -coven -cover -covet -covey -cower -coyly -crack -craft -cramp -crane -crank -crash -crass -crate -crave -crawl -craze -crazy -creak -cream -credo -creed -creek -creep -creme -crepe -crept -cress -crest -crick -cried -crier -crime -crimp -crisp -croak -crock -crone -crony -crook -cross -croup -crowd -crown -crude -cruel -crumb -crump -crush -crust -crypt -cubic -cumin -curio -curly -curry -curse -curve -curvy -cutie -cyber -cycle -cynic -daddy -daily -dairy -daisy -dally -dance -dandy -datum -daunt -dealt -death -debar -debit -debug -debut -decal -decay -decor -decoy -decry -defer -deign -deity -delay -delta -delve -demon -demur -denim -dense -depot -depth -derby -deter -detox -deuce -devil -diary -dicey -digit -dilly -dimly -diner -dingo -dingy -diode -dirge -dirty -disco -ditch -ditto -ditty -diver -dizzy -dodge -dodgy -dogma -doing -dolly -donor -donut -dopey -doubt -dough -dowdy -dowel -downy -dowry -dozen -draft -drain -drake -drama -drank -drape -drawl -drawn -dread -dream -dress -dried -drier -drift -drill -drink -drive -droit -droll -drone -drool -droop -dross -drove -drown -druid -drunk -dryer -dryly -duchy -dully -dummy -dumpy -dunce -dusky -dusty -dutch -duvet -dwarf -dwell -dwelt -dying -eager -eagle -early -earth -easel -eaten -eater -ebony -eclat -edict -edify -eerie -egret -eight -eject -eking -elate -elbow -elder -elect -elegy -elfin -elide -elite -elope -elude -email -embed -ember -emcee -empty -enact -endow -enema -enemy -enjoy -ennui -ensue -enter -entry -envoy -epoch -epoxy -equal -equip -erase -erect -erode -error -erupt -essay -ester -ether -ethic -ethos -etude -evade -event -every -evict -evoke -exact -exalt -excel -exert -exile -exist -expel -extol -extra -exult -eying -fable -facet -faint -fairy -faith -false -fancy -fanny -farce -fatal -fatty -fault -fauna -favor -feast -fecal -feign -fella -felon -femme -femur -fence -feral -ferry -fetal -fetch -fetid -fetus -fever -fewer -fiber -fibre -ficus -field -fiend -fiery -fifth -fifty -fight -filer -filet -filly -filmy -filth -final -finch -finer -first -fishy -fixer -fizzy -fjord -flack -flail -flair -flake -flaky -flame -flank -flare -flash -flask -fleck -fleet -flesh -flick -flier -fling -flint -flirt -float -flock -flood -floor -flora -floss -flour -flout -flown -fluff -fluid -fluke -flume -flung -flunk -flush -flute -flyer -foamy -focal -focus -foggy -foist -folio -folly -foray -force -forge -forgo -forte -forth -forty -forum -found -foyer -frail -frame -frank -fraud -freak -freed -freer -fresh -friar -fried -frill -frisk -fritz -frock -frond -front -frost -froth -frown -froze -fruit -fudge -fugue -fully -fungi -funky -funny -furor -furry -fussy -fuzzy -gaffe -gaily -gamer -gamma -gamut -gassy -gaudy -gauge -gaunt -gauze -gavel -gawky -gayer -gayly -gazer -gecko -geeky -geese -genie -genre -ghost -ghoul -giant -giddy -gipsy -girly -girth -given -giver -glade -gland -glare -glass -glaze -gleam -glean -glide -glint -gloat -globe -gloom -glory -gloss -glove -glyph -gnash -gnome -godly -going -golem -golly -gonad -goner -goody -gooey -goofy -goose -gorge -gouge -gourd -grace -grade -graft -grail -grain -grand -grant -grape -graph -grasp -grass -grate -grave -gravy -graze -great -greed -green -greet -grief -grill -grime -grimy -grind -gripe -groan -groin -groom -grope -gross -group -grout -grove -growl -grown -gruel -gruff -grunt -guard -guava -guess -guest -guide -guild -guile -guilt -guise -gulch -gully -gumbo -gummy -guppy -gusto -gusty -gypsy -habit -hairy -halve -handy -happy -hardy -harem -harpy -harry -harsh -haste -hasty -hatch -hater -haunt -haute -haven -havoc -hazel -heady -heard -heart -heath -heave -heavy -hedge -hefty -heist -helix -hello -hence -heron -hilly -hinge -hippo -hippy -hitch -hoard -hobby -hoist -holly -homer -honey -honor -horde -horny -horse -hotel -hotly -hound -house -hovel -hover -howdy -human -humid -humor -humph -humus -hunch -hunky -hurry -husky -hussy -hutch -hydro -hyena -hymen -hyper -icily -icing -ideal -idiom -idiot -idler -idyll -igloo -iliac -image -imbue -impel -imply -inane -inbox -incur -index -inept -inert -infer -ingot -inlay -inlet -inner -input -inter -intro -ionic -irate -irony -islet -issue -itchy -ivory -jaunt -jazzy -jelly -jerky -jetty -jewel -jiffy -joint -joist -joker -jolly -joust -judge -juice -juicy -jumbo -jumpy -junta -junto -juror -kappa -karma -kayak -kebab -khaki -kinky -kiosk -kitty -knack -knave -knead -kneed -kneel -knelt -knife -knock -knoll -known -koala -krill -label -labor -laden -ladle -lager -lance -lanky -lapel -lapse -large -larva -lasso -latch -later -lathe -latte -laugh -layer -leach -leafy -leaky -leant -leapt -learn -lease -leash -least -leave -ledge -leech -leery -lefty -legal -leggy -lemon -lemur -leper -level -lever -libel -liege -light -liken -lilac -limbo -limit -linen -liner -lingo -lipid -lithe -liver -livid -llama -loamy -loath -lobby -local -locus -lodge -lofty -logic -login -loopy -loose -lorry -loser -louse -lousy -lover -lower -lowly -loyal -lucid -lucky -lumen -lumpy -lunar -lunch -lunge -lupus -lurch -lurid -lusty -lying -lymph -lynch -lyric -macaw -macho -macro -madam -madly -mafia -magic -magma -maize -major -maker -mambo -mamma -mammy -manga -mange -mango -mangy -mania -manic -manly -manor -maple -march -marry -marsh -mason -masse -match -matey -mauve -maxim -maybe -mayor -mealy -meant -meaty -mecca -medal -media -medic -melee -melon -mercy -merge -merit -merry -metal -meter -metro -micro -midge -midst -might -milky -mimic -mince -miner -minim -minor -minty -minus -mirth -miser -missy -mocha -modal -model -modem -mogul -moist -molar -moldy -money -month -moody -moose -moral -moron -morph -mossy -motel -motif -motor -motto -moult -mound -mount -mourn -mouse -mouth -mover -movie -mower -mucky -mucus -muddy -mulch -mummy -munch -mural -murky -mushy -music -musky -musty -myrrh -nadir -naive -nanny -nasal -nasty -natal -naval -navel -needy -neigh -nerdy -nerve -never -newer -newly -nicer -niche -niece -night -ninja -ninny -ninth -noble -nobly -noise -noisy -nomad -noose -north -nosey -notch -novel -nudge -nurse -nutty -nylon -nymph -oaken -obese -occur -ocean -octal -octet -odder -oddly -offal -offer -often -olden -older -olive -ombre -omega -onion -onset -opera -opine -opium -optic -orbit -order -organ -other -otter -ought -ounce -outdo -outer -outgo -ovary -ovate -overt -ovine -ovoid -owing -owner -oxide -ozone -paddy -pagan -paint -paler -palsy -panel -panic -pansy -papal -paper -parer -parka -parry -parse -party -pasta -paste -pasty -patch -patio -patsy -patty -pause -payee -payer -peace -peach -pearl -pecan -pedal -penal -pence -penne -penny -perch -peril -perky -pesky -pesto -petal -petty -phase -phone -phony -photo -piano -picky -piece -piety -piggy -pilot -pinch -piney -pinky -pinto -piper -pique -pitch -pithy -pivot -pixel -pixie -pizza -place -plaid -plain -plait -plane -plank -plant -plate -plaza -plead -pleat -plied -plier -pluck -plumb -plume -plump -plunk -plush -poesy -point -poise -poker -polar -polka -polyp -pooch -poppy -porch -poser -posit -posse -pouch -pound -pouty -power -prank -prawn -preen -press -price -prick -pride -pried -prime -primo -print -prior -prism -privy -prize -probe -prone -prong -proof -prose -proud -prove -prowl -proxy -prude -prune -psalm -pubic -pudgy -puffy -pulpy -pulse -punch -pupal -pupil -puppy -puree -purer -purge -purse -pushy -putty -pygmy -quack -quail -quake -qualm -quark -quart -quash -quasi -queen -queer -quell -query -quest -queue -quick -quiet -quill -quilt -quirk -quite -quota -quote -quoth -rabbi -rabid -racer -radar -radii -radio -rainy -raise -rajah -rally -ralph -ramen -ranch -randy -range -rapid -rarer -raspy -ratio -ratty -raven -rayon -razor -reach -react -ready -realm -rearm -rebar -rebel -rebus -rebut -recap -recur -recut -reedy -refer -refit -regal -rehab -reign -relax -relay -relic -remit -renal -renew -repay -repel -reply -rerun -reset -resin -retch -retro -retry -reuse -revel -revue -rhino -rhyme -rider -ridge -rifle -right -rigid -rigor -rinse -ripen -riper -risen -riser -risky -rival -river -rivet -roach -roast -robin -robot -rocky -rodeo -roger -rogue -roomy -roost -rotor -rouge -rough -round -rouse -route -rover -rowdy -rower -royal -ruddy -ruder -rugby -ruler -rumba -rumor -rupee -rural -rusty -sadly -safer -saint -salad -sally -salon -salsa -salty -salve -salvo -sandy -saner -sappy -sassy -satin -satyr -sauce -saucy -sauna -saute -savor -savoy -savvy -scald -scale -scalp -scaly -scamp -scant -scare -scarf -scary -scene -scent -scion -scoff -scold -scone -scoop -scope -score -scorn -scour -scout -scowl -scram -scrap -scree -screw -scrub -scrum -scuba -sedan -seedy -segue -seize -semen -sense -sepia -serif -serum -serve -setup -seven -sever -sewer -shack -shade -shady -shaft -shake -shaky -shale -shall -shalt -shame -shank -shape -shard -share -shark -sharp -shave -shawl -shear -sheen -sheep -sheer -sheet -sheik -shelf -shell -shied -shift -shine -shiny -shire -shirk -shirt -shoal -shock -shone -shook -shoot -shore -shorn -short -shout -shove -shown -showy -shrew -shrub -shrug -shuck -shunt -shush -shyly -siege -sieve -sight -sigma -silky -silly -since -sinew -singe -siren -sissy -sixth -sixty -skate -skier -skiff -skill -skimp -skirt -skulk -skull -skunk -slack -slain -slang -slant -slash -slate -slave -sleek -sleep -sleet -slept -slice -slick -slide -slime -slimy -sling -slink -sloop -slope -slosh -sloth -slump -slung -slunk -slurp -slush -slyly -smack -small -smart -smash -smear -smell -smelt -smile -smirk -smite -smith -smock -smoke -smoky -smote -snack -snail -snake -snaky -snare -snarl -sneak -sneer -snide -sniff -snipe -snoop -snore -snort -snout -snowy -snuck -snuff -soapy -sober -soggy -solar -solid -solve -sonar -sonic -sooth -sooty -sorry -sound -south -sower -space -spade -spank -spare -spark -spasm -spawn -speak -spear -speck -speed -spell -spelt -spend -spent -sperm -spice -spicy -spied -spiel -spike -spiky -spill -spilt -spine -spiny -spire -spite -splat -split -spoil -spoke -spoof -spook -spool -spoon -spore -sport -spout -spray -spree -sprig -spunk -spurn -spurt -squad -squat -squib -stack -staff -stage -staid -stain -stair -stake -stale -stalk -stall -stamp -stand -stank -stare -stark -start -stash -state -stave -stead -steak -steal -steam -steed -steel -steep -steer -stein -stern -stick -stiff -still -stilt -sting -stink -stint -stock -stoic -stoke -stole -stomp -stone -stony -stood -stool -stoop -store -stork -storm -story -stout -stove -strap -straw -stray -strip -strut -stuck -study -stuff -stump -stung -stunk -stunt -style -suave -sugar -suing -suite -sulky -sully -sumac -sunny -super -surer -surge -surly -sushi -swami -swamp -swarm -swash -swath -swear -sweat -sweep -sweet -swell -swept -swift -swill -swine -swing -swirl -swish -swoon -swoop -sword -swore -sworn -swung -synod -syrup -tabby -table -taboo -tacit -tacky -taffy -taint -taken -taker -tally -talon -tamer -tango -tangy -taper -tapir -tardy -tarot -taste -tasty -tatty -taunt -tawny -teach -teary -tease -teddy -teeth -tempo -tenet -tenor -tense -tenth -tepee -tepid -terra -terse -testy -thank -theft -their -theme -there -these -theta -thick -thief -thigh -thing -think -third -thong -thorn -those -three -threw -throb -throw -thrum -thumb -thump -thyme -tiara -tibia -tidal -tiger -tight -tilde -timer -timid -tipsy -titan -tithe -title -toast -today -toddy -token -tonal -tonga -tonic -tooth -topaz -topic -torch -torso -torus -total -totem -touch -tough -towel -tower -toxic -toxin -trace -track -tract -trade -trail -train -trait -tramp -trash -trawl -tread -treat -trend -triad -trial -tribe -trice -trick -tried -tripe -trite -troll -troop -trope -trout -trove -truce -truck -truer -truly -trump -trunk -truss -trust -truth -tryst -tubal -tuber -tulip -tulle -tumor -tunic -turbo -tutor -twang -tweak -tweed -tweet -twice -twine -twirl -twist -twixt -tying -udder -ulcer -ultra -umbra -uncle -uncut -under -undid -undue -unfed -unfit -unify -union -unite -unity -unlit -unmet -unset -untie -until -unwed -unzip -upper -upset -urban -urine -usage -usher -using -usual -usurp -utile -utter -vague -valet -valid -valor -value -valve -vapid -vapor -vault -vaunt -vegan -venom -venue -verge -verse -verso -verve -vicar -video -vigil -vigor -villa -vinyl -viola -viper -viral -virus -visit -visor -vista -vital -vivid -vixen -vocal -vodka -vogue -voice -voila -vomit -voter -vouch -vowel -vying -wacky -wafer -wager -wagon -waist -waive -waltz -warty -waste -watch -water -waver -waxen -weary -weave -wedge -weedy -weigh -weird -welch -welsh -wench -whack -whale -wharf -wheat -wheel -whelp -where -which -whiff -while -whine -whiny -whirl -whisk -white -whole -whoop -whose -widen -wider -widow -width -wield -wight -willy -wimpy -wince -winch -windy -wiser -wispy -witch -witty -woken -woman -women -woody -wooer -wooly -woozy -wordy -world -worry -worse -worst -worth -would -wound -woven -wrack -wrath -wreak -wreck -wrest -wring -wrist -write -wrong -wrote -wrung -wryly -yacht -yearn -yeast -yield -young -youth -zebra -zesty -zonal \ No newline at end of file diff --git a/gym_wordle/dictionary/solution_list.npy b/gym_wordle/dictionary/solution_list.npy deleted file mode 100644 index a03dd86..0000000 Binary files a/gym_wordle/dictionary/solution_list.npy and /dev/null differ diff --git a/gym_wordle/utils.py b/gym_wordle/utils.py deleted file mode 100644 index 2b04f1e..0000000 --- a/gym_wordle/utils.py +++ /dev/null @@ -1,93 +0,0 @@ -import numpy as np -import numpy.typing as npt - -from pathlib import Path - - -_chars = ' abcdefghijklmnopqrstuvwxyz' -_char_d = {c: i for i, c in enumerate(_chars)} - - -def to_english(array: npt.NDArray[np.int64]) -> str: - """Converts a numpy integer array into a corresponding English string. - - Args: - array: Word in array (int) form. It is assumed that each integer in the - array is between 0,...,26 (inclusive). - - Returns: - A (lowercase) string representation of the word. - """ - return ''.join(_chars[i] for i in array) - - -def to_array(word: str) -> npt.NDArray[np.int64]: - """Converts a string of characters into a corresponding numpy array. - - Args: - word: Word in string form. It is assumed that each character in the - string is either an empty space ' ' or lowercase alphabetical - character. - - Returns: - An array representation of the word. - """ - return np.array([_char_d[c] for c in word]) - - -def get_words(category: str, build: bool = False) -> npt.NDArray[np.int64]: - """Loads a list of words in array form. - - If specified, this will recompute the list from the human-readable list of - words, and save the results in array form. - - Args: - category: Either 'guess' or 'solution', which corresponds to the list - of acceptable guess words and the list of acceptable solution words. - build: If True, recomputes and saves the array-version of the computed - list for future access. - - Returns: - An array representation of the list of words specified by the category. - This array has two dimensions, and the number of columns is fixed at - five. - """ - assert category in {'guess', 'solution'} - - arr_path = Path(__file__).parent / f'dictionary/{category}_list.npy' - if build: - list_path = Path(__file__).parent / f'dictionary/{category}_list.csv' - - with open(list_path, 'r') as f: - words = np.array([to_array(line.strip()) for line in f]) - np.save(arr_path, words) - - return np.load(arr_path) - - -def play(): - """Play Wordle yourself!""" - import gym - import gym_wordle - - env = gym.make('Wordle-v0') # load the environment - - env.reset() - solution = to_english(env.unwrapped.solution_space[env.solution]).upper() # no peeking! - - done = False - - while not done: - action = -1 - - # in general, the environment won't be forgiving if you input an - # invalid word, but for this function I want to let you screw up user - # input without consequence, so just loops until valid input is taken - while not env.action_space.contains(action): - guess = input('Guess: ') - action = env.unwrapped.action_space.index_of(to_array(guess)) - - state, reward, done, info = env.step(action) - env.render() - - print(f"The word was {solution}") diff --git a/gym_wordle/wordle.py b/gym_wordle/wordle.py deleted file mode 100644 index 9152117..0000000 --- a/gym_wordle/wordle.py +++ /dev/null @@ -1,353 +0,0 @@ -import gymnasium as gym -import numpy as np -import numpy.typing as npt -from sty import fg, bg, ef, rs - -from collections import Counter -from gym_wordle.utils import to_english, to_array, get_words -from typing import Optional -from collections import defaultdict - - -class WordList(gym.spaces.Discrete): - """Super class for defining a space of valid words according to a specified - list. - - The space is a subclass of gym.spaces.Discrete, where each element - corresponds to an index of a valid word in the word list. The obfuscation - is necessary for more direct implementation of RL algorithms, which expect - spaces of less sophisticated form. - - In addition to the default methods of the Discrete space, it implements - a __getitem__ method for easy index lookup, and an index_of method to - convert potential words into their corresponding index (if they exist). - """ - - def __init__(self, words: npt.NDArray[np.int64], **kwargs): - """ - Args: - words: Collection of words in array form with shape (_, 5), where - each word is a row of the array. Each array element is an integer - between 0,...,26 (inclusive). - kwargs: See documentation for gym.spaces.MultiDiscrete - """ - super().__init__(words.shape[0], **kwargs) - self.words = words - - def __getitem__(self, index: int) -> npt.NDArray[np.int64]: - """Obtains the (int-encoded) word associated with the given index. - - Args: - index: Index for the list of words. - - Returns: - Associated word at the position specified by index. - """ - return self.words[index] - - def index_of(self, word: npt.NDArray[np.int64]) -> int: - """Given a word, determine its index in the list (if it exists), - otherwise returning -1 if no index exists. - - Args: - word: Word to find in the word list. - - Returns: - The index of the given word if it exists, otherwise -1. - """ - try: - index, = np.nonzero((word == self.words).all(axis=1)) - return index[0] - except: - return -1 - - -class SolutionList(WordList): - """Space for *solution* words to the Wordle environment. - - In the game Wordle, there are two different collections of words: - - * "guesses", which the game accepts as valid words to use to guess the - answer. - * "solutions", which the game uses to choose solutions from. - - Of course, the set of solutions is a strict subset of the set of guesses. - - This class represents the set of solution words. - """ - - def __init__(self, **kwargs): - """ - Args: - kwargs: See documentation for gym.spaces.MultiDiscrete - """ - words = get_words('solution') - super().__init__(words, **kwargs) - - -class WordleObsSpace(gym.spaces.Box): - """Implementation of the state (observation) space in terms of gym - primitives, in this case, gym.spaces.Box. - - The Wordle observation space can be thought of as a 6x5 array with two - channels: - - - the character channel, indicating which characters are placed on the - board (unfilled rows are marked with the empty character, 0) - - the flag channel, indicating the in-game information associated with - each character's placement (green highlight, yellow highlight, etc.) - - where there are 6 rows, one for each turn in the game, and 5 columns, since - the solution will always be a word of length 5. - - For simplicity, and compatibility with stable_baselines algorithms, - this multichannel is modeled as a 6x10 array, where the two channels are - horizontally appended (along columns). Thus each row in the observation - should be interpreted as c0 c1 c2 c3 c4 f0 f1 f2 f3 f4 when the word is - c0...c4 and its associated flags are f0...f4. - """ - - def __init__(self, **kwargs): - self.n_rows = 6 - self.n_cols = 5 - self.max_char = 26 - self.max_flag = 4 - - low = np.zeros((self.n_rows, 2*self.n_cols)) - high = np.c_[np.full((self.n_rows, self.n_cols), self.max_char), - np.full((self.n_rows, self.n_cols), self.max_flag)] - - super().__init__(low, high, dtype=np.int64, **kwargs) - - -class GuessList(WordList): - """Space for *guess* words to the Wordle environment. - - This class represents the set of guess words. - """ - - def __init__(self, **kwargs): - """ - Args: - kwargs: See documentation for gym.spaces.MultiDiscrete - """ - words = get_words('guess') - super().__init__(words, **kwargs) - - -class WordleEnv(gym.Env): - metadata = {'render.modes': ['human']} - - # Character flag codes - no_char = 0 - right_pos = 1 - wrong_pos = 2 - wrong_char = 3 - - def __init__(self): - super().__init__() - - self.action_space = GuessList() - self.solution_space = SolutionList() - - # Example setup based on the flattened state size you're now using - num_position_availability = 26 * 5 # 26 letters for each of the 5 positions - num_global_availability = 26 # Global letter availability - num_letter_found_flags = 5 # One flag for each position - total_size = num_position_availability + num_global_availability + num_letter_found_flags - - # Define the observation space to match the flattened state format - self.observation_space = gym.spaces.Box(low=0, high=2, shape=(total_size,), dtype=np.float32) - - self._highlights = { - self.right_pos: (bg.green, bg.rs), - self.wrong_pos: (bg.yellow, bg.rs), - self.wrong_char: ('', ''), - self.no_char: ('', ''), - } - - self.n_rounds = 6 - self.n_letters = 5 - self.info = { - 'correct': False, - 'guesses': set(), - 'known_positions': np.full(5, -1), # -1 for unknown, else letter index - 'known_letters': set(), # Letters known to be in the word - 'not_in_word': set(), # Letters known not to be in the word - 'tried_positions': defaultdict(set) # Positions tried for each letter - } - self.reset() - - def _highlighter(self, char: str, flag: int) -> str: - """Terminal renderer functionality. Properly highlights a character - based on the flag associated with it. - - Args: - char: Character in question. - flag: Associated flag, one of: - - 0: no character (render no background) - - 1: right position (render green background) - - 2: wrong position (render yellow background) - - 3: wrong character (render no background) - - Returns: - Correct ASCII sequence producing the desired character in the - correct background. - """ - front, back = self._highlights[flag] - return front + char + back - - def reset(self, seed=None, options=None): - """Reset the environment to an initial state and returns an initial - observation. - - Note: The observation space instance should be a Box space. - - Returns: - state (object): The initial observation of the space. - """ - self.round = 0 - self.solution = self.solution_space.sample() - self.soln_hash = set(self.solution_space[self.solution]) - - self.state = { - 'position_availability': [np.ones(26) for _ in range(5)], # Each position can initially have any letter - 'global_availability': np.ones(26), # Initially, all letters are available - 'letter_found': np.zeros(5) # Initially, no correct letters are found - } - - self.info = { - 'correct': False, - 'guesses': set(), - 'known_positions': np.full(5, -1), - 'known_letters': set(), - 'not_in_word': set(), - 'tried_positions': defaultdict(set) - } - - self.simulate_first_guess() - - return self.get_observation(), self.info - - def simulate_first_guess(self): - fixed_first_guess = "rates" # Example: Using 'rates' as the fixed first guess - # Convert the fixed guess into the appropriate format (e.g., indices of letters) - fixed_guess_indices = to_array(fixed_first_guess) - solution_indices = self.solution_space[self.solution] - - for pos in range(5): # Iterate over each position in the word - letter_idx = fixed_guess_indices[pos] - if letter_idx == solution_indices[pos]: # Correct letter in the correct position - self.state['position_availability'][pos] = np.zeros(26) - self.state['position_availability'][pos][letter_idx] = 1 - self.state['letter_found'][pos] = 1 - elif letter_idx in solution_indices: # Correct letter in the wrong position - self.state['position_availability'][pos][letter_idx] = 0 - # Mark this letter as still available in other positions - for other_pos in range(5): - if self.state['letter_found'][other_pos] == 0: # If not already found - self.state['position_availability'][other_pos][letter_idx] = 1 - else: # Letter not in the word - self.state['global_availability'][letter_idx] = 0 - # Update all positions to reflect this letter is not in the word - for other_pos in range(5): - self.state['position_availability'][other_pos][letter_idx] = 0 - self.round = 1 # Increment round to reflect that first guess has been simulated - - def render(self, mode: str = 'human'): - """Renders the Wordle environment. - - Currently supported render modes: - - human: renders the Wordle game to the terminal. - - Args: - mode: the mode to render with. - """ - if mode == 'human': - for row in self.state: - text = ''.join(map( - self._highlighter, - to_english(row[:self.n_letters]).upper(), - row[self.n_letters:] - )) - print(text) - else: - super().render(mode=mode) - - def step(self, action): - assert self.action_space.contains(action), 'Invalid word!' - - guessed_word = self.action_space[action] - solution_word = self.solution_space[self.solution] - - reward = 0 - correct_guess = np.array_equal(guessed_word, solution_word) - - # Initialize flags for current guess based on the new state structure - current_flags = np.zeros((self.n_letters, 26)) # Replaced with a more detailed flag system - - # Track newly discovered information - new_info = False - - for i in range(self.n_letters): - guessed_letter = guessed_word[i] - 1 - if guessed_letter in solution_word: - if guessed_letter in self.info['not_in_word']: - reward -= 2 # Penalize for reusing a letter found to not be in the word - - if guessed_letter == solution_word[i]: - # Handle correct letter in the correct position - current_flags[i, :] = 0 # Set all other letters to not possible - current_flags[i, guessed_letter] = 2 # Mark this letter as correct - self.info['known_positions'][i] = 1 # Update known_positions - reward += 10 # Reward for correct placement - new_info = True - else: - # Correct letter, wrong position - if self.info['known_positions'][i] == 0: - # Only update if we haven't already found the correct letter for this position - current_flags[:, guessed_letter] = 2 # Mark this letter as found in another position - reward += 5 - new_info = True - else: - # Letter not in word - if guessed_letter not in self.info['not_in_word']: - self.info['not_in_word'].add(guessed_letter) - reward -= 2 # Penalize for guessing a letter not in the word - new_info = True - for pos in range(self.n_letters): - # Update all positions to reflect this letter is not correct - current_flags[pos, guessed_letter] = 0 - - # Update global letter availability based on the guess - for letter in range(26): - if letter not in guessed_word or letter in self.info['not_in_word']: - self.state['global_availability'][letter] = 0 - - # Check if the game is over - done = self.round == self.n_rounds - 1 or correct_guess - self.info['correct'] = correct_guess - - if correct_guess: - reward += 100 # Major reward for winning - elif done: - reward -= 50 # Penalty for losing without using new information effectively - elif not new_info: - reward -= 10 # Penalty if no new information was used in this guess - - self.round += 1 - - return self.get_observation(), reward, done, False, self.info - - def get_observation(self): - # Flatten the position-specific letter availability - position_availability_flat = np.concatenate(self.state['position_availability']) - - # Global availability is already a 1D array, but ensure consistency in data handling - global_availability_flat = self.state['global_availability'].flatten() - - # Concatenate all parts of the state into a single flat array for the DQN input - full_state_flat = np.concatenate( - [position_availability_flat, global_availability_flat, self.state['letter_found']]) - - return full_state_flat diff --git a/letter_guess.py b/letter_guess.py index 63792ea..94f5865 100644 --- a/letter_guess.py +++ b/letter_guess.py @@ -15,18 +15,17 @@ class LetterGuessingEnv(gym.Env): metadata = {'render_modes': ['human']} - def __init__(self, valid_words, seed): + def __init__(self, valid_words, seed=None): self.action_space = spaces.Discrete(26) - self.observation_space = spaces.Box(low=0, high=2, shape=(26*2 + 26*4,), dtype=np.int32) + self.observation_space = spaces.Box(low=0, high=1, shape=(26*2 + 26*4,), dtype=np.int32) self.valid_words = valid_words # List of valid Wordle words self.target_word = '' # Target word for the current episode - self.valid_words_str = '_'.join(self.valid_words) + '_' + self.valid_words_str = ' '.join(self.valid_words) + ' ' self.letter_flags = None self.letter_positions = None self.guessed_letters = set() self.guess_prefix = "" # Tracks the current guess prefix - self.round = 1 self.reset() @@ -47,16 +46,21 @@ class LetterGuessingEnv(gym.Env): self.guessed_letters.add(letter) # Update letter flags based on whether the letter is in the target word - if self.target_word_encoded[letter_index] == 1: + if self.target_word[position] == letter: self.letter_flags[letter_index, :] = [1, 0] # Update flag for correct guess + elif letter in self.target_word: + self.letter_flags[letter_index, :] = [0, 1] # Update flag for correct guess wrong position else: self.letter_flags[letter_index, :] = [0, 0] # Update flag for incorrect guess reward = 1 # Reward for adding new information by trying a new letter # Update the letter_positions matrix to reflect the new guess - self.letter_positions[:, position] = 0 - self.letter_positions[letter_index, position] = 1 + if position == 4: + self.letter_positions[:,:] = 1 + else: + self.letter_positions[:, position] = 0 + self.letter_positions[letter_index, position] = 1 # Use regex to check if the current prefix can lead to a valid word if not re.search(r'\b' + self.guess_prefix, self.valid_words_str): @@ -65,25 +69,30 @@ class LetterGuessingEnv(gym.Env): # guessed a full word so we reset our guess prefix to guess next round if len(self.guess_prefix) == len(self.target_word): - self.guess_prefix == '' + self.guess_prefix = '' self.round += 1 - # end after 3 rounds of total guesses - if self.round == 3: + # end after 5 rounds of total guesses + if self.round == 2: + # reward = 5 done = True obs = self._get_obs() + + if reward < -50: + print(obs, reward, done) return obs, reward, done, False, {} - def reset(self, seed): + def reset(self, seed=None): self.target_word = random.choice(self.valid_words) - self.target_word_encoded = self.encode_word(self.target_word) - self.letter_flags = np.ones((26, 2)) * 2 - self.letter_positions = np.ones((26, 4)) + # self.target_word_encoded = self.encode_word(self.target_word) + self.letter_flags = np.ones((26, 2), dtype=np.int32) + self.letter_positions = np.ones((26, 4), dtype=np.int32) self.guessed_letters = set() self.guess_prefix = "" # Reset the guess prefix for the new episode - return self._get_obs() + self.round = 1 + return self._get_obs(), {} def encode_word(self, word): encoded = np.zeros((26,))