{"id":20616650,"url":"https://github.com/irieo/space-time-optimization","last_synced_at":"2025-10-15T21:24:08.560Z","repository":{"id":212318566,"uuid":"724668352","full_name":"Irieo/space-time-optimization","owner":"Irieo","description":"Code for the paper \"Spatio-temporal load shifting for truly clean computing\"","archived":false,"fork":false,"pushed_at":"2025-02-04T15:50:55.000Z","size":41675,"stargazers_count":10,"open_issues_count":4,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T08:40:35.342Z","etag":null,"topics":["energy","power-systems","pypsa","snakemake"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Irieo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSES/CC-BY-4.0.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-28T14:51:57.000Z","updated_at":"2025-04-06T12:45:33.000Z","dependencies_parsed_at":"2023-12-18T18:59:34.677Z","dependency_job_id":"361a64d6-17f0-4f03-b277-16def8e7425e","html_url":"https://github.com/Irieo/space-time-optimization","commit_stats":null,"previous_names":["irieo/space-time-optimization"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Irieo/space-time-optimization","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irieo%2Fspace-time-optimization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irieo%2Fspace-time-optimization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irieo%2Fspace-time-optimization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irieo%2Fspace-time-optimization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Irieo","download_url":"https://codeload.github.com/Irieo/space-time-optimization/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Irieo%2Fspace-time-optimization/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279120142,"owners_count":26108263,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-15T02:00:07.814Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["energy","power-systems","pypsa","snakemake"],"created_at":"2024-11-16T11:19:51.273Z","updated_at":"2025-10-15T21:24:08.513Z","avatar_url":"https://github.com/Irieo.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nSPDX-FileCopyrightText: 2024 Iegor Riepin, Tom Brown\n\nSPDX-License-Identifier: CC0-1.0\n--\u003e\n\n# Code for the paper \"Spatio-temporal load shifting for truly clean computing\"\n\nThis repository contains the code to reproduce the complete workflow behind the manuscript: \"Spatio-temporal load shifting for truly clean computing\" by Iegor Riepin, Victor Zavala and Tom Brown.\n\nThe paper is now published in the journal [Advances in Applied Energy](https://iriepin.com/publication/p_2024_spacetime/) under open access.\n\n\n### Abstract\n\nCompanies operating datacenters are increasingly committed to procuring renewable energy to reduce their carbon footprint, with a growing emphasis on achieving 24/7 Carbon-Free Energy (CFE) matching—eliminating carbon emissions from electricity use on an hourly basis.\nHowever, variability in renewable energy resources poses significant challenges to achieving this goal.\nThis study investigates how shifting computing workloads and associated power loads across time and location supports 24/7 CFE matching.\nWe develop an optimization model to simulate a network of geographically distributed datacenters managed by a company leveraging spatio-temporal load flexibility to achieve 24/7 CFE matching.\nWe isolate three signals relevant for informed use of load flexibility: (1) varying average quality of renewable energy resources, (2) low correlation between wind power generation over long distances due to different weather conditions, and (3) lags in solar radiation peak due to Earth's rotation.\nOur analysis reveals that datacenter location and time of year influence which signal drives an effective load-shaping strategy.\nBy leveraging these signals for coordinated energy procurement and load-shifting decisions, clean computing becomes both more resource-efficient and cost-effective—the costs of 24/7 CFE are reduced by 1.29±0.07 EUR/MWh for every additional percentage of flexible load.\nThis study provides practical guidelines for datacenter companies to harness spatio-temporal load flexibility for clean computing.\nOur results and the open-source optimization model offer insights applicable to a broader range of industries aiming to eliminate their carbon footprints.\n\n\n### How to reproduce results from the paper?\n\n1. Clone the repository:\n\n```\ngit clone git@github.com:Irieo/space-time-optimization.git\n```\n\n2. Install the necessary dependencies using `environment.yaml` file. The following commands will do the job:\n\n```\nconda env create -f envs/environment.yaml\nconda activate 247-env\n```\n3. The results of the paper can be conveniently reproduced by running the [snakemake](https://snakemake.readthedocs.io/en/stable/) workflows.  The following terminal commands will run the workflows for sections 1-4 of the paper:\n\n```\nsnakemake -call --configfile custom_config_s1.yaml\nsnakemake -call --configfile custom_config_s2.yaml\nsnakemake -call --configfile custom_config_s3.yaml\nsnakemake -call --configfile custom_config_s4.yaml\n```\n\nNB Size of a mathematical problem for this paper is optimized so that it is possible to reproduce the results on a private laptop with 8GB RAM.\n\nModel results will be stored in the `results` directory. For each workflow, the directory will contain:\n- solved networks (.nc) for individual optimization problems\n- summary (.yaml) for individual optimization problems\n- summary (.csv) for aggregated results\n- log files (memory, python, solver)\n- detailed plots (.pdf) of the results\n\n4. At this point, a curious reader can even reproduce the dashboards from the paper by running the jupyter notebooks in the `scripts/` directory and compile the LaTeX project `/manuscript/manuscript.tex` to reproduce the paper .pdf file.\n\n### Data requirements\n\nThe workflow is based on PyPSA networks exported from [PyPSA-Eur](https://github.com/PyPSA/pypsa-eur) built with `myopic` setting to get brownfield networks for 2025/2030. For convenience, the workflow uses already networks provided in the `input` folder by default.\n\nTechnology data assumptions are automatically retrieved from [technology-data](https://github.com/PyPSA/technology-data) repository for `\u003cyear\u003e` and `\u003cversion\u003e`, as specified in `config.yaml`.\n\nSeveral plots from the paper require high-resolution geographical data that is not included in this repository.\nTo reproduce those plots, three files (`elec_s_256_ec.nc`, `profile_solar.nc`, `regions_onshore_elec_s_256.geojson`) from [PyPSA-Eur Zenodo repository](https://zenodo.org/records/7646728) have to be retrieved and placed in the `input/` directory. The following command automates this task:\n\n```\nsnakemake -call retrieve_data\n```\n\n### Software requirements\n\nThe code is known to work with PyPSA 0.26.0, pandas 2.0.3, numpy 1.26.2, and gurobi 10.0.1. The complete list of dependencies is in the [envs/environment.yaml](envs/environment.yaml) file.\n\n\n### License\n\nThere are different open licenses for different types of files in the repository. See [specifications here](.reuse/dep5).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firieo%2Fspace-time-optimization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firieo%2Fspace-time-optimization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firieo%2Fspace-time-optimization/lists"}