Some more warnings corrected

This commit is contained in:
Philipp committed 2023-03-06 22:44:49 +01:00
1 parent 338289b664
commit 2229f7e416
1 file changed
+9 -8
+9 -8
View File
@@ -2342,6 +2342,7 @@
"outputs": [],
"source": [
"class QLPolicy(GamePolicy):\n",
" # noinspection PyProtectedMember\n",
" def __init__(\n",
" self,\n",
" epsilon: float,\n",
@@ -2865,14 +2866,14 @@
{
"data": {
"text/plain": "<Figure size 1400x700 with 3 Axes>",
"image/png": "iVBORw0KGgoAAAANSUhEUgAABGoAAAJuCAYAAADo9uQqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAADOKElEQVR4nOzdd1gU1/s28HsBaSKiYAlqEEEBlSYoomDBjtiwF6xYE4gdEFEU0SgGjaJgwxYLFkSNJlhj/CYabChGIQpYsBJbVJCyu+8fvszPlV53wftzXXuFOXNm5jmLmbM8e84ZkVQqlYKIiIiIiIiIiOROSd4BEBERERERERHRR0zUEBEREREREREpCCZqiIiIiIiIiIgUBBM1REREREREREQKgokaIiIiIiIiIiIFwUQNEREREREREZGCYKKGiIiIiIiIiEhBMFFDRERERERERKQgmKghIiIiIiIiqgBSqVTeIVAlwEQNERERERERAQC8vb1hYmJS4MvNza1U11i7di1MTEzK/ZiS8vb2hpOTU4F1IiMjYWJigpSUlCKd87///sPcuXNx+fLlsgiRqjgVeQdAREREREREimHatGkYNmyYsL1+/XrcunULISEhQpmWllaprjF48GA4OjqW+zHlqVOnToiIiEDdunWLVP/27ds4fPgwBg4cWM6RUVXARA0REREREREBAL7++mt8/fXXwnbt2rWhqqoKKyurMrtG/fr1Ub9+/XI/pjzVrl0btWvXlncYVEVx6hMREREREREVS2RkJJo3b479+/ejffv2aNOmDe7evQuxWIyNGzfCxcUFFhYWsLKywrBhw3Dx4kXh2M+nMbm5ucHX1xcbN25Ep06dYG5ujmHDhuHGjRulOgYAfvvtN7i6usLCwgI9evTAzz//jG7dumHt2rVFamOPHj1gbm6Ovn374ty5czL7Pp369PLlS8yaNQvt27eHubk5+vXrh6ioKADAX3/9hdGjRwMARo8eLTN17Pjx43B1dYW1tTXat2+PBQsW4M2bNzLt7tatG0JCQtCmTRs4ODhg/vz5sLCwwNu3b2XiXb9+PWxsbJCenl5o20ixcUQNERERERERFZtYLEZ4eDgCAwPx6tUrGBkZYcWKFdizZw9mzZoFExMTPHv2DOvWrcN3332H3377DRoaGnmeKzo6GkZGRpg/fz6kUimWL18ODw8PnDlzBsrK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 truncated
"image/png": "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 truncated
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": " 0%| | 0/100 [15:17<?, ?epoch/s]",
"text/plain": " 1%|1 | 1/100 [30:05<25:13:50, 917.48s/epoch]",
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
@@ -2888,7 +2889,7 @@
"application/vnd.jupyter.widget-view+json": {
"version_major": 2,
"version_minor": 0,
"model_id": "c1af7e48d768486f8581eb3067a08b78"
"model_id": "bd5a0ee6a7474e9face64973d1395802"
}
},
"metadata": {},
@@ -3076,15 +3077,15 @@
"for policy1, policy2 in tqdm(list(itertools.product(policy_list, policy_list))):\n",
" if not pd.isna(result_df.at[policy1.policy_name, policy2.policy_name]):\n",
" continue\n",
" result_dict = {}\n",
" _result_dict = {}\n",
" _boards_black, _ = simulate_game(nr_of_eval_games, (policy1, policy2))\n",
" _win_eval_black = calculate_who_won(_boards_black)\n",
" result_dict[\"final_score\"] = float(\n",
" _result_dict[\"final_score\"] = float(\n",
" np.mean(calculate_final_evaluation_for_history(_boards_black))\n",
" )\n",
" result_dict[\"win\"] = np.sum(_win_eval_black == 1) / nr_of_eval_games\n",
" result_dict[\"lose\"] = np.sum(_win_eval_black == -1) / nr_of_eval_games\n",
" result_df.at[policy1.policy_name, policy2.policy_name] = result_dict\n",
" _result_dict[\"win\"] = np.sum(_win_eval_black == 1) / nr_of_eval_games\n",
" _result_dict[\"lose\"] = np.sum(_win_eval_black == -1) / nr_of_eval_games\n",
" result_df.at[policy1.policy_name, policy2.policy_name] = _result_dict\n",
" result_df.to_pickle(RESULTS_FILE)"
]
},