2023-11-22 11:59:25 +00:00
|
|
|
{
|
|
|
|
|
"cells": [
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 11:59:25 +00:00
|
|
|
"metadata": {},
|
2023-11-22 12:59:33 +00:00
|
|
|
"outputs": [],
|
2023-11-22 11:59:25 +00:00
|
|
|
"source": [
|
|
|
|
|
"from primaite.game.game import PrimaiteGame\n",
|
2023-11-23 00:54:19 +00:00
|
|
|
"from primaite.session.environment import PrimaiteGymEnv\n",
|
2023-11-22 11:59:25 +00:00
|
|
|
"import yaml"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 11:59:25 +00:00
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2024-03-04 19:43:51 +00:00
|
|
|
"from primaite.config.load import data_manipulation_config_path"
|
2023-11-22 11:59:25 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 11:59:25 +00:00
|
|
|
"metadata": {},
|
2023-11-23 00:54:19 +00:00
|
|
|
"outputs": [],
|
2023-11-22 11:59:25 +00:00
|
|
|
"source": [
|
2024-03-04 19:43:51 +00:00
|
|
|
"with open(data_manipulation_config_path(), 'r') as f:\n",
|
2024-02-26 10:26:28 +00:00
|
|
|
" cfg = yaml.safe_load(f)\n"
|
2023-11-22 11:59:25 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 11:59:25 +00:00
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2024-02-20 16:21:03 +00:00
|
|
|
"gym = PrimaiteGymEnv(game_config=cfg)"
|
2023-11-22 11:59:25 +00:00
|
|
|
]
|
2023-11-22 13:12:08 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 13:12:08 +00:00
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2024-03-22 16:35:53 +00:00
|
|
|
"from stable_baselines3 import PPO\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"EPISODE_LEN = 128\n",
|
|
|
|
|
"NO_STEPS = EPISODE_LEN * 10\n",
|
|
|
|
|
"BATCH_SIZE = EPISODE_LEN * 10\n",
|
|
|
|
|
"TOTAL_TIMESTEPS = 5e3 * EPISODE_LEN\n",
|
|
|
|
|
"LEARNING_RATE = 3e-4"
|
2023-11-22 13:12:08 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 13:12:08 +00:00
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2024-03-22 16:35:53 +00:00
|
|
|
"model = PPO('MlpPolicy', gym, learning_rate=LEARNING_RATE, n_steps=NO_STEPS, batch_size=BATCH_SIZE, verbose=0, tensorboard_log=\"./PPO_UC2/\")\n"
|
2023-11-22 13:12:08 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 13:12:08 +00:00
|
|
|
"metadata": {},
|
2023-11-23 00:54:19 +00:00
|
|
|
"outputs": [],
|
2023-11-22 13:12:08 +00:00
|
|
|
"source": [
|
2024-03-22 16:35:53 +00:00
|
|
|
"model.learn(total_timesteps=TOTAL_TIMESTEPS)\n"
|
2023-11-22 13:12:08 +00:00
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
2023-11-23 00:54:19 +00:00
|
|
|
"execution_count": null,
|
2023-11-22 13:12:08 +00:00
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
2024-03-22 16:35:53 +00:00
|
|
|
"model.save(\"PrimAITE-v3.0.0b7-PPO\")"
|
2023-11-22 13:12:08 +00:00
|
|
|
]
|
2024-02-26 10:26:28 +00:00
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
2024-03-22 16:35:53 +00:00
|
|
|
"source": [
|
|
|
|
|
"eval_model = PPO(\"MlpPolicy\", gym)\n",
|
|
|
|
|
"eval_model = PPO.load(\"PrimAITE-v3.0.0b7-PPO\", gym)"
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"cell_type": "code",
|
|
|
|
|
"execution_count": null,
|
|
|
|
|
"metadata": {},
|
|
|
|
|
"outputs": [],
|
|
|
|
|
"source": [
|
|
|
|
|
"from stable_baselines3.common.evaluation import evaluate_policy\n",
|
|
|
|
|
"\n",
|
|
|
|
|
"evaluate_policy(eval_model, gym, n_eval_episodes=10)"
|
|
|
|
|
]
|
2023-11-22 11:59:25 +00:00
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
"metadata": {
|
|
|
|
|
"kernelspec": {
|
|
|
|
|
"display_name": "venv",
|
|
|
|
|
"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",
|
2024-03-22 16:35:53 +00:00
|
|
|
"version": "3.9.18"
|
2023-11-22 11:59:25 +00:00
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
"nbformat": 4,
|
|
|
|
|
"nbformat_minor": 2
|
|
|
|
|
}
|