{ "cells": [ { "cell_type": "code", "execution_count": null, "id": "5bbf305d", "metadata": {}, "outputs": [], "source": [ "# Préparation commune des TP Python\n", "# Le notebook utilise uniquement les ressources fournies dans le dossier codes/.\n", "from pathlib import Path\n", "import importlib.util\n", "import subprocess\n", "import sys\n", "\n", "REQUIRED_PACKAGES = {'numpy': 'numpy', 'pandas': 'pandas', 'matplotlib': 'matplotlib'}\n", "missing = [package for module, package in REQUIRED_PACKAGES.items()\n", " if importlib.util.find_spec(module) is None]\n", "if missing:\n", " print(\"Installation des paquets manquants :\", \", \".join(missing))\n", " subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", *missing])\n", "\n", "WORKDIR = Path.cwd().resolve()\n", "CODES_DIR = WORKDIR.parent if WORKDIR.name == \"correction\" else WORKDIR\n", "TOOLBOX_DIR = CODES_DIR / \"toolbox\"\n", "DATA_DIR = CODES_DIR / \"data\"\n", "if not CODES_DIR.is_dir():\n", " raise FileNotFoundError(\"Exécutez le notebook depuis le dossier codes/.\" )\n", "if TOOLBOX_DIR.is_dir():\n", " sys.path.insert(0, str(TOOLBOX_DIR))\n", "\n", "DICE_FILE = TOOLBOX_DIR / \"DICE.py\"\n", "if not DICE_FILE.is_file():\n", " raise FileNotFoundError(\n", " f\"Module du cours introuvable : {DICE_FILE}. \"\n", " \"Téléchargez le dossier codes complet, avec toolbox/.\"\n", " )\n", "\n", "DATA_FILE = DATA_DIR / \"ngfs_scenarios.csv\"\n", "if not DATA_FILE.is_file():\n", " raise FileNotFoundError(\n", " f\"Donnée du cours introuvable : {DATA_FILE}. \"\n", " \"Téléchargez le dossier codes complet, avec data/.\"\n", " )\n", "\n", "print(\"Environnement prêt :\", CODES_DIR)\n" ] }, { "cell_type": "markdown", "id": "6e10c6e5", "metadata": {}, "source": [ "# TP4 — Scénarios de transition et prix du carbone\n", "\n", "**Date de la séance :** mercredi 9 septembre 2026, 10:45–12:45\n", "\n", "**Objectifs**\n", "- Simuler des politiques climatiques contrastées avec DICE (variable de contrôle `mu`)\n", "- Comparer transition précoce et transition tardive\n", "- Manipuler les scénarios NGFS (prix du carbone, émissions, température)\n", "\n", "**Prérequis** : TP2, TP3." ] }, { "cell_type": "markdown", "id": "bac20718", "metadata": {}, "source": [ "## Partie 1 — Scénarios de transition" ] }, { "cell_type": "markdown", "id": "ced9d52a", "metadata": {}, "source": [ "**Question 1.** Simulez trois scénarios de politique climatique :\n", "- Aucune action : mu=0.03 (baseline)\n", "- Transition modérée : mu=0.3 dès 2025\n", "- Transition forte : mu=0.7 dès 2025" ] }, { "cell_type": "code", "execution_count": null, "id": "bb3ff14c", "metadata": {}, "outputs": [], "source": [ "import DICE, numpy as np, pandas as pd, matplotlib.pyplot as plt\n", "\n", "p_base = DICE.Params()\n", "nT = p_base.nT\n", "\n", "scenarios_mu = {\n", " 'Aucune action (mu=0.03)': 0.03,\n", " 'Transition modérée (mu=0.3)': 0.3,\n", " 'Transition forte (mu=0.7)': 0.7\n", "}\n", "paths_transition = {}\n", "for name, mu_val in scenarios_mu.items():\n", " p = DICE.Params()\n", " path = DICE.init_states(p)\n", " path[1:, p.i_mu] = mu_val\n", " timevec = range(1, p.nT)\n", " path = DICE.update_path(path, timevec, p)\n", " paths_transition[name] = (p, path)" ] }, { "cell_type": "code", "execution_count": null, "id": "b7aa3aad", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE: tracez les émissions et températures pour les 3 scénarios" ] }, { "cell_type": "markdown", "id": "95029407", "metadata": {}, "source": [ "**Question 2.** Calculez la réduction d'émissions cumulées entre 2025 et 2100 pour chaque scénario par rapport au scénario de référence." ] }, { "cell_type": "code", "execution_count": null, "id": "be977815", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "a5e37d05", "metadata": {}, "source": [ "## Partie 2 — Transition ordonnée vs désordonnée" ] }, { "cell_type": "markdown", "id": "d30b9a0d", "metadata": {}, "source": [ "**Question 3.** Comparez deux politiques :\n", "- Action précoce : mu=0.5 dès 2025\n", "- Action tardive : mu=0.5 seulement à partir de 2040" ] }, { "cell_type": "code", "execution_count": null, "id": "19fdd6d7", "metadata": {}, "outputs": [], "source": [ "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "d8dad473", "metadata": {}, "source": [ "## Partie 3 — Scénarios NGFS" ] }, { "cell_type": "markdown", "id": "895f0e55", "metadata": {}, "source": [ "**Question 4.** Chargez les données NGFS et tracez les trajectoires de prix du carbone et d'émissions pour les trois scénarios." ] }, { "cell_type": "code", "execution_count": null, "id": "7e01a016", "metadata": {}, "outputs": [], "source": [ "df_ngfs = pd.read_csv(DATA_DIR / \"ngfs_scenarios.csv\")\n", "# YOUR CODE HERE" ] }, { "cell_type": "markdown", "id": "ccfa0085", "metadata": {}, "source": [ "## Interprétation" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "name": "python", "version": "3.10" } }, "nbformat": 4, "nbformat_minor": 5 }