2023-10-17 10:28:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 "cells": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "cell_type": "markdown",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "metadata": {
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "id": "S3-tJZy35Ck_"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "source": [
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "# Trainer\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "Trainer is the highest-level encapsulation in Tianshou. It controls the training loop and the evaluation method. It also controls the interaction between the Collector and the Policy, with the ReplayBuffer serving as the media.\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "# Create the environments, used for training and evaluation\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "env = gym.make(\"CartPole-v1\")\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "test_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v1\") for _ in range(2)])\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "train_envs = DummyVectorEnv([lambda: gym.make(\"CartPole-v1\") for _ in range(train_env_num)])\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "# Create the Policy instance\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "net = Net(\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    env.observation_space.shape,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    hidden_sizes=[\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "        16,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    ],\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ")\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "actor = Actor(net, env.action_space.shape)\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "optim = torch.optim.Adam(actor.parameters(), lr=0.001)\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "policy = PGPolicy(\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    actor=actor,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    optim=optim,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    dist_fn=torch.distributions.Categorical,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    action_space=env.action_space,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    action_scaling=False,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ")\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "# Create the replay buffer and the collector\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "replaybuffer = VectorReplayBuffer(buffer_size, train_env_num)\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "test_collector = Collector(policy, test_envs)\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "train_collector = Collector(policy, train_envs, replaybuffer)"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   ]
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "cell_type": "markdown",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "metadata": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "id": "wiEGiBgQIiFM"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "source": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "Now, we can try training our policy network. The logic is simple. We collect some data into the buffer and then we use the data to train our policy."
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ]
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "cell_type": "code",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "execution_count": null,
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "metadata": {
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 10:28:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    "colab": {
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								     "base_uri": "https://localhost:8080/"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 10:28:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    },
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "id": "JMUNPN5SI_kd",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "outputId": "7d68323c-0322-4b82-dafb-7c7f63e7a26d"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "outputs": [],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "source": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "train_collector.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "train_envs.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "test_collector.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "test_envs.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "replaybuffer.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "for i in range(10):\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    evaluation_result = test_collector.collect(n_episode=10)\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    print(\"Evaluation reward is {}\".format(evaluation_result[\"rew\"]))\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    train_collector.collect(n_step=2000)\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    # 0 means taking all data stored in train_collector.buffer\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    policy.update(0, train_collector.buffer, batch_size=512, repeat=1)\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    train_collector.reset_buffer(keep_statistics=True)"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ]
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 10:28:24 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "cell_type": "markdown",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "metadata": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "id": "QXBHIBckMs_2"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "source": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "The evaluation reward doesn't seem to improve. That is simply because we haven't trained it for enough time. Plus, the network size is too small and REINFORCE algorithm is actually not very stable. Don't worry, we will solve this problem in the end. Still we get some idea on how to start a training loop."
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   ]
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "cell_type": "markdown",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "metadata": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "id": "p-7U_cwgF5Ej"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "source": [
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 13:36:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "### Training with trainer\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "The trainer does almost the same thing. The only difference is that it has considered many details and is more modular."
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   ]
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "cell_type": "code",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "execution_count": null,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "metadata": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "colab": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								     "base_uri": "https://localhost:8080/"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "id": "vcvw9J8RNtFE",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "outputId": "b483fa8b-2a57-4051-a3d0-6d8162d948c5"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "outputs": [],
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "source": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "train_collector.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "train_envs.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "test_collector.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "test_envs.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "replaybuffer.reset()\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "result = OnpolicyTrainer(\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    policy=policy,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    train_collector=train_collector,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    test_collector=test_collector,\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "    max_epoch=10,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    step_per_epoch=1,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    repeat_per_collect=1,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    episode_per_test=10,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    step_per_collect=2000,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "    batch_size=512,\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    ")\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "print(result)"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   ]
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "cell_type": "markdown",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "metadata": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "id": "_j3aUJZQ7nml"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "source": [
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 13:36:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "## Further Reading\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "### Logger usages\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "Tianshou provides experiment loggers that are both tensorboard- and wandb-compatible. It also has a BaseLogger Class which allows you to self-define your own logger. Check the [documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.utils.html#tianshou.utils.BaseLogger) for details.\n",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-11-09 13:36:23 +01:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "### Learn more about the APIs of Trainers\n",
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								    "[documentation](https://tianshou.readthedocs.io/en/master/api/tianshou.trainer.html)"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   ]
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 ],
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "metadata": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "colab": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "collapsed_sections": [
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "S3-tJZy35Ck_",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "XfsuU2AAE52C",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "p-7U_cwgF5Ej",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "_j3aUJZQ7nml"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   ],
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								   "provenance": []
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "kernelspec": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "display_name": "Python 3 (ipykernel)",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "language": "python",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "name": "python3"
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  "language_info": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "codemirror_mode": {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "name": "ipython",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    "version": 3
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "file_extension": ".py",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "mimetype": "text/x-python",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "name": "python",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "nbconvert_exporter": "python",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "pygments_lexer": "ipython3",
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								   "version": "3.11.5"
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  }
							 
						 
					
						
							
								
									
										
										
										
											2023-10-26 16:27:59 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 },
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "nbformat": 4,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 "nbformat_minor": 4
							 
						 
					
						
							
								
									
										
										
										
											2023-10-17 13:59:37 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								}