Some debugging of the q reword function
This commit is contained in:
1 file changed
+353
-130
+353
-130
@@ -126,7 +126,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 97,
|
"execution_count": 2,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -140,7 +140,12 @@
|
|||||||
"from ipywidgets import interact\n",
|
"from ipywidgets import interact\n",
|
||||||
"import matplotlib.pyplot as plt\n",
|
"import matplotlib.pyplot as plt\n",
|
||||||
"import seaborn as sns\n",
|
"import seaborn as sns\n",
|
||||||
"import pandas as pd"
|
"import pandas as pd\n",
|
||||||
|
"\n",
|
||||||
|
"import torch\n",
|
||||||
|
"import torch.nn as nn\n",
|
||||||
|
"import torch.nn.functional as F\n",
|
||||||
|
"import torch.optim as optim"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -154,7 +159,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 98,
|
"execution_count": 3,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -343,7 +348,7 @@
|
|||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 300x300 with 1 Axes>"
|
"<Figure size 300x300 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -353,7 +358,11 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
"def plot_othello_board(board: np.ndarray, ax=None) -> None:\n",
|
"def plot_othello_board(\n",
|
||||||
|
" board: np.ndarray,\n",
|
||||||
|
" action: np.ndarray | None = None,\n",
|
||||||
|
" ax=None,\n",
|
||||||
|
") -> None:\n",
|
||||||
" \"\"\"Plots a single otello board.\n",
|
" \"\"\"Plots a single otello board.\n",
|
||||||
"\n",
|
"\n",
|
||||||
" If a matplot axis object is given the board will be plotted into that axis. If not an axis object will be generated.\n",
|
" If a matplot axis object is given the board will be plotted into that axis. If not an axis object will be generated.\n",
|
||||||
@@ -371,14 +380,16 @@
|
|||||||
" fig, ax = plt.subplots(figsize=(fig_size, fig_size))\n",
|
" fig, ax = plt.subplots(figsize=(fig_size, fig_size))\n",
|
||||||
"\n",
|
"\n",
|
||||||
" ax.set_facecolor(\"#66FF00\")\n",
|
" ax.set_facecolor(\"#66FF00\")\n",
|
||||||
|
" if action is not None:\n",
|
||||||
|
" ax.scatter(action[0], action[1], s=350 if plot_all else 200, c=\"red\")\n",
|
||||||
" for x_pos, y_pos in itertools.product(range(BOARD_SIZE), range(BOARD_SIZE)):\n",
|
" for x_pos, y_pos in itertools.product(range(BOARD_SIZE), range(BOARD_SIZE)):\n",
|
||||||
" if board[x_pos, y_pos] == -1:\n",
|
" if board[x_pos, y_pos] == PLAYER:\n",
|
||||||
" color = \"white\"\n",
|
" color = \"white\"\n",
|
||||||
" elif board[x_pos, y_pos] == 1:\n",
|
" elif board[x_pos, y_pos] == ENEMY:\n",
|
||||||
" color = \"black\"\n",
|
" color = \"black\"\n",
|
||||||
" else:\n",
|
" else:\n",
|
||||||
" continue\n",
|
" continue\n",
|
||||||
" ax.scatter(y_pos, x_pos, s=300 if plot_all else 150, c=color)\n",
|
" ax.scatter(x_pos, y_pos, s=280 if plot_all else 140, c=color)\n",
|
||||||
" for x_pos in range(-1, 8):\n",
|
" for x_pos in range(-1, 8):\n",
|
||||||
" ax.axhline(x_pos + 0.5, color=\"black\", lw=2)\n",
|
" ax.axhline(x_pos + 0.5, color=\"black\", lw=2)\n",
|
||||||
" ax.axvline(x_pos + 0.5, color=\"black\", lw=2)\n",
|
" ax.axvline(x_pos + 0.5, color=\"black\", lw=2)\n",
|
||||||
@@ -388,12 +399,15 @@
|
|||||||
" ax.set_xticklabels(list(\"ABCDEFGH\"))\n",
|
" ax.set_xticklabels(list(\"ABCDEFGH\"))\n",
|
||||||
" ax.set_yticks(np.arange(8))\n",
|
" ax.set_yticks(np.arange(8))\n",
|
||||||
" ax.set_yticklabels(list(\"12345678\"))\n",
|
" ax.set_yticklabels(list(\"12345678\"))\n",
|
||||||
|
" ax.set_xlabel(\n",
|
||||||
|
" f\"W{np.sum(board == ENEMY)} / {np.sum(board == 0)} / B{np.sum(board == PLAYER)}\"\n",
|
||||||
|
" )\n",
|
||||||
" if plot_all:\n",
|
" if plot_all:\n",
|
||||||
" plt.tight_layout()\n",
|
" plt.tight_layout()\n",
|
||||||
" plt.show()\n",
|
" plt.show()\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"plot_othello_board(get_new_games(1)[0])"
|
"plot_othello_board(get_new_games(1)[0], action=np.array([3, 3]))"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -402,7 +416,7 @@
|
|||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"def plot_othello_boards(boards: np.ndarray) -> None:\n",
|
"def plot_othello_boards(boards: np.ndarray, actions: np.ndarray | None = None) -> None:\n",
|
||||||
" \"\"\"Plots multiple boards into subplots.\n",
|
" \"\"\"Plots multiple boards into subplots.\n",
|
||||||
"\n",
|
"\n",
|
||||||
" The plots are shown directly.\n",
|
" The plots are shown directly.\n",
|
||||||
@@ -414,6 +428,11 @@
|
|||||||
" assert boards.shape[1:] == (BOARD_SIZE, BOARD_SIZE)\n",
|
" assert boards.shape[1:] == (BOARD_SIZE, BOARD_SIZE)\n",
|
||||||
" assert boards.shape[0] < 70\n",
|
" assert boards.shape[0] < 70\n",
|
||||||
"\n",
|
"\n",
|
||||||
|
" if actions is not None:\n",
|
||||||
|
" assert len(actions.shape) == 2\n",
|
||||||
|
" assert actions.shape[1] == 2\n",
|
||||||
|
" assert boards.shape[0] == actions.shape[0]\n",
|
||||||
|
"\n",
|
||||||
" plots_per_row = 4\n",
|
" plots_per_row = 4\n",
|
||||||
" rows = int(np.ceil(boards.shape[0] / plots_per_row))\n",
|
" rows = int(np.ceil(boards.shape[0] / plots_per_row))\n",
|
||||||
" fig, axs = plt.subplots(rows, plots_per_row, figsize=(12, 3 * rows))\n",
|
" fig, axs = plt.subplots(rows, plots_per_row, figsize=(12, 3 * rows))\n",
|
||||||
@@ -421,18 +440,21 @@
|
|||||||
" if game_index >= boards.shape[0]:\n",
|
" if game_index >= boards.shape[0]:\n",
|
||||||
" fig.delaxes(ax)\n",
|
" fig.delaxes(ax)\n",
|
||||||
" else:\n",
|
" else:\n",
|
||||||
" plot_othello_board(boards[game_index], ax)\n",
|
" action = actions[game_index] if actions is not None else None\n",
|
||||||
|
" plot_othello_board(boards[game_index], action=action, ax=ax)\n",
|
||||||
" plt.tight_layout()\n",
|
" plt.tight_layout()\n",
|
||||||
" plt.show()"
|
" plt.show()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 10,
|
"execution_count": 58,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [],
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"def drop_duplicate_boards(boards: np.ndarray) -> np.ndarray:\n",
|
"def drop_duplicate_boards(\n",
|
||||||
|
" boards: np.ndarray, actions: np.ndarray | None\n",
|
||||||
|
") -> tuple[np.ndarray, np.ndarray | None]:\n",
|
||||||
" \"\"\"Drop boards that follow each other and are duplicates will be dropped.\n",
|
" \"\"\"Drop boards that follow each other and are duplicates will be dropped.\n",
|
||||||
"\n",
|
"\n",
|
||||||
" Args:\n",
|
" Args:\n",
|
||||||
@@ -441,7 +463,13 @@
|
|||||||
" Returns:\n",
|
" Returns:\n",
|
||||||
" A sequence of boards where boards that where equal are dropped.\n",
|
" A sequence of boards where boards that where equal are dropped.\n",
|
||||||
" \"\"\"\n",
|
" \"\"\"\n",
|
||||||
" return boards[~np.all(boards == np.roll(boards, axis=0, shift=1), axis=(1, 2))]"
|
" non_duplicates = ~np.all(boards == np.roll(boards, axis=0, shift=1), axis=(1, 2))\n",
|
||||||
|
" return (\n",
|
||||||
|
" boards[non_duplicates],\n",
|
||||||
|
" np.roll(actions, axis=0, shift=1)[non_duplicates]\n",
|
||||||
|
" if actions is not None\n",
|
||||||
|
" else None,\n",
|
||||||
|
" )"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -499,8 +527,8 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"8.86 ms ± 584 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
|
"9.82 ms ± 375 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)\n",
|
||||||
"860 ms ± 12.7 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
"984 ms ± 20.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -724,9 +752,9 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"182 µs ± 6.7 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
|
"193 µs ± 2.65 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n",
|
||||||
"34.4 µs ± 1.82 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
|
"35.1 µs ± 335 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n",
|
||||||
"32.2 µs ± 743 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
|
"38 µs ± 1.58 µs per loop (mean ± std. dev. of 7 runs, 10,000 loops each)\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -816,12 +844,12 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"86.7 ms ± 1.18 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
"101 ms ± 2.58 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 300x300 with 1 Axes>"
|
"<Figure size 300x300 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -913,7 +941,8 @@
|
|||||||
"plot_othello_board(\n",
|
"plot_othello_board(\n",
|
||||||
" do_moves(\n",
|
" do_moves(\n",
|
||||||
" get_new_games(EXAMPLE_STACK_SIZE), np.array([[2, 3]] * EXAMPLE_STACK_SIZE)\n",
|
" get_new_games(EXAMPLE_STACK_SIZE), np.array([[2, 3]] * EXAMPLE_STACK_SIZE)\n",
|
||||||
" )[0]\n",
|
" )[0],\n",
|
||||||
|
" action=np.array([2, 3]),\n",
|
||||||
")"
|
")"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1112,13 +1141,13 @@
|
|||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"1.02 s ± 31.3 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
|
"1.11 s ± 35.8 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n",
|
||||||
"1.01 s ± 35 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
"1.14 s ± 73.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 1200x600 with 8 Axes>"
|
"<Figure size 1200x600 with 8 Axes>"
|
||||||
]
|
]
|
||||||
@@ -1174,14 +1203,14 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 22,
|
"execution_count": 27,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"scrolled": false
|
"scrolled": false
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "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 truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 1200x4800 with 61 Axes>"
|
"<Figure size 1200x4800 with 61 Axes>"
|
||||||
]
|
]
|
||||||
@@ -1225,21 +1254,62 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"simulation_results = simulate_game(1, (RandomPolicy(1), RandomPolicy(1)))\n",
|
"simulation_results = simulate_game(1, (RandomPolicy(1), RandomPolicy(1)))\n",
|
||||||
"plot_othello_boards(\n",
|
"_unique_bords, _unique_actions = drop_duplicate_boards(\n",
|
||||||
" drop_duplicate_boards(np.reshape(simulation_results[0], (-1, 8, 8)))\n",
|
" simulation_results[0].reshape(-1, 8, 8), simulation_results[1].reshape(-1, 2)\n",
|
||||||
")"
|
")\n",
|
||||||
|
"plot_othello_boards(_unique_bords, actions=_unique_actions)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 23,
|
"execution_count": 24,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"(70, 8, 8)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 24,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"np.reshape(simulation_results[0], (-1, 8, 8)).shape"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 25,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"(70, 2)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 25,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"simulation_results[1].reshape(-1, 2).shape"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 26,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"name": "stdout",
|
"name": "stdout",
|
||||||
"output_type": "stream",
|
"output_type": "stream",
|
||||||
"text": [
|
"text": [
|
||||||
"10.5 s ± 737 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
"10.4 s ± 244 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)\n"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -1273,7 +1343,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 99,
|
"execution_count": 28,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -1308,7 +1378,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 107,
|
"execution_count": 29,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -1317,7 +1387,7 @@
|
|||||||
"(70, 10000, 8, 8)"
|
"(70, 10000, 8, 8)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 107,
|
"execution_count": 29,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
@@ -1343,43 +1413,23 @@
|
|||||||
"Those possible turms then where counted for all games in the history stack."
|
"Those possible turms then where counted for all games in the history stack."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 108,
|
|
||||||
"metadata": {},
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"(70, 10000)"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 108,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"count_poss_turns = np.sum(_poss_turns, axis=(2, 3))\n",
|
|
||||||
"count_poss_turns.shape"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"cell_type": "markdown",
|
"cell_type": "markdown",
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"source": [
|
"source": [
|
||||||
"And the po"
|
"The action space size can be drawn into a histogram by turn and a curve over the mean action space size.\n",
|
||||||
|
"This can be used to analyse in which area of the game that cant be solved abolutely."
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 145,
|
"execution_count": 34,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"application/vnd.jupyter.widget-view+json": {
|
"application/vnd.jupyter.widget-view+json": {
|
||||||
"model_id": "b098bb4da154488b8b4c22722833e8c0",
|
"model_id": "ced6183663884763a686b1939c31603b",
|
||||||
"version_major": 2,
|
"version_major": 2,
|
||||||
"version_minor": 0
|
"version_minor": 0
|
||||||
},
|
},
|
||||||
@@ -1392,15 +1442,23 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
|
"count_poss_turns = np.sum(_poss_turns, axis=(2, 3))\n",
|
||||||
"mean_possibilitie_count = np.mean(count_poss_turns, axis=1)\n",
|
"mean_possibilitie_count = np.mean(count_poss_turns, axis=1)\n",
|
||||||
"std_possibilitie_count = np.std(count_poss_turns, axis=1)\n",
|
"std_possibilitie_count = np.std(count_poss_turns, axis=1)\n",
|
||||||
|
"cum_prod = count_poss_turns\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"@interact(turn=(0, 69))\n",
|
"@interact(turn=(0, 69))\n",
|
||||||
"def poss_turn_count(turn):\n",
|
"def poss_turn_count(turn):\n",
|
||||||
" fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 7))\n",
|
" fig, axes = plt.subplots(2, 2, figsize=(15, 8))\n",
|
||||||
|
" ax1, ax2, ax3, ax4 = axes.flatten()\n",
|
||||||
|
" _mean_possibilitie_count = mean_possibilitie_count.copy()\n",
|
||||||
|
" _std_possibilitie_count = std_possibilitie_count.copy()\n",
|
||||||
|
" _mean_possibilitie_count[_mean_possibilitie_count <= 1] = 1\n",
|
||||||
|
" _std_possibilitie_count[_std_possibilitie_count <= 1] = 1\n",
|
||||||
|
" np.cumprod(_mean_possibilitie_count[::-1], axis=0)[::-1]\n",
|
||||||
" fig.suptitle(\n",
|
" fig.suptitle(\n",
|
||||||
" f\"Action space size analysis\\nThe total size is estimated to be around {np.prod(np.extract(mean_possibilitie_count, mean_possibilitie_count)):.4g}\"\n",
|
" f\"Action space size analysis\\nThe total size is estimated to be around {np.prod(_mean_possibilitie_count):.4g}\"\n",
|
||||||
" )\n",
|
" )\n",
|
||||||
" ax1.hist(count_poss_turns[turn], density=True)\n",
|
" ax1.hist(count_poss_turns[turn], density=True)\n",
|
||||||
" ax1.set_title(f\"Histogram of the action space size for turn {turn}\")\n",
|
" ax1.set_title(f\"Histogram of the action space size for turn {turn}\")\n",
|
||||||
@@ -1418,6 +1476,22 @@
|
|||||||
" )\n",
|
" )\n",
|
||||||
" ax2.scatter(turn, mean_possibilitie_count[turn], marker=\"x\")\n",
|
" ax2.scatter(turn, mean_possibilitie_count[turn], marker=\"x\")\n",
|
||||||
" ax2.legend()\n",
|
" ax2.legend()\n",
|
||||||
|
"\n",
|
||||||
|
" ax4.plot(\n",
|
||||||
|
" range(70),\n",
|
||||||
|
" np.cumprod((_mean_possibilitie_count)[::-1], axis=0)[::-1],\n",
|
||||||
|
" # yerr=np.cumprod(_std_possibilitie_count[::-1], axis=0)[::-1],\n",
|
||||||
|
" )\n",
|
||||||
|
" ax4.scatter(\n",
|
||||||
|
" turn,\n",
|
||||||
|
" np.cumprod(_mean_possibilitie_count[::-1], axis=0)[::-1][turn],\n",
|
||||||
|
" marker=\"x\",\n",
|
||||||
|
" )\n",
|
||||||
|
" ax4.set_yscale(\"log\", base=10)\n",
|
||||||
|
" ax4.set_xlabel(\"Turn\")\n",
|
||||||
|
" ax4.set_ylabel(\"Mean remaining total action space size\")\n",
|
||||||
|
" fig.delaxes(ax3)\n",
|
||||||
|
" fig.tight_layout()\n",
|
||||||
" plt.show()"
|
" plt.show()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1430,7 +1504,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 124,
|
"execution_count": 35,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -1476,7 +1550,7 @@
|
|||||||
"black 3.753117e+20"
|
"black 3.753117e+20"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 124,
|
"execution_count": 35,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
@@ -1499,13 +1573,13 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 125,
|
"execution_count": 36,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"application/vnd.jupyter.widget-view+json": {
|
"application/vnd.jupyter.widget-view+json": {
|
||||||
"model_id": "7002a64f4eb740c7bcbb4810783e70fa",
|
"model_id": "a72e7227de764a69be1984db759e554f",
|
||||||
"version_major": 2,
|
"version_major": 2,
|
||||||
"version_minor": 0
|
"version_minor": 0
|
||||||
},
|
},
|
||||||
@@ -1536,7 +1610,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 126,
|
"execution_count": 68,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -1545,28 +1619,6 @@
|
|||||||
"text": [
|
"text": [
|
||||||
"(70, 10000)\n"
|
"(70, 10000)\n"
|
||||||
]
|
]
|
||||||
},
|
|
||||||
{
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"array([[ 0.046875, 0.046875, 0.046875, ..., 0.046875, 0.046875,\n",
|
|
||||||
" 0.046875],\n",
|
|
||||||
" [-0.046875, -0.046875, -0.046875, ..., -0.046875, -0.046875,\n",
|
|
||||||
" -0.046875],\n",
|
|
||||||
" [ 0.046875, 0.046875, 0.046875, ..., 0.078125, 0.046875,\n",
|
|
||||||
" 0.046875],\n",
|
|
||||||
" ...,\n",
|
|
||||||
" [ 0. , 0. , 0. , ..., 0. , 0. ,\n",
|
|
||||||
" 0. ],\n",
|
|
||||||
" [ 0. , 0. , 0. , ..., 0. , 0. ,\n",
|
|
||||||
" 0. ],\n",
|
|
||||||
" [ 0. , 0. , 0. , ..., 0. , 0. ,\n",
|
|
||||||
" 0. ]])"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"execution_count": 126,
|
|
||||||
"metadata": {},
|
|
||||||
"output_type": "execute_result"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"source": [
|
"source": [
|
||||||
@@ -1581,19 +1633,18 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"assert len(calculate_direct_score(_board_history).shape) == 2\n",
|
"assert len(calculate_direct_score(_board_history).shape) == 2\n",
|
||||||
"assert calculate_direct_score(_board_history).shape[0] == SIMULATE_TURNS\n",
|
"assert calculate_direct_score(_board_history).shape[0] == SIMULATE_TURNS\n",
|
||||||
"print(calculate_direct_score(_board_history).shape)\n",
|
"print(calculate_direct_score(_board_history).shape)"
|
||||||
"calculate_direct_score(_board_history)"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 146,
|
"execution_count": 38,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"application/vnd.jupyter.widget-view+json": {
|
"application/vnd.jupyter.widget-view+json": {
|
||||||
"model_id": "75ffc8765b074cd0b4495ac6075bb6b8",
|
"model_id": "c0a2aea84ef34cfb840d16e53d72c691",
|
||||||
"version_major": 2,
|
"version_major": 2,
|
||||||
"version_minor": 0
|
"version_minor": 0
|
||||||
},
|
},
|
||||||
@@ -1641,7 +1692,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 147,
|
"execution_count": 39,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -1670,12 +1721,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 148,
|
"execution_count": 40,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5fklEQVR4nO3deVyVdf7//+cB5SAqoKGgRJJLLrngoCDmVp2Gykpb0RpFRm2mtJpB+yY54dKCqWN8Pg2T5bg005SaY9nn45LG6KcsykRtUTM11wzcEhQdTHj//ujHqSOLHETeQo/77Xbd6rzP+7qu1/u8z/L0Otd1cBhjjAAAACzxsV0AAAD4ZSOMAAAAqwgjAADAKsIIAACwijACAACsIowAAACrCCMAAMAqwggAALCKMAIAAKwijKBGRUZGasSIEbbLgAV79+6Vw+HQzJkzbZdSpgULFsjhcGjv3r2XdD8lj8OCBQvcbZMnT5bD4bik+y0xYMAADRgwwH173bp1cjgcWrJkSY3sf8SIEYqMjKyRfaH2IIygykrevDdu3Fjm/QMGDFDnzp0vej8rVqzQ5MmTL3o7qBnMV804dOiQJk+erC1bttTYPl9//XWlp6fX2P7wy0EYQY3asWOH5syZ49U6K1as0JQpUy5RRahutXW+hg0bpjNnzqhVq1Y1vu8//elPOnPmjFfrHDp0SFOmTPE6jKxevVqrV6/2ap0S1RFG5syZox07dlzUNlD3EEZQo5xOp+rXr2+7DK8UFBTYLuGyc/r0adslVDtfX1/5+/vX2NclP1evXj35+/tf0n2UzJmfn5/8/Pwu6b4qUr9+fTmdTmv7x+WJMIIadf45Iz/88IOmTJmidu3ayd/fX1dccYX69OmjNWvWSPrx++WMjAxJksPhcC8lCgoKNG7cOEVERMjpdKp9+/aaOXOmzv9j1GfOnNGjjz6qkJAQNW7cWHfccYe+/fZbORwOj68USr6737Ztm+6//341adJEffr0kSR9/vnnGjFihFq3bi1/f3+FhYXpt7/9rY4dO+axr5JtfP311/rNb36joKAgNWvWTE899ZSMMTpw4IAGDRqkwMBAhYWF6c9//nOlHrtz587p6aefVps2beR0OhUZGaknn3xShYWF7j633XabWrduXeb6cXFx6tGjh0fba6+9pujoaDVo0EBNmzbVkCFDdODAAY8+JV+3ZWdnq1+/fgoICNCTTz5Z5j4uNF8lXnnlFfc4evbsqU8//bRUn6+++kr33HOPmjZtKn9/f/Xo0UPvvPNOxQ+SpF/96le66667PNq6dOkih8Ohzz//3N22aNEiORwObd++XVLZ54xERkbqtttu0/r16xUTEyN/f3+1bt1af//73y9YhySdOHFCI0aMUFBQkIKDg5WYmKgTJ06U6lfWOSNr1qxRnz59FBwcrEaNGql9+/bux33dunXq2bOnJCkpKcn9OJech1LRnJ1/zkiJoqIiPfnkkwoLC1PDhg11xx13eDwXBgwYoOXLl2vfvn3u/ZWc+1He+TYl56OsW7fO3VbWOSOVfR07HA6NHTtWb7/9tjp37iyn06lrr71Wq1atKuvhRy1Sz3YBqP3y8vJ09OjRUu0//PDDBdedPHmy0tLSNGrUKMXExCg/P18bN27Upk2bdNNNN+l3v/udDh06pDVr1ugf//iHx7rGGN1xxx1au3atRo4cqaioKL377rt6/PHH9e233+qFF15w9x0xYoQWL16sYcOGqVevXvq///s/DRw4sNy67r33XrVr107PPfec+w1xzZo1+uabb5SUlKSwsDBt3bpVr7zyirZu3aqPP/641IdJQkKCOnbsqGnTpmn58uV65pln1LRpU7388su64YYb9Pzzz+uf//ynxo8fr549e6pfv34VPlajRo3Sq6++qnvuuUfjxo3TJ598orS0NG3fvl1vvfWWe5/Dhw/Xp59+6v6wkqR9+/bp448/1owZM9xtzz77rJ566indd999GjVqlI4cOaIXX3xR/fr10+bNmxUcHOzue+zYMd1yyy0aMmSIfvOb3yg0NLTMGiuarxKvv/66Tp48qd/97ndyOByaPn267rrrLn3zzTfuo2Zbt27Vddddp/DwcE2YMEENGzbU4sWLNXjwYP3rX//SnXfeWe7j1LdvX73xxhvu28ePH9fWrVvl4+OjDz74QF27dpUkffDBB2rWrJk6duxY4eO+a9cu3XPPPRo5cqQSExM1b948jRgxQtHR0br22mvLXc8Yo0GDBmn9+vX6/e9/r44dO+qtt95SYmJihfsrGf9tt92mrl27aurUqXI6ndq1a5c+/PBDSVLHjh01depUpaam6sEHH1Tfvn0lSb1793Zvo7JzVuLZZ5+Vw+HQE088ocOHDys9PV0ul0tbtmxRgwYNNHHiROXl5engwYPu11ajRo0uOJYL8eZ1LEnr16/X0qVL9fDDD6tx48b67//+b919993av3+/rrjiiouuB5YYoIrmz59vJFW4XHvttR7rtGrVyiQmJrpvd+vWzQwcOLDC/YwZM8aU9VR9++23jSTzzDPPeLTfc889xuFwmF27dhljjMnOzjaSzB/+8AePfiNGjDCSzKRJk9xtkyZNMpLM0KFDS+3v9OnTpdreeOMNI8m8//77pbbx4IMPutvOnTtnrrzySuNwOMy0adPc7d9//71p0KCBx2NSli1bthhJZtSoUR7t48ePN5LMv//9b2OMMXl5ecbpdJpx48Z59Js+fbpxOBxm3759xhhj9u7da3x9fc2zzz7r0e+LL74w9erV82jv37+/kWRmz55dYY0lypuvPXv2GEnmiiuuMMePH3e3L1u2zEgy//M//+Nuu/HGG02XLl3Mf/7zH3dbcXGx6d27t2nXrl2F+3/zzTeNJLNt2zZjjDHvvPOOcTqd5o477jAJCQnufl27djV33nmn+3bJ83nPnj3utlatWpWa38OHD5f5GJ+v5Pk5ffp0d9u5c+dM3759jSQzf/58d3vJc6bECy+8YCSZI0eOlLv9Tz/9tNR2SlQ0Z/379zf9+/d33167dq2RZMLDw01+fr67ffHixUaS+a//+i9328CBA02rVq1KbbOsx+7n2167dq27LTEx0WMblX0dG2OMJOPn5+fR9tlnnxlJ5sUXXyxVF2oPvqbBRcvIyNCaNWtKLSX/Aq1IcHCwtm7dqp07d3q93xUrVsjX11ePPvqoR/u4ceNkjNHKlSslyX0I9+GHH/bo98gjj5S77d///vel2ho0aOD+///85z86evSoevXqJUnatGlTqf6jRo1y/7+vr6969OghY4xGjhzpbg8ODlb79u31zTfflFuL9ONYJSk5Odmjfdy4cZKk5cuXS5ICAwN1yy23aPHixR6HuBctWqRevXrpqquukiQtXbpUxcXFuu+++3T06FH3EhYWpnbt2mnt2rUe+3E6nUpKSqqwxspKSEhQkyZN3LdL/lVf8hgcP35c//73v3Xffffp5MmT7tqOHTum+Ph47dy5U99++2252y/Z3vvvvy/pxyMgPXv21E033aQPPvhA0o9fn3z55ZfuvhXp1KmTR79mzZpVes7q1aunhx56yN3m6+tb4fOuRMlRqWXLlqm4uPiC/cvi7ZwNHz5cjRs3dt++55571KJFC/dz71Kp7Ou4hMvlUps2bdy3u3btqsDAwAvOBy5vhBFctJiYGLlcrlLLzz9wyjN16lSdOHFC11xzjbp06aLHH3/c43v9iuzbt08tW7b0eAOV5D7svm/fPvd/fXx8dPXVV3v0a9u2bbnbPr+v9OOH5GOPPabQ0FA1aNBAzZo1c/fLy8sr1b/kg79EUFCQ/P39FRISUqr9+++/L7eWn4/h/JrDwsIUHBzsHqv044f9gQMHlJWVJUnavXu3srOzlZCQ4O6zc+dOGWPUrl07NWvWzGPZvn27Dh8+7LGf8PDwajvp8fzHpeR5UvIY7Nq1S8YYPfXUU6VqmzRpkiSVqu/nQkND1a5dO3fw+OCDD9S3b1/169dPhw4d0jfffKMPP/xQxcXFlQoj59dbUnNl5qxFixalvspo3779BfeZkJCg6667TqNGjVJoaKiGDBmixYsXexVMvJ2zdu3aedx2OBxq27btJf/dlcq+jktUdT5weeOcEVjVr18/7d69W8uWLdPq1av1t7/9TS+88IJmz57tcWShpv38KEiJ++67Tx999JEef/xxRUVFqVGjRiouLtbNN99c5oeEr69vpdoklTpRrzyVudLj9ttvV0BAgBYvXqzevXtr8eLF8vHx0b333uvuU1xcLIfDoZUrV5ZZ0/kfoGU9HlV1oceg5LEcP3684uPjy+xbUZCUpD59+igzM1NnzpxRdna2UlNT1blzZwUHB+uDDz7Q9u3b1ahRI3Xv3v2i670UGjRooPfff19r167V8uXLtWrVKi1atEg33HCDVq9eXW5N52+jppT3vCwqKqr2fdmYD1x6hBFY17RpUyUlJSkpKUmnTp1Sv379NHnyZHcYKe+NrlWrVnrvvfd08uRJj39VffXVV+77S/5bXFysPXv2ePzrb9euXZWu8fvvv1dmZqamTJmi1NRUd3tVvl6qipIx7Ny50+OEy9zcXJ04ccLjtzEaNmyo2267TW+++aZmzZqlRYsWqW/fvmrZsqW7T5s2bWSM0dVXX61rrrmmWmu92EtjS64Gql+/vlwuV5W20bdvX82fP18LFy5UUVGRevfuLR8fH/Xp08cdRnr37l2pD/WqatWqlTIzM3Xq1CmPcFfZ39jw8fHRjTfeqBtvvFGzZs3Sc889p4kTJ2rt2rVyuVzVfgny+c9lY4x27drl8XVrefssObp1/pVC5x/VKEtlX8eo2/iaBladf1lso0aN1LZtW4/LVRs2bCip9BvdrbfeqqKiIv3lL3/xaH/hhRfkcDh0yy23SJL7X9d//etfPfq9+OKLla6z5EPr/H991dSvUd56661l7m/WrFmSVOrKoISEBB06dEh/+9vf9NlLine truncated
|
"image/png": "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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 640x480 with 1 Axes>"
|
"<Figure size 640x480 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -1690,21 +1741,24 @@
|
|||||||
" return who_won\n",
|
" return who_won\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"plt.title(\"Histogram over the win distribtuion\")\n",
|
"plt.title(\"Win distribtuion\")\n",
|
||||||
"plt.hist(calculate_who_won(_board_history), density=True, bins=3)\n",
|
"plt.bar(\n",
|
||||||
|
" [\"black\", \"draw\", \"white\"],\n",
|
||||||
|
" pd.Series(calculate_who_won(_board_history)).value_counts().sort_index() / 10000,\n",
|
||||||
|
")\n",
|
||||||
"plt.show()"
|
"plt.show()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 149,
|
"execution_count": 41,
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"scrolled": false
|
"scrolled": false
|
||||||
},
|
},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"data": {
|
||||||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGzCAYAAAD9pBdvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA640lEQVR4nO3deXxU9aH///fMJDMJhCRASMISCKKIiCyypBG8VonmKipatWi9glD1q4IVc/urUCuovRprK6UqheuGS6+FilsryCIC1pLKJtYVQdYqCXsSsk0y8/n9EWYgeyaZmRMyr+fjMY9kzpwz8zmfTDLvfLZjM8YYAQAAWMRudQEAAEBkI4wAAABLEUYAAIClCCMAAMBShBEAAGApwggAALAUYQQAAFiKMAIAACxFGAEAAJYijACtYLPZNG3aNKuLEVQFBQW6/vrr1bVrV9lsNs2dO9fqIllm7dq1stlsWrJkSaP7vfTSS7LZbNq9e3d4CtZCt956q9LT060uBlAHYQSox2effabrr79effr0UUxMjHr27KlLL71UTz/9tNVFC7n77rtPK1as0MyZM/Xqq6/qP//zP+vdr7S0VA899JDWrl0b3gICaHeirC4A0NasX79eF198sXr37q3bb79dqamp2rdvn/75z3/qD3/4g+655x6rixhSH3zwgcaPH6+f//znje5XWlqqhx9+WJL0wx/+MAwla7tuueUW3XjjjXK5XFYXBTgtEUaAWh599FElJCRo48aNSkxMrPHYgQMHwl6ekpISdezYMWyvd+DAgTrnHU5VVVXyer1yOp2WlSFQDodDDofD6mIApy26aYBavv32W5177rn1fiAnJyfXe8zbb7+tQYMGyeVy6dxzz9Xy5ctrPL5nzx7dfffdOvvssxUbG6uuXbvqhhtuqDPGwDf2YN26dbr77ruVnJysXr16+R9/7733dOGFF6pjx47q1KmTxo0bpy+++KJZ57Vz507dcMMN6tKlizp06KAf/OAHWrp0aZ3XNsZo3rx5stlsstls9T7X7t271a1bN0nSww8/7N/3oYceklTdUlJfa0ntMQu7d++WzWbT7373O82dO1f9+vWTy+XSl19+qYceekg2m007duzQrbfeqsTERCUkJGjy5MkqLS2t8byrVq3SmDFjlJiYqLi4OJ199tn65S9/2WSdtOS4iooKXXnllUpISND69etr1N2pP8/09HRdeeWVWrlypYYOHaqYmBgNHDhQb775Zo3n8x374Ycf6v/9v/+nrl27Kj4+XhMnTtTRo0frvH5z3wO+92RMTIwGDRqkt956q8n6AKxCywhQS58+fZSXl6fPP/9cgwYNanL/jz76SG+++abuvvtuderUSU899ZSuu+467d27V127dpUkbdy4UevXr9eNN96oXr16affu3Zo/f75++MMf6ssvv1SHDh1qPOfdd9+tbt26adasWSopKZEkvfrqq5o0aZKys7P1m9/8RqWlpZo/f77GjBmjTz75pNGBiQUFBbrgggtUWlqqn/3sZ+ratatefvllXX311VqyZImuvfZa/cd//IdeffVV3XLLLbr00ks1ceLEBp+vW7dumj9/vu666y5de+21+tGPfiRJGjx4cJP1VZ+FCxeqvLxcd9xxh1wul7p06eJ/7Mc//rH69u2r3NxcbdmyRc8//7ySk5P1m9/8RpL0xRdf6Morr9TgwYP1yCOPyOVyaceOHfrHP/7R6Gu25LiysjKNHz9emzZt0vvvv6+RI0c2+hrbt2/XhAkTdOedd2rSpElauHChbrjhBi1fvlyXXnppjX2nTZumxMREPfTQQ9q2bZvmz5+vPXv2+AfRSs1/D6xcuVLXXXedBg4cqNzcXB0+fFiTJ0+uEWyBNsUAqGHlypXG4XAYh8NhMjMzzS9+8QuzYsUK43a76+wryTidTrNjxw7/tk8//dRIMk8//bR/W2lpaZ1j8/LyjCTzyiuv+LctXLjQSDJjxowxVVVV/u3FxcUmMTHR3H777TWeIz8/3yQkJNTZXtv06dONJPP3v/+9xnP27dvXpKenG4/HU+Ocpk6d2ujzGWPMwYMHjSQze/bsOo9ddNFF5qKLLqqzfdKkSaZPnz7++7t27TKSTHx8vDlw4ECNfWfPnm0kmSlTptTYfu2115quXbv67//+9783kszBgwebLPOpmnPcmjVrjCTz+uuvm+LiYnPRRReZpKQk88knn9TYz/dz27Vrl39bnz59jCTzxhtv+LcVFhaa7t27m2HDhtU5dvjw4TXeY0888YSRZN555x1jTGDvgaFDh5ru3bubY8eO+betXLnSSKpR/0BbQTcNUMull16qvLw8XX311fr000/1xBNPKDs7Wz179tRf//rXOvtnZWWpX79+/vuDBw9WfHy8du7c6d8WGxvr/76yslKHDx/WmWeeqcTERG3ZsqXOc95+++01xiCsWrVKx44d00033aRDhw75bw6HQxkZGVqzZk2j57Rs2TKNGjVKY8aM8W+Li4vTHXfcod27d+vLL79sXuWEyHXXXefv9qntzjvvrHH/wgsv1OHDh1VUVCRJ/u60d955R16vt9mvGchxhYWFuuyyy/T1119r7dq1Gjp0aLNeo0ePHrr22mv9933dL5988ony8/Nr7HvHHXcoOjraf/+uu+5SVFSUli1bJqn574H9+/dr69atmjRpkhISEvzPd+mll2rgwIHNKjcQboQRoB4jR47Um2++qaNHj2rDhg2aOXOmiouLdf3119f54O7du3ed4zt37lyjv7+srEyzZs1SWlqaXC6XkpKS1K1bNx07dkyFhYV1ju/bt2+N+9u3b5ckXXLJJerWrVuN28qVK5scWLtnzx6dffbZdbafc845/setVPt8T1W7fjt37ixJ/vqdMGGCRo8erdtuu00pKSm68cYb9Ze//KXJgBHIcdOnT9fGjRv1/vvv69xzz232eZ155pl1xt30799fkuqMFzrrrLNq3I+Li1P37t39+zX3PeD7WdZ+Pkn1vgeAtoAxI0AjnE6nRo4cqZEjR6p///6aPHmyXn/9dc2ePdu/T0OzKIwx/u/vueceLVy4UNOnT1dmZqYSEhJks9l044031vvhd2pLiiT/Pq+++qpSU1Pr7B8V1bZ+lX0DYWvzeDz17l/7fE/VVP3Gxsbqww8/1Jo1a7R06VItX75cixcv1iWXXKKVK1c2eHwgx40fP16LFi3S448/rldeeUV2e/j/jzvd3gNAIHj3As00YsQISdXN4IFasmSJJk2apCeffNK/rby8XMeOHWvW8b5uoOTkZGVlZQX8+n369NG2bdvqbP/666/9jweqoZk2UnXrxandVD6haoGx2+0aO3asxo4dqzlz5uixxx7TAw88oDVr1jRaX8097pprrtFll12mW2+9VZ06ddL8+fObVa4dO3bIGFOjrr755htJqjPgePv27br44ov9948fP679+/friiuukNT894DvZ+lrSTlVfe8BoC2gmwaoZc2aNfX+V+/ru29JU7fD4ajznE8//XSDLQW1ZWdnKz4+Xo899pgqKyvrPH7w4MFGj7/iiiu0YcMG5eXl+beVlJTo2WefVXp6eovGEvhmANUXqPr166evv/66Rrk+/fTTJme4tMSRI0fqbPON6aioqAjacRMnTtRTTz2lBQsW6P77729W2b7//vsaU2qLior0yiuvaOjQoXVaN5599tkaP9v58+erqqpKl19+uaTmvwe6d++uoUOH6uWXX67RBbhq1SrLxwYBDaFlBKjlnnvuUWlpqa699loNGDBAbrdb69ev1+LFi5Wenq7JkycH/JxXXnmlXn31VSUkJGjgwIHKy8vT+++/75/625T4+HjNnz9ft9xyi84//3zdeOON6tatm/bu3aulS5dq9OjReuaZZxo8fsaMGfrzn/+syy+/XD/72c/UpUsXvfzyy9q1a5feeOONFnU7xMbGauDAgVq8eLH69++vLl26aNCgQRo0aJCmTJmiOXPmKDs7Wz/96U914MABLViwQOeee65/4GmwPPLII/rwww81btw49enTRwcOHNAf//hH9erVq8aA3WAcN23aNBUVFemBBx5QQkJCk2uS9O/fXz/96U+1ceNGpaSk6MUXX1RBQYEWLlxYZ1+3262xY8fqxz/+sbZt26Y//vGPGjNmjK6++mpJgb0HcnNzNW7cOI0ZM0ZTpkzRkSNH9PTTT+vcc8/V8ePHm1u1QPhYOZUHaIvee+89M2XKFDNgwAATFxdnnE6nOfPMM80999xjCgoKauyrBqbB9unTx0yaNMl//+jRo2by5MkmKSnJxMXFmezsbPP111/X2c83zXPjxo31lm3NmjUmOzvbJCQkmJiYGNOvXz9z6623mk2bNjV5Xt9++625/vrrTWJioomJiTGjRo0y7777bp39Gjqn+qxfv94MHz7cOJ3OOtN8//SnP5kzzjjDOJ1OM3ToULNixYoGp/b+9re/rfPcvqm9tafe1p5Gu3r1ajN+/HjTo0cP43Q6TY8ePcxNN91kvvnmm0bL3pzjTp3ae6pf/OIXRpJ55pln6i2TMdXvgXHjxpkVK1aYwYMHG5fLZQYMGFDnuXzHrlu3ztxxxx2mc+fOJi4uztx8883m8OHDdcrd3PfAG2+8Yc455xzjcrnMwIEDzZtvvlmn/oG2wmZMPe3RAIBWSU9P16BBg/Tuu+82ut9LL72kyZMna+PGjf5xSUCkYcwIAACwFGEEAABYijACAAAsxZgRAABgKVpGAACApQgjAADAUqfFomder1fff/+9OnXq1OgS1AAAoO0wxqi4uFg9evRodHHF0yKMfP/990pLS7O6GAAAoAX27dunXr16Nfj4aRFGOnXqJKn6ZOLj4y0uDQAAaI6ioiKlpaX5P8cbclqEEV/XTHx8PGEEAIDTTFNDLBjACgAALEUYAQAAliKMAAAASxFGAACApQgjAADAUoQRAABgKcIIAACwFGEEAABYijACAAAsRRgLine truncated
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHHCAYAAABTMjf2AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAABegklEQVR4nO3deXxTVdoH8N9N26R7um/QjbWUQgulRTZlU6woiIDgWmBG3pGCS18XeB0WHR3UUYZROzAqgiiOuCAqyFoRVCotS9lBltIWure06b4k9/2jTaR0S0qSmza/7+eTj829N/c+ucTm6TnPOUcQRVEEERERkRWSSR0AERERkVSYCBEREZHVYiJEREREVouJEBEREVktJkJERERktZgIERERkdViIkRERERWi4kQERERWS0mQkRERGS1mAgRdVGCIGDhwoVSh2FU+fn5mDFjBjw9PSEIAlavXi11SJL56aefIAgCvvrqq3aP27BhAwRBwJUrV8wTWCfNmTMHISEhUodB1AITISILc/LkScyYMQPBwcGwt7dHjx49cOedd+Ldd9+VOjSTe/bZZ7Fr1y4sWbIEn3zyCe6+++5Wj6uqqsKKFSvw008/mTdAIup2bKUOgIj+cPDgQYwbNw5BQUF44okn4Ofnh+zsbPz222/417/+hUWLFkkdokn9+OOPmDp1Kp577rl2j6uqqsLLL78MABg7dqwZIrNcjz32GGbPng2FQiF1KERdEhMhIgvy2muvQalUIi0tDW5ubs32FRQUmD2eyspKODk5me16BQUFLd63OTU0NECj0UAul0sWg6FsbGxgY2MjdRhEXRa7xogsyKVLlzBw4MBWkwEfH59WX7N161ZERERAoVBg4MCB2LlzZ7P9mZmZWLBgAfr37w8HBwd4enpi5syZLWpKtLUm+/fvx4IFC+Dj44OePXvq9u/YsQNjxoyBk5MTXFxcMHnyZJw+fVqv93X58mXMnDkTHh4ecHR0xG233Ybt27e3uLYoikhKSoIgCBAEodVzXblyBd7e3gCAl19+WXfsihUrADS2ELXWSnRzjcqVK1cgCALeeustrF69Gr1794ZCocCZM2ewYsUKCIKAixcvYs6cOXBzc4NSqcTcuXNRVVXV7Lx79uzB6NGj4ebmBmdnZ/Tv3x//93//1+E96czramtrce+990KpVOLgwYPN7t2N/54hISG4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 truncated
|
||||||
"text/plain": [
|
"text/plain": [
|
||||||
"<Figure size 640x480 with 1 Axes>"
|
"<Figure size 640x480 with 1 Axes>"
|
||||||
]
|
]
|
||||||
@@ -1722,13 +1776,15 @@
|
|||||||
"\n",
|
"\n",
|
||||||
"plt.title(\"Share of turns skipped\")\n",
|
"plt.title(\"Share of turns skipped\")\n",
|
||||||
"plt.plot(1 - np.mean(history_changed(_board_history), axis=1))\n",
|
"plt.plot(1 - np.mean(history_changed(_board_history), axis=1))\n",
|
||||||
"# plt.yscale('log',base=10)\n",
|
"plt.xlabel(\"Turn\")\n",
|
||||||
|
"plt.ylabel(\"Factor of skipped turns\")\n",
|
||||||
|
"plt.yscale(\"log\", base=10)\n",
|
||||||
"plt.show()"
|
"plt.show()"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 150,
|
"execution_count": 42,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
@@ -1737,7 +1793,7 @@
|
|||||||
"(70, 10000)"
|
"(70, 10000)"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 150,
|
"execution_count": 42,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
@@ -1755,29 +1811,105 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 151,
|
"execution_count": 69,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"data": {
|
"name": "stdout",
|
||||||
"text/plain": [
|
"output_type": "stream",
|
||||||
"array([0.06513542, 0.02282552, 0.08712565, 0.05031332, 0.1214854 ,\n",
|
"text": [
|
||||||
" 0.06314092, 0.14037841, 0.0759323 , 0.16290323, 0.08841437,\n",
|
"69\n",
|
||||||
" 0.18861413, 0.10899313, 0.19318856, 0.10964757, 0.20731361,\n",
|
"68\n",
|
||||||
" 0.13148691, 0.22510605, 0.13292382, 0.23539045, 0.12585808,\n",
|
"67\n",
|
||||||
" 0.23848829, 0.15176572, 0.26641954, 0.17761089, 0.28060736,\n",
|
"66\n",
|
||||||
" 0.16112694, 0.31286326, 0.17623532, 0.28714693, 0.16549503,\n",
|
"65\n",
|
||||||
" 0.33439531, 0.19199073, 0.29858216, 0.20875418, 0.33700629,\n",
|
"64\n",
|
||||||
" 0.1993395 , 0.36539974, 0.24731134, 0.36773293, 0.24404735,\n",
|
"63\n",
|
||||||
" 0.42837075, 0.28564118, 0.41564522, 0.28406984, 0.41368105,\n",
|
"62\n",
|
||||||
" 0.2341238 , 0.39596409, 0.26595149, 0.39103311, 0.38067557,\n",
|
"61\n",
|
||||||
" 0.47846166, 0.30745852, 0.4819794 , 0.38419044, 0.5611122 ,\n",
|
"60\n",
|
||||||
" 0.524575 , 0.546425 , 0.466925 , 0.601625 , 0.570625 ,\n",
|
"59\n",
|
||||||
" 0.570625 , 0.35625 , 0.36875 , 0.36875 , 0.38125 ,\n",
|
"58\n",
|
||||||
" 0.38125 , 0.38125 , 0.38125 , 0.38125 , 0.39715854])"
|
"57\n",
|
||||||
|
"56\n",
|
||||||
|
"55\n",
|
||||||
|
"54\n",
|
||||||
|
"53\n",
|
||||||
|
"52\n",
|
||||||
|
"51\n",
|
||||||
|
"50\n",
|
||||||
|
"49\n",
|
||||||
|
"48\n",
|
||||||
|
"47\n",
|
||||||
|
"46\n",
|
||||||
|
"45\n",
|
||||||
|
"44\n",
|
||||||
|
"43\n",
|
||||||
|
"42\n",
|
||||||
|
"41\n",
|
||||||
|
"40\n",
|
||||||
|
"39\n",
|
||||||
|
"38\n",
|
||||||
|
"37\n",
|
||||||
|
"36\n",
|
||||||
|
"35\n",
|
||||||
|
"34\n",
|
||||||
|
"33\n",
|
||||||
|
"32\n",
|
||||||
|
"31\n",
|
||||||
|
"30\n",
|
||||||
|
"29\n",
|
||||||
|
"28\n",
|
||||||
|
"27\n",
|
||||||
|
"26\n",
|
||||||
|
"25\n",
|
||||||
|
"24\n",
|
||||||
|
"23\n",
|
||||||
|
"22\n",
|
||||||
|
"21\n",
|
||||||
|
"20\n",
|
||||||
|
"19\n",
|
||||||
|
"18\n",
|
||||||
|
"17\n",
|
||||||
|
"16\n",
|
||||||
|
"15\n",
|
||||||
|
"14\n",
|
||||||
|
"13\n",
|
||||||
|
"12\n",
|
||||||
|
"11\n",
|
||||||
|
"10\n",
|
||||||
|
"9\n",
|
||||||
|
"8\n",
|
||||||
|
"7\n",
|
||||||
|
"6\n",
|
||||||
|
"5\n",
|
||||||
|
"4\n",
|
||||||
|
"3\n",
|
||||||
|
"2\n",
|
||||||
|
"1\n",
|
||||||
|
"0\n"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"execution_count": 151,
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"array([ 0.09677184, 0.0037773 , 0.12190913, 0.03519891, 0.16118614,\n",
|
||||||
|
" 0.00617017, 0.12490022, -0.03918723, 0.14632847, -0.01240192,\n",
|
||||||
|
" 0.1016851 , 0.00991888, 0.1295861 , -0.03332988, 0.07552515,\n",
|
||||||
|
" -0.10090606, 0.14730492, -0.08930635, 0.08367957, -0.09071304,\n",
|
||||||
|
" 0.1600462 , 0.08287025, 0.22077531, -0.07559336, 0.1789458 ,\n",
|
||||||
|
" 0.02836975, 0.23077469, 0.01503086, 0.13597608, -0.18159241,\n",
|
||||||
|
" -0.03167801, -0.23491001, 0.05792499, -0.04478127, 0.06121092,\n",
|
||||||
|
" -0.04067385, 0.37884519, 0.04386898, 0.17202373, -0.05840784,\n",
|
||||||
|
" 0.0441777 , -0.14009038, 0.02019953, -0.09193809, 0.15851489,\n",
|
||||||
|
" 0.08095611, 0.45275764, 0.13625955, 0.36563693, -0.05076633,\n",
|
||||||
|
" 0.28810459, -0.22580677, -0.16507096, -0.5579012 , -0.033314 ,\n",
|
||||||
|
" -0.15883 , 0.23115 , -0.45325 , -0.37125 , -0.58125 ,\n",
|
||||||
|
" -0.21875 , -0.21875 , -0.21875 , -0.21875 , -0.21875 ,\n",
|
||||||
|
" -0.21875 , -0.21875 , -0.21875 , -0.21875 , -0.14133253])"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 69,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"output_type": "execute_result"
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
@@ -1809,26 +1941,117 @@
|
|||||||
" return combined_score\n",
|
" return combined_score\n",
|
||||||
"\n",
|
"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"np.max(calculate_q_reword(_board_history, gamma=0.8), axis=1)"
|
"calculate_q_reword(\n",
|
||||||
|
" _board_history, gamma=0.8, who_won_fraction=0, final_score_fraction=1\n",
|
||||||
|
")[:, 0]"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"cell_type": "code",
|
"cell_type": "code",
|
||||||
"execution_count": 152,
|
"execution_count": 60,
|
||||||
"metadata": {},
|
"metadata": {},
|
||||||
"outputs": [
|
"outputs": [
|
||||||
{
|
{
|
||||||
"ename": "NameError",
|
"data": {
|
||||||
"evalue": "name 'rewords' is not defined",
|
"text/plain": [
|
||||||
"output_type": "error",
|
"array([-1.53249554e-06, -1.91561943e-06, -2.39452428e-06, -2.99315535e-06,\n",
|
||||||
"traceback": [
|
" -3.74144419e-06, -4.67680524e-06, -5.84600655e-06, -7.30750819e-06,\n",
|
||||||
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
|
" -9.13438523e-06, -1.14179815e-05, -1.42724769e-05, -1.78405962e-05,\n",
|
||||||
"\u001B[1;31mNameError\u001B[0m Traceback (most recent call last)",
|
" -2.23007452e-05, -2.78759315e-05, -3.48449144e-05, -4.35561430e-05,\n",
|
||||||
"Cell \u001B[1;32mIn[152], line 1\u001B[0m\n\u001B[1;32m----> 1\u001B[0m \u001B[43mrewords\u001B[49m\n\u001B[0;32m 2\u001B[0m evaluate_boards(boards)\u001B[38;5;241m.\u001B[39mshape\n",
|
" -5.44451787e-05, -6.80564734e-05, -8.50705917e-05, -1.06338240e-04,\n",
|
||||||
"\u001B[1;31mNameError\u001B[0m: name 'rewords' is not defined"
|
" -1.32922800e-04, -1.66153499e-04, -2.07691874e-04, -2.59614843e-04,\n",
|
||||||
|
" -3.24518554e-04, -4.05648192e-04, -5.07060240e-04, -6.33825300e-04,\n",
|
||||||
|
" -7.92281625e-04, -9.90352031e-04, -1.23794004e-03, -1.54742505e-03,\n",
|
||||||
|
" -1.93428131e-03, -2.41785164e-03, -3.02231455e-03, -3.77789319e-03,\n",
|
||||||
|
" -4.72236648e-03, -5.90295810e-03, -7.37869763e-03, -9.22337204e-03,\n",
|
||||||
|
" -1.15292150e-02, -1.44115188e-02, -1.80143985e-02, -2.25179981e-02,\n",
|
||||||
|
" -2.81474977e-02, -3.51843721e-02, -4.39804651e-02, -5.49755814e-02,\n",
|
||||||
|
" -6.87194767e-02, -8.58993459e-02, -1.07374182e-01, -1.34217728e-01,\n",
|
||||||
|
" -1.67772160e-01, -2.09715200e-01, -2.62144000e-01, -3.27680000e-01,\n",
|
||||||
|
" -4.09600000e-01, -5.12000000e-01, -6.40000000e-01, -8.00000000e-01,\n",
|
||||||
|
" -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,\n",
|
||||||
|
" -1.00000000e+00, -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,\n",
|
||||||
|
" -1.00000000e+00, -1.00000123e+00])"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 60,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"source": [
|
||||||
|
"calculate_q_reword(\n",
|
||||||
|
" _board_history, gamma=0.8, who_won_fraction=1, final_score_fraction=0\n",
|
||||||
|
")[:, 0]"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 65,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"text/plain": [
|
||||||
|
"array([ 3.09670969, 0.12088712, 3.9011089 , 1.12638612,\n",
|
||||||
|
" 5.15798265, 0.19747831, 3.99684789, -1.25394014,\n",
|
||||||
|
" 4.68257483, -0.39678147, 3.25402317, 0.31752896,\n",
|
||||||
|
" 4.1469112 , -1.066361 , 2.41704875, -3.22868907,\n",
|
||||||
|
" 4.71413867, -2.85732667, 2.67834167, -2.90207292,\n",
|
||||||
|
" 5.12240885, 2.65301107, 7.06626383, -2.41717021,\n",
|
||||||
|
" 5.72853724, 0.91067155, 7.38833944, 0.4854243 ,\n",
|
||||||
|
" 4.35678037, -5.80402453, -1.00503067, -7.50628834,\n",
|
||||||
|
" 1.86713958, -1.41607552, 1.9799056 , -1.27511801,\n",
|
||||||
|
" 12.15610249, 1.44512812, 5.55641015, -1.80448732,\n",
|
||||||
|
" 1.49439085, -4.38201144, 0.77248571, -2.78439287,\n",
|
||||||
|
" 5.26950892, 2.83688614, 14.79610768, 4.7451346 ,\n",
|
||||||
|
" 12.18141825, -1.02322719, 9.97096602, -6.28629248,\n",
|
||||||
|
" -4.1078656 , -16.384832 , 0.76896 , -2.7888 ,\n",
|
||||||
|
" 10.264 , -10.92 , -7.4 , -13. ,\n",
|
||||||
|
" 0. , 0. , 0. , 0. ,\n",
|
||||||
|
" 0. , 0. , 0. , 0. ,\n",
|
||||||
|
" 0. , 2.47736775])"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"execution_count": 65,
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "execute_result"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"calculate_q_reword(\n",
|
||||||
|
" _board_history, gamma=0.8, who_won_fraction=0, final_score_fraction=0\n",
|
||||||
|
")[:, 0] * 64"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 64,
|
||||||
|
"metadata": {
|
||||||
|
"scrolled": false
|
||||||
|
},
|
||||||
|
"outputs": [
|
||||||
|
{
|
||||||
|
"data": {
|
||||||
|
"image/png": "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 truncated
|
||||||
|
"text/plain": [
|
||||||
|
"<Figure size 1200x4800 with 61 Axes>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"metadata": {},
|
||||||
|
"output_type": "display_data"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": [
|
||||||
|
"_unique_bords = drop_duplicate_boards(_board_history[:, 0].reshape(-1, 8, 8), None)\n",
|
||||||
|
"plot_othello_boards(_unique_bords[0], None)"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
"source": [
|
"source": [
|
||||||
"rewords\n",
|
"rewords\n",
|
||||||
"evaluate_boards(boards).shape"
|
"evaluate_boards(boards).shape"
|
||||||
|
|||||||
Reference in new issue
Block a user