From 9b1bd3761464118b8adf9d83c7a40319e3fcfbf0 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Wed, 21 Feb 2024 15:49:16 -0600 Subject: [PATCH 01/34] first joss paper commit --- paper.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 paper.md diff --git a/paper.md b/paper.md new file mode 100644 index 0000000..2a7243a --- /dev/null +++ b/paper.md @@ -0,0 +1,18 @@ +--- +title: 'Osier: A Python package for multi-objective energy system optimization' +tags: + - Python + - energy systems + - genetic algorithms + - multi-objective optimization +authors: + - name: Samuel G. Dotson + - orcid: 0000-0002-8662-0336 + - affiliation: 1 + - corresponding: true +affiliations: + - name: Felix T. Adler Fellow, Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA + index: 1 + - name: Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA + index: 2 + From cb7126f1beb514bb2c8d55944215c46966866701 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Wed, 21 Feb 2024 15:49:51 -0600 Subject: [PATCH 02/34] updates joss paper --- paper.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/paper.md b/paper.md index 2a7243a..a1518c8 100644 --- a/paper.md +++ b/paper.md @@ -15,4 +15,22 @@ affiliations: index: 1 - name: Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA index: 2 +date: 20 February 2024 +bibliography: paper.bib + + +# Summary + + +# Statement of Need + + +# State of the Field + + +# Documentation + + +# References + From 4c6a5c2f0265e0dcfb36cb2ef7c09e5b5eebf832 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sun, 25 Feb 2024 16:40:42 -0600 Subject: [PATCH 03/34] adds bib file and updates state of the art --- paper.bib | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ paper.md | 9 +++++-- 2 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 paper.bib diff --git a/paper.bib b/paper.bib new file mode 100644 index 0000000..3faca76 --- /dev/null +++ b/paper.bib @@ -0,0 +1,70 @@ + +@article{liebman_simple-minded_1976, + title = {Some {Simple}-{Minded} {Observations} on the {Role} of {Optimization} in {Public} {Systems} {Decision}-{Making}}, + volume = {6}, + issn = {0092-2102}, + url = {https://pubsonline.informs.org/doi/10.1287/inte.6.4.102}, + doi = {10.1287/inte.6.4.102}, + abstract = {Because public systems problems are frequently ill-defined and have fuzzy constraints and vague multiple objectives, their solution by means of formal optimization models is not widely accepted. This paper will explore the modes (both useful and otherwise) in which optimization has been applied to such problems. The need for optimization models which somehow “fit” the decision-makers' methods and backgrounds will be discussed. Several other aspects of public systems optimization will be considered, in a somewhat random fashion. This paper will raise more questions than answers.}, + number = {4}, + urldate = {2023-01-18}, + journal = {Interfaces}, + author = {Liebman, Jon C.}, + month = aug, + year = {1976}, + note = {Publisher: INFORMS}, + pages = {102--108}, +} + +@article{pfenninger_energy_2014, + title = {Energy systems modeling for twenty-first century energy challenges}, + volume = {33}, + issn = {1364-0321}, + url = {https://www.sciencedirect.com/science/article/pii/S1364032114000872}, + doi = {10.1016/j.rser.2014.02.003}, + abstract = {Energy systems models are important methods used to generate a range of insight and analysis on the supply and demand of energy. Developed over the second half of the twentieth century, they are now seeing increased relevance in the face of stringent climate policy, energy security and economic development concerns, and increasing challenges due to the changing nature of the twenty-first century energy system. In this paper, we look particularly at models relevant to national and international energy policy, grouping them into four categories: energy systems optimization models, energy systems simulation models, power systems and electricity market models, and qualitative and mixed-methods scenarios. We examine four challenges they face and the efforts being taken to address them: (1) resolving time and space, (2) balancing uncertainty and transparency, (3) addressing the growing complexity of the energy system, and (4) integrating human behavior and social risks and opportunities. In discussing these challenges, we present possible avenues for future research and make recommendations to ensure the continued relevance for energy systems models as important sources of information for policy-making.}, + language = {en}, + urldate = {2023-01-16}, + journal = {Renewable and Sustainable Energy Reviews}, + author = {Pfenninger, Stefan and Hawkes, Adam and Keirstead, James}, + month = may, + year = {2014}, + keywords = {Complexity, Energy policy, Energy systems modeling, High-resolution modeling, Uncertainty}, + pages = {74--86}, + file = {ScienceDirect Full Text PDF:/home/sam/snap/zotero-snap/common/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf:application/pdf;ScienceDirect Snapshot:/home/sam/snap/zotero-snap/common/Zotero/storage/WG6LL95H/S1364032114000872.html:text/html}, +} + +@misc{pfenninger_openmod_nodate, + title = {openmod - {Open} {Energy} {Modelling} {Initiative}}, + url = {https://www.openmod-initiative.org/}, + abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. + +Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes – even to fellow researchers. +“Open” refers to model source code that can be studied, changed and improved as well as freely available energy system data. + +We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. + +We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, + urldate = {2022-12-13}, + journal = {openmod-initiative}, + author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, + file = {openmod - Open Energy Modelling Initiative:/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html:text/html}, +} + +@article{vagero_can_2023, + title = {Can we optimise for justice? {Reviewing} the inclusion of energy justice in energy system optimisation models}, + volume = {95}, + issn = {2214-6296}, + shorttitle = {Can we optimise for justice?}, + url = {https://www.sciencedirect.com/science/article/pii/S2214629622004169}, + doi = {10.1016/j.erss.2022.102913}, + abstract = {Energy systems optimisation models are used for analysing energy systems and questions of e.g. greenhouse gas mitigation aligned with the Paris Agreement. However, the techno-economic nature of energy system models has opened for discussions about how well societal aspects are represented. Studying justice implications in energy systems modelling is an opportunity to inform policy-makers and the broader society how long-term changes to energy systems may affect different social groups and how to minimise injustices. In this paper, we review how, and to what extent, aspects of social justice have been included in energy systems optimisation modelling as well as areas for future research. In addition to reviewing published journal articles and reports, we organise a workshop with energy system modellers and social scientists, providing qualitative information on past approaches and potential future venues. We identify 3 key findings: (i) Exploring alternative system configurations to cost-optimality is receiving increasing attention and typically done through a ‘modelling to generate alternatives’ approach, (ii) among formalised definitions of distributional justice, equality (equal distribution) is the most common equity principle. There is at the same time little reflection on the choice and impact of equity principles, potentially contributing to an overly narrow understanding of justice. (iii) Among the workshop participants, participatory approaches which involves stakeholders and lay people are considered a potential future area of research, especially for making modelling results and processes more accessible and impactful to the wider public.}, + urldate = {2024-02-19}, + journal = {Energy Research \& Social Science}, + author = {Vågerö, Oskar and Zeyringer, Marianne}, + month = jan, + year = {2023}, + keywords = {Energy justice, Energy systems modelling, Optimisation, Social justice}, + pages = {102913}, + file = {Full Text:/home/sam/snap/zotero-snap/common/Zotero/storage/EB5R8QJC/Vågerö and Zeyringer - 2023 - Can we optimise for justice Reviewing the inclusi.pdf:application/pdf}, +} diff --git a/paper.md b/paper.md index a1518c8..4ac65fd 100644 --- a/paper.md +++ b/paper.md @@ -17,16 +17,21 @@ affiliations: index: 2 date: 20 February 2024 bibliography: paper.bib - +--- # Summary + + # Statement of Need # State of the Field - +There are myriad open- and closed-source energy system optimization models +(ESOMs) available `@pfenninger_openmod_nodate`. ESOMs can be used for a variety +of tasks but are most frequently used for prescriptive analyses +meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models. # Documentation From 6c930481540b9975b624fc5a403b0d42cc8b80a7 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Mon, 26 Feb 2024 18:41:24 -0600 Subject: [PATCH 04/34] big updates to osier paper --- paper.bib | 107 ++++++++++++++++++++++++++++++++++-------------------- paper.md | 41 +++++++++++++++++---- 2 files changed, 101 insertions(+), 47 deletions(-) diff --git a/paper.bib b/paper.bib index 3faca76..548c83d 100644 --- a/paper.bib +++ b/paper.bib @@ -1,19 +1,35 @@ +@online{pfenninger_openmod_nodate, + title = {openmod - Open Energy Modelling Initiative}, + url = {https://www.openmod-initiative.org/}, + abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. + +Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes – even to fellow researchers. +“Open” refers to model source code that can be studied, changed and improved as well as freely available energy system data. + +We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. + +We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, + titleaddon = {openmod-initiative}, + author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, + urldate = {2022-12-13}, + file = {openmod - Open Energy Modelling Initiative:/Users/samdotson/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html:text/html}, +} + @article{liebman_simple-minded_1976, - title = {Some {Simple}-{Minded} {Observations} on the {Role} of {Optimization} in {Public} {Systems} {Decision}-{Making}}, + title = {Some Simple-Minded Observations on the Role of Optimization in Public Systems Decision-Making}, volume = {6}, issn = {0092-2102}, url = {https://pubsonline.informs.org/doi/10.1287/inte.6.4.102}, doi = {10.1287/inte.6.4.102}, abstract = {Because public systems problems are frequently ill-defined and have fuzzy constraints and vague multiple objectives, their solution by means of formal optimization models is not widely accepted. This paper will explore the modes (both useful and otherwise) in which optimization has been applied to such problems. The need for optimization models which somehow “fit” the decision-makers' methods and backgrounds will be discussed. Several other aspects of public systems optimization will be considered, in a somewhat random fashion. This paper will raise more questions than answers.}, + pages = {102--108}, number = {4}, - urldate = {2023-01-18}, - journal = {Interfaces}, + journaltitle = {Interfaces}, author = {Liebman, Jon C.}, - month = aug, - year = {1976}, - note = {Publisher: INFORMS}, - pages = {102--108}, + urldate = {2023-01-18}, + date = {1976-08}, + note = {Publisher: {INFORMS}}, } @article{pfenninger_energy_2014, @@ -23,48 +39,59 @@ @article{pfenninger_energy_2014 url = {https://www.sciencedirect.com/science/article/pii/S1364032114000872}, doi = {10.1016/j.rser.2014.02.003}, abstract = {Energy systems models are important methods used to generate a range of insight and analysis on the supply and demand of energy. Developed over the second half of the twentieth century, they are now seeing increased relevance in the face of stringent climate policy, energy security and economic development concerns, and increasing challenges due to the changing nature of the twenty-first century energy system. In this paper, we look particularly at models relevant to national and international energy policy, grouping them into four categories: energy systems optimization models, energy systems simulation models, power systems and electricity market models, and qualitative and mixed-methods scenarios. We examine four challenges they face and the efforts being taken to address them: (1) resolving time and space, (2) balancing uncertainty and transparency, (3) addressing the growing complexity of the energy system, and (4) integrating human behavior and social risks and opportunities. In discussing these challenges, we present possible avenues for future research and make recommendations to ensure the continued relevance for energy systems models as important sources of information for policy-making.}, - language = {en}, - urldate = {2023-01-16}, - journal = {Renewable and Sustainable Energy Reviews}, + pages = {74--86}, + journaltitle = {Renewable and Sustainable Energy Reviews}, + shortjournal = {Renewable and Sustainable Energy Reviews}, author = {Pfenninger, Stefan and Hawkes, Adam and Keirstead, James}, - month = may, - year = {2014}, + urldate = {2023-01-16}, + date = {2014-05-01}, + langid = {english}, keywords = {Complexity, Energy policy, Energy systems modeling, High-resolution modeling, Uncertainty}, - pages = {74--86}, - file = {ScienceDirect Full Text PDF:/home/sam/snap/zotero-snap/common/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf:application/pdf;ScienceDirect Snapshot:/home/sam/snap/zotero-snap/common/Zotero/storage/WG6LL95H/S1364032114000872.html:text/html}, -} - -@misc{pfenninger_openmod_nodate, - title = {openmod - {Open} {Energy} {Modelling} {Initiative}}, - url = {https://www.openmod-initiative.org/}, - abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. - -Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes – even to fellow researchers. -“Open” refers to model source code that can be studied, changed and improved as well as freely available energy system data. - -We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. - -We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, - urldate = {2022-12-13}, - journal = {openmod-initiative}, - author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, - file = {openmod - Open Energy Modelling Initiative:/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html:text/html}, + file = {ScienceDirect Full Text PDF:/Users/samdotson/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf:application/pdf;ScienceDirect Snapshot:/Users/samdotson/Zotero/storage/WG6LL95H/S1364032114000872.html:text/html}, } @article{vagero_can_2023, - title = {Can we optimise for justice? {Reviewing} the inclusion of energy justice in energy system optimisation models}, + title = {Can we optimise for justice? Reviewing the inclusion of energy justice in energy system optimisation models}, volume = {95}, issn = {2214-6296}, - shorttitle = {Can we optimise for justice?}, url = {https://www.sciencedirect.com/science/article/pii/S2214629622004169}, doi = {10.1016/j.erss.2022.102913}, + shorttitle = {Can we optimise for justice?}, abstract = {Energy systems optimisation models are used for analysing energy systems and questions of e.g. greenhouse gas mitigation aligned with the Paris Agreement. However, the techno-economic nature of energy system models has opened for discussions about how well societal aspects are represented. Studying justice implications in energy systems modelling is an opportunity to inform policy-makers and the broader society how long-term changes to energy systems may affect different social groups and how to minimise injustices. In this paper, we review how, and to what extent, aspects of social justice have been included in energy systems optimisation modelling as well as areas for future research. In addition to reviewing published journal articles and reports, we organise a workshop with energy system modellers and social scientists, providing qualitative information on past approaches and potential future venues. We identify 3 key findings: (i) Exploring alternative system configurations to cost-optimality is receiving increasing attention and typically done through a ‘modelling to generate alternatives’ approach, (ii) among formalised definitions of distributional justice, equality (equal distribution) is the most common equity principle. There is at the same time little reflection on the choice and impact of equity principles, potentially contributing to an overly narrow understanding of justice. (iii) Among the workshop participants, participatory approaches which involves stakeholders and lay people are considered a potential future area of research, especially for making modelling results and processes more accessible and impactful to the wider public.}, - urldate = {2024-02-19}, - journal = {Energy Research \& Social Science}, - author = {Vågerö, Oskar and Zeyringer, Marianne}, - month = jan, - year = {2023}, - keywords = {Energy justice, Energy systems modelling, Optimisation, Social justice}, pages = {102913}, - file = {Full Text:/home/sam/snap/zotero-snap/common/Zotero/storage/EB5R8QJC/Vågerö and Zeyringer - 2023 - Can we optimise for justice Reviewing the inclusi.pdf:application/pdf}, + journaltitle = {Energy Research \& Social Science}, + shortjournal = {Energy Research \& Social Science}, + author = {Vågerö, Oskar and Zeyringer, Marianne}, + urldate = {2024-02-19}, + date = {2023-01-01}, + keywords = {Energy justice, Optimisation, Energy systems modelling, Social justice}, + file = {Full Text:/Users/samdotson/Zotero/storage/EB5R8QJC/Vågerö and Zeyringer - 2023 - Can we optimise for justice Reviewing the inclusi.pdf:application/pdf}, +} + +@article{mckenna_combining_2018, + title = {Combining local preferences with multi-criteria decision analysis and linear optimization to develop feasible energy concepts in small communities}, + volume = {268}, + issn = {0377-2217}, + url = {https://www.sciencedirect.com/science/article/pii/S0377221718300729}, + doi = {10.1016/j.ejor.2018.01.036}, + series = {Community Operational Research: Innovations, internationalization and agenda-setting applications}, + abstract = {Decentralised community energy resources are often abundant in smaller, more rural communities. Such communities often lack the capacity to develop extensive energy concepts and thus to exploit these resources in a consistent way. This paper presents an integrated participatory approach to developing feasible energy concepts for small communities. The novelty lies in the combination of methods, the consideration of uncertainties, and the application to an exemplary municipality in Germany. Stakeholder workshops are combined with energy modelling and multi-criteria decision analysis ({MCDA}), and a high transferability is ensured with mainly public data. The workshop discussion revealed three values: economic sustainability, environmental sustainability, and local energy autonomy. A total of eight alternatives for the 2030 energy system are identified to achieve these values. We find that an alternative that seeks only maximization of economic sustainability should be rejected based on elicited preferences. Instead, several alternatives seeking a maximization of environmental sustainability with constraints on economic sustainability (i.e. total cost) and local energy autonomy consistently achieve the highest overall performance scores. A maximization of economic sustainability or local energy autonomy alone results in the lowest overall performance scores and should therefore not be pursued by the community. The intermediate alternatives demonstrate that an equivalent performance gain with respect to autonomy comes at higher costs than the same gain with respect to environmental sustainability. Similarities between the best performing alternatives in terms of technologies that can be installed by 2030 show that our methodology can generate concrete and robust recommendations on building-level measures for energy system design.}, + pages = {1092--1110}, + number = {3}, + journaltitle = {European Journal of Operational Research}, + shortjournal = {European Journal of Operational Research}, + author = {{McKenna}, R. and Bertsch, V. and Mainzer, K. and Fichtner, W.}, + urldate = {2024-02-25}, + date = {2018-08-01}, + keywords = {Community operational research, {MCDA}, {MILP}, Sustainable energy, Uncertainties}, + file = {McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf:/Users/samdotson/Zotero/storage/N4X7U5L5/McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf:application/pdf;ScienceDirect Snapshot:/Users/samdotson/Zotero/storage/DFTWLY3S/S0377221718300729.html:text/html}, +} + +@misc{national_renewable_energy_laboratory_2023_2023, + title = {2023 Annual Technology Baseline ({ATB})}, + url = {https://atb.nrel.gov/electricity/2023/data}, + author = {{National Renewable Energy Laboratory}}, + urldate = {2024-02-26}, + date = {2023}, + file = {Data | Electricity | 2023 | ATB | NREL:/Users/samdotson/Zotero/storage/URRFWYVN/data.html:text/html}, } diff --git a/paper.md b/paper.md index 4ac65fd..e47faa8 100644 --- a/paper.md +++ b/paper.md @@ -20,21 +20,48 @@ bibliography: paper.bib --- # Summary +`osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges with procedural and recognition justice. +# Statement of Need +There are myriad open- and closed-source energy system optimization models +(ESOMs) available `@pfenninger_openmod_nodate`. ESOMs can be used for a variety +of tasks but are most frequently used for prescriptive analyses +meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models `@pfenninger_energy_2014`. +# Design and Implementation +In order to run `osier`, users are only required to supply an energy demand time +series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset `@national_renewable_energy_laboratory_2023_2023`. +A set of `osier.Technology` objects, along with user-supplied demand data, can be tested independently with the `osier.DispatchModel`. The `osier.DispatchModel` is a linear programming model implemented with the `pyomo` library. For investment decisions and tradeoff analysis, users can pass their portfolio of `osier.Technology` objects, energy demand, and their desired objectives to the `osier.CapacityExpansion` model, the highest level model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo`. +## Key Features +In addition to being the first and only open-source multi-objective energy modelling framework, `osier` has a few key features that further distinguishes it from other modelling frameworks. First, since `osier.Technology` objects are Python objects, users can modify values and assumptions, or assign new attributes to the tested technologies. Second, contrary to conventional energy system models, `osier` has no required objectives. While users may choose from a variety of pre-defined objectives, they may also declare their own objectives based on any quantifiable metric. The example code below illustrates the pattern that `osier` expects. The requirements for a bespoke objective are: -# Statement of Need +1. The first argument must be a list of `osier.Technology` objects. +2. The second argument must be the results from an `osier.DispatchModel`. But this may be a simple placeholder with a default value of `None` as shown below. +3. The function must return a numerical value. +```py +nuclear.readiness = 9 +fusion.readiness = 3 -# State of the Field -There are myriad open- and closed-source energy system optimization models -(ESOMs) available `@pfenninger_openmod_nodate`. ESOMs can be used for a variety -of tasks but are most frequently used for prescriptive analyses -meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models. +technology_list = [nuclear, fusion] + +def osier_objective(technology_list, solved_dispatch_model=None): + """ + Calculate the capacity-weighted technology readiness + score for this energy mix. + """ + + total_capacity = np.array([t.capacity + for t in technology_list]).sum() + + objective_value = np.array([t.readiness*t.capacity + for t in technology_list]).sum() -# Documentation + return objective_value / total_capacity +``` +These two features acknowledge that a modeler cannot know *a priori* all possible objectives or parameters of interest. Allowing users to define their own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and expands the potential for incorporating localized preferences. # References From 8bfacfb59bf144aeb51781a79873b80e30a773db Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 13:27:32 -0600 Subject: [PATCH 05/34] adds github workflow to compile paper --- .github/workflows/CI.yml | 4 ++++ .github/workflows/draft-pdf.yml | 23 +++++++++++++++++++++++ paper.md | 1 + 3 files changed, 28 insertions(+) create mode 100644 .github/workflows/draft-pdf.yml diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 8ed7835..94ccd33 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -56,3 +56,7 @@ jobs: - name: Test with pytest run: | pytest tests/ + + - name: Open Journals PDF Generator + uses: openjournals/openjournals-draft-action@v.1.0 + diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml new file mode 100644 index 0000000..08a5ede --- /dev/null +++ b/.github/workflows/draft-pdf.yml @@ -0,0 +1,23 @@ +on: [push] + +jobs: + paper: + runs-on: ubuntu-latest + name: Paper Draft + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Build draft PDF + uses: openjournals/openjournals-draft-action@master + with: + journal: joss + # This should be the path to the paper within your repo. + paper-path: paper.md + - name: Upload + uses: actions/upload-artifact@v1 + with: + name: paper + # This is the output path where Pandoc will write the compiled + # PDF. Note, this should be the same directory as the input + # paper.md + path: paper.pdf \ No newline at end of file diff --git a/paper.md b/paper.md index e47faa8..7b45512 100644 --- a/paper.md +++ b/paper.md @@ -20,6 +20,7 @@ bibliography: paper.bib --- # Summary +Transitioning to a clean energy economy will require expanded energy infrastructure a `osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges with procedural and recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models From 1dff0a9d88d071092d11acc2b416bf2995375190 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 13:47:39 -0600 Subject: [PATCH 06/34] updates bibfile? --- paper.bib | 160 +++++++++++++++++++++++++----------------------------- paper.md | 10 ++-- 2 files changed, 79 insertions(+), 91 deletions(-) diff --git a/paper.bib b/paper.bib index 548c83d..17f7469 100644 --- a/paper.bib +++ b/paper.bib @@ -1,97 +1,85 @@ - -@online{pfenninger_openmod_nodate, - title = {openmod - Open Energy Modelling Initiative}, - url = {https://www.openmod-initiative.org/}, - abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. - -Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes – even to fellow researchers. -“Open” refers to model source code that can be studied, changed and improved as well as freely available energy system data. - -We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. - -We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, - titleaddon = {openmod-initiative}, - author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, - urldate = {2022-12-13}, - file = {openmod - Open Energy Modelling Initiative:/Users/samdotson/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html:text/html}, +@article{liebmanSimpleMindedObservationsRole1976, + title = {Some {{Simple-Minded Observations}} on the {{Role}} of {{Optimization}} in {{Public Systems Decision-Making}}}, + author = {Liebman, Jon C.}, + year = {1976}, + month = aug, + journal = {Interfaces}, + volume = {6}, + number = {4}, + pages = {102--108}, + publisher = {INFORMS}, + issn = {0092-2102}, + doi = {10.1287/inte.6.4.102}, + urldate = {2023-01-18}, + abstract = {Because public systems problems are frequently ill-defined and have fuzzy constraints and vague multiple objectives, their solution by means of formal optimization models is not widely accepted. This paper will explore the modes (both useful and otherwise) in which optimization has been applied to such problems. The need for optimization models which somehow ``fit'' the decision-makers' methods and backgrounds will be discussed. Several other aspects of public systems optimization will be considered, in a somewhat random fashion. This paper will raise more questions than answers.} } -@article{liebman_simple-minded_1976, - title = {Some Simple-Minded Observations on the Role of Optimization in Public Systems Decision-Making}, - volume = {6}, - issn = {0092-2102}, - url = {https://pubsonline.informs.org/doi/10.1287/inte.6.4.102}, - doi = {10.1287/inte.6.4.102}, - abstract = {Because public systems problems are frequently ill-defined and have fuzzy constraints and vague multiple objectives, their solution by means of formal optimization models is not widely accepted. This paper will explore the modes (both useful and otherwise) in which optimization has been applied to such problems. The need for optimization models which somehow “fit” the decision-makers' methods and backgrounds will be discussed. Several other aspects of public systems optimization will be considered, in a somewhat random fashion. This paper will raise more questions than answers.}, - pages = {102--108}, - number = {4}, - journaltitle = {Interfaces}, - author = {Liebman, Jon C.}, - urldate = {2023-01-18}, - date = {1976-08}, - note = {Publisher: {INFORMS}}, +@article{mckennaCombiningLocalPreferences2018, + title = {Combining Local Preferences with Multi-Criteria Decision Analysis and Linear Optimization to Develop Feasible Energy Concepts in Small Communities}, + author = {McKenna, R. and Bertsch, V. and Mainzer, K. and Fichtner, W.}, + year = {2018}, + month = aug, + journal = {European Journal of Operational Research}, + series = {Community {{Operational Research}}: {{Innovations}}, Internationalization and Agenda-Setting Applications}, + volume = {268}, + number = {3}, + pages = {1092--1110}, + issn = {0377-2217}, + doi = {10.1016/j.ejor.2018.01.036}, + urldate = {2024-02-25}, + abstract = {Decentralised community energy resources are often abundant in smaller, more rural communities. Such communities often lack the capacity to develop extensive energy concepts and thus to exploit these resources in a consistent way. This paper presents an integrated participatory approach to developing feasible energy concepts for small communities. The novelty lies in the combination of methods, the consideration of uncertainties, and the application to an exemplary municipality in Germany. Stakeholder workshops are combined with energy modelling and multi-criteria decision analysis (MCDA), and a high transferability is ensured with mainly public data. The workshop discussion revealed three values: economic sustainability, environmental sustainability, and local energy autonomy. A total of eight alternatives for the 2030 energy system are identified to achieve these values. We find that an alternative that seeks only maximization of economic sustainability should be rejected based on elicited preferences. Instead, several alternatives seeking a maximization of environmental sustainability with constraints on economic sustainability (i.e. total cost) and local energy autonomy consistently achieve the highest overall performance scores. A maximization of economic sustainability or local energy autonomy alone results in the lowest overall performance scores and should therefore not be pursued by the community. The intermediate alternatives demonstrate that an equivalent performance gain with respect to autonomy comes at higher costs than the same gain with respect to environmental sustainability. Similarities between the best performing alternatives in terms of technologies that can be installed by 2030 show that our methodology can generate concrete and robust recommendations on building-level measures for energy system design.}, + keywords = {Community operational research,MCDA,MILP,Sustainable energy,Uncertainties}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/N4X7U5L5/McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/DFTWLY3S/S0377221718300729.html} } -@article{pfenninger_energy_2014, - title = {Energy systems modeling for twenty-first century energy challenges}, - volume = {33}, - issn = {1364-0321}, - url = {https://www.sciencedirect.com/science/article/pii/S1364032114000872}, - doi = {10.1016/j.rser.2014.02.003}, - abstract = {Energy systems models are important methods used to generate a range of insight and analysis on the supply and demand of energy. Developed over the second half of the twentieth century, they are now seeing increased relevance in the face of stringent climate policy, energy security and economic development concerns, and increasing challenges due to the changing nature of the twenty-first century energy system. In this paper, we look particularly at models relevant to national and international energy policy, grouping them into four categories: energy systems optimization models, energy systems simulation models, power systems and electricity market models, and qualitative and mixed-methods scenarios. We examine four challenges they face and the efforts being taken to address them: (1) resolving time and space, (2) balancing uncertainty and transparency, (3) addressing the growing complexity of the energy system, and (4) integrating human behavior and social risks and opportunities. In discussing these challenges, we present possible avenues for future research and make recommendations to ensure the continued relevance for energy systems models as important sources of information for policy-making.}, - pages = {74--86}, - journaltitle = {Renewable and Sustainable Energy Reviews}, - shortjournal = {Renewable and Sustainable Energy Reviews}, - author = {Pfenninger, Stefan and Hawkes, Adam and Keirstead, James}, - urldate = {2023-01-16}, - date = {2014-05-01}, - langid = {english}, - keywords = {Complexity, Energy policy, Energy systems modeling, High-resolution modeling, Uncertainty}, - file = {ScienceDirect Full Text PDF:/Users/samdotson/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf:application/pdf;ScienceDirect Snapshot:/Users/samdotson/Zotero/storage/WG6LL95H/S1364032114000872.html:text/html}, +@misc{nationalrenewableenergylaboratory2023AnnualTechnology2023, + title = {2023 {{Annual Technology Baseline}} ({{ATB}})}, + author = {{National Renewable Energy Laboratory}}, + year = {2023}, + urldate = {2024-02-26}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} } -@article{vagero_can_2023, - title = {Can we optimise for justice? Reviewing the inclusion of energy justice in energy system optimisation models}, - volume = {95}, - issn = {2214-6296}, - url = {https://www.sciencedirect.com/science/article/pii/S2214629622004169}, - doi = {10.1016/j.erss.2022.102913}, - shorttitle = {Can we optimise for justice?}, - abstract = {Energy systems optimisation models are used for analysing energy systems and questions of e.g. greenhouse gas mitigation aligned with the Paris Agreement. However, the techno-economic nature of energy system models has opened for discussions about how well societal aspects are represented. Studying justice implications in energy systems modelling is an opportunity to inform policy-makers and the broader society how long-term changes to energy systems may affect different social groups and how to minimise injustices. In this paper, we review how, and to what extent, aspects of social justice have been included in energy systems optimisation modelling as well as areas for future research. In addition to reviewing published journal articles and reports, we organise a workshop with energy system modellers and social scientists, providing qualitative information on past approaches and potential future venues. We identify 3 key findings: (i) Exploring alternative system configurations to cost-optimality is receiving increasing attention and typically done through a ‘modelling to generate alternatives’ approach, (ii) among formalised definitions of distributional justice, equality (equal distribution) is the most common equity principle. There is at the same time little reflection on the choice and impact of equity principles, potentially contributing to an overly narrow understanding of justice. (iii) Among the workshop participants, participatory approaches which involves stakeholders and lay people are considered a potential future area of research, especially for making modelling results and processes more accessible and impactful to the wider public.}, - pages = {102913}, - journaltitle = {Energy Research \& Social Science}, - shortjournal = {Energy Research \& Social Science}, - author = {Vågerö, Oskar and Zeyringer, Marianne}, - urldate = {2024-02-19}, - date = {2023-01-01}, - keywords = {Energy justice, Optimisation, Energy systems modelling, Social justice}, - file = {Full Text:/Users/samdotson/Zotero/storage/EB5R8QJC/Vågerö and Zeyringer - 2023 - Can we optimise for justice Reviewing the inclusi.pdf:application/pdf}, +@article{pfenningerEnergySystemsModeling2014, + title = {Energy Systems Modeling for Twenty-First Century Energy Challenges}, + author = {Pfenninger, Stefan and Hawkes, Adam and Keirstead, James}, + year = {2014}, + month = may, + journal = {Renewable and Sustainable Energy Reviews}, + volume = {33}, + pages = {74--86}, + issn = {1364-0321}, + doi = {10.1016/j.rser.2014.02.003}, + urldate = {2023-01-16}, + abstract = {Energy systems models are important methods used to generate a range of insight and analysis on the supply and demand of energy. Developed over the second half of the twentieth century, they are now seeing increased relevance in the face of stringent climate policy, energy security and economic development concerns, and increasing challenges due to the changing nature of the twenty-first century energy system. In this paper, we look particularly at models relevant to national and international energy policy, grouping them into four categories: energy systems optimization models, energy systems simulation models, power systems and electricity market models, and qualitative and mixed-methods scenarios. We examine four challenges they face and the efforts being taken to address them: (1) resolving time and space, (2) balancing uncertainty and transparency, (3) addressing the growing complexity of the energy system, and (4) integrating human behavior and social risks and opportunities. In discussing these challenges, we present possible avenues for future research and make recommendations to ensure the continued relevance for energy systems models as important sources of information for policy-making.}, + langid = {english}, + keywords = {Complexity,Energy policy,Energy systems modeling,High-resolution modeling,Uncertainty}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/WG6LL95H/S1364032114000872.html} } -@article{mckenna_combining_2018, - title = {Combining local preferences with multi-criteria decision analysis and linear optimization to develop feasible energy concepts in small communities}, - volume = {268}, - issn = {0377-2217}, - url = {https://www.sciencedirect.com/science/article/pii/S0377221718300729}, - doi = {10.1016/j.ejor.2018.01.036}, - series = {Community Operational Research: Innovations, internationalization and agenda-setting applications}, - abstract = {Decentralised community energy resources are often abundant in smaller, more rural communities. Such communities often lack the capacity to develop extensive energy concepts and thus to exploit these resources in a consistent way. This paper presents an integrated participatory approach to developing feasible energy concepts for small communities. The novelty lies in the combination of methods, the consideration of uncertainties, and the application to an exemplary municipality in Germany. Stakeholder workshops are combined with energy modelling and multi-criteria decision analysis ({MCDA}), and a high transferability is ensured with mainly public data. The workshop discussion revealed three values: economic sustainability, environmental sustainability, and local energy autonomy. A total of eight alternatives for the 2030 energy system are identified to achieve these values. We find that an alternative that seeks only maximization of economic sustainability should be rejected based on elicited preferences. Instead, several alternatives seeking a maximization of environmental sustainability with constraints on economic sustainability (i.e. total cost) and local energy autonomy consistently achieve the highest overall performance scores. A maximization of economic sustainability or local energy autonomy alone results in the lowest overall performance scores and should therefore not be pursued by the community. The intermediate alternatives demonstrate that an equivalent performance gain with respect to autonomy comes at higher costs than the same gain with respect to environmental sustainability. Similarities between the best performing alternatives in terms of technologies that can be installed by 2030 show that our methodology can generate concrete and robust recommendations on building-level measures for energy system design.}, - pages = {1092--1110}, - number = {3}, - journaltitle = {European Journal of Operational Research}, - shortjournal = {European Journal of Operational Research}, - author = {{McKenna}, R. and Bertsch, V. and Mainzer, K. and Fichtner, W.}, - urldate = {2024-02-25}, - date = {2018-08-01}, - keywords = {Community operational research, {MCDA}, {MILP}, Sustainable energy, Uncertainties}, - file = {McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf:/Users/samdotson/Zotero/storage/N4X7U5L5/McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf:application/pdf;ScienceDirect Snapshot:/Users/samdotson/Zotero/storage/DFTWLY3S/S0377221718300729.html:text/html}, +@misc{pfenningerOpenmodOpenEnergy, + title = {Openmod - {{Open Energy Modelling Initiative}}}, + author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, + journal = {openmod-initiative}, + urldate = {2022-12-13}, + abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes -- even to fellow researchers. ``Open'' refers to model source code that can be studied, changed and improved as well as freely available energy system data. We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, + howpublished = {https://www.openmod-initiative.org/}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html} } -@misc{national_renewable_energy_laboratory_2023_2023, - title = {2023 Annual Technology Baseline ({ATB})}, - url = {https://atb.nrel.gov/electricity/2023/data}, - author = {{National Renewable Energy Laboratory}}, - urldate = {2024-02-26}, - date = {2023}, - file = {Data | Electricity | 2023 | ATB | NREL:/Users/samdotson/Zotero/storage/URRFWYVN/data.html:text/html}, +@article{vageroCanWeOptimise2023, + title = {Can We Optimise for Justice? {{Reviewing}} the Inclusion of Energy Justice in Energy System Optimisation Models}, + shorttitle = {Can We Optimise for Justice?}, + author = {V{\aa}ger{\"o}, Oskar and Zeyringer, Marianne}, + year = {2023}, + month = jan, + journal = {Energy Research \& Social Science}, + volume = {95}, + pages = {102913}, + issn = {2214-6296}, + doi = {10.1016/j.erss.2022.102913}, + urldate = {2024-02-19}, + abstract = {Energy systems optimisation models are used for analysing energy systems and questions of e.g. greenhouse gas mitigation aligned with the Paris Agreement. However, the techno-economic nature of energy system models has opened for discussions about how well societal aspects are represented. Studying justice implications in energy systems modelling is an opportunity to inform policy-makers and the broader society how long-term changes to energy systems may affect different social groups and how to minimise injustices. In this paper, we review how, and to what extent, aspects of social justice have been included in energy systems optimisation modelling as well as areas for future research. In addition to reviewing published journal articles and reports, we organise a workshop with energy system modellers and social scientists, providing qualitative information on past approaches and potential future venues. We identify 3 key findings: (i) Exploring alternative system configurations to cost-optimality is receiving increasing attention and typically done through a `modelling to generate alternatives' approach, (ii) among formalised definitions of distributional justice, equality (equal distribution) is the most common equity principle. There is at the same time little reflection on the choice and impact of equity principles, potentially contributing to an overly narrow understanding of justice. (iii) Among the workshop participants, participatory approaches which involves stakeholders and lay people are considered a potential future area of research, especially for making modelling results and processes more accessible and impactful to the wider public.}, + keywords = {Energy justice,Energy systems modelling,Optimisation,Social justice}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/EB5R8QJC/Vågerö and Zeyringer - 2023 - Can we optimise for justice Reviewing the inclusi.pdf} } diff --git a/paper.md b/paper.md index 7b45512..6a5e2df 100644 --- a/paper.md +++ b/paper.md @@ -1,5 +1,5 @@ --- -title: 'Osier: A Python package for multi-objective energy system optimization' +title: '`Osier`: A Python package for multi-objective energy system optimization' tags: - Python - energy systems @@ -8,7 +8,7 @@ tags: authors: - name: Samuel G. Dotson - orcid: 0000-0002-8662-0336 - - affiliation: 1 + - affiliation: 1,2 - corresponding: true affiliations: - name: Felix T. Adler Fellow, Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA @@ -24,13 +24,13 @@ Transitioning to a clean energy economy will require expanded energy infrastruct `osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges with procedural and recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models -(ESOMs) available `@pfenninger_openmod_nodate`. ESOMs can be used for a variety +(ESOMs) available [`@pfenningerOpenmodOpenEnergy`]. ESOMs can be used for a variety of tasks but are most frequently used for prescriptive analyses -meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models `@pfenninger_energy_2014`. +meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models [`@pfenninger_energy_2014`]. # Design and Implementation In order to run `osier`, users are only required to supply an energy demand time -series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset `@national_renewable_energy_laboratory_2023_2023`. +series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset [`@national_renewable_energy_laboratory_2023_2023`]. A set of `osier.Technology` objects, along with user-supplied demand data, can be tested independently with the `osier.DispatchModel`. The `osier.DispatchModel` is a linear programming model implemented with the `pyomo` library. For investment decisions and tradeoff analysis, users can pass their portfolio of `osier.Technology` objects, energy demand, and their desired objectives to the `osier.CapacityExpansion` model, the highest level model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo`. From 2194297f1a907ce9eef75f436b7c9ae0b1d13bd6 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 14:14:20 -0600 Subject: [PATCH 07/34] updates bib again --- paper.bib | 66 ++++++++++++++++++++++++++++++++++++++++++------------- paper.md | 15 +++++++------ 2 files changed, 59 insertions(+), 22 deletions(-) diff --git a/paper.bib b/paper.bib index 17f7469..4a21dd2 100644 --- a/paper.bib +++ b/paper.bib @@ -1,4 +1,40 @@ -@article{liebmanSimpleMindedObservationsRole1976, +@article{carley:2020, + title = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion: A Systematic Literature Review of Three Decades of Empirical Survey Literature}, + shorttitle = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion}, + author = {Carley, Sanya and Konisky, David M and Atiq, Zoya and Land, Nick}, + year = {2020}, + month = sep, + journal = {Environmental Research Letters}, + volume = {15}, + number = {9}, + pages = {093007}, + issn = {1748-9326}, + doi = {10.1088/1748-9326/ab875d}, + urldate = {2022-08-11}, + abstract = {Abstract Public support is a key determinant of whether any energy project is developed in democratic countries. In recent decades, scholars have extensively examined levels of support and opposition to energy infrastructure, often with a focus on so-called Not-in-My-Backyard (NIMBY) sentiments. As the need for energy infrastructure grows, so does the need to extract insights and lessons from this literature. In this systematic literature review, we evaluate decades of research to identify important trends in topical focus, research findings, and research design. We find a disproportionate focus on wind energy, followed by solar, fossil fuels, and transmission, with most studies conducted in the United States or United Kingdom, and that individuals are more often supportive of energy projects than they are opposed. Scholars have examined the role of many factors in understanding attitudes toward energy infrastructure, and often find knowledge, trust, and positive perceptions about the benefits of projects to be positively correlated with support for projects, although with variation across energy types. NIMBY attitudes differ widely in approach and are often plagued by problematic research designs that limit inferences and the generalizability of findings. We provide a detailed discussion of these limitations and suggest areas in which the literature can expand.}, + langid = {english}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/BFTMQWYL/Carley et al. - 2020 - Energy infrastructure, NIMBYism, and public opinio.pdf} +} + +@article{johnson:2021, + title = {The {{Dakota Access Pipeline}} in {{Illinois}}: {{Participation}}, Power, and Institutional Design in {{United States}} Critical Energy Infrastructure Governance}, + shorttitle = {The {{Dakota Access Pipeline}} in {{Illinois}}}, + author = {Johnson, McKenzie F. and Sveinsd{\'o}ttir, Anna G. and Guske, Emily L.}, + year = {2021}, + month = mar, + journal = {Energy Research \& Social Science}, + volume = {73}, + pages = {101908}, + issn = {2214-6296}, + doi = {10.1016/j.erss.2021.101908}, + urldate = {2022-11-17}, + abstract = {The role of participation in US energy governance sits at the heart of ongoing contestation around the crude oil-bearing Dakota Access Pipeline (DAPL). Theconstruction of the 1,172-mile pipeline raised questions about the public's ability to influence energy infrastructure development considered by the US government as ``critical'' to national security. While numerous scholars and courts have begun to question whether thefederalregulatory process that permitted DAPL sufficiently allowed for participation, less work has examinedstate-levelprocesses. In this article, we ask whether actors who participated in the regulatory process at the state-level had sufficient opportunity to influence the siting, permitting, and construction of DAPL. We focus on Illinois, analyzing the 2015 proceeding by the Illinois Commerce Commission (ICC) to permit DAPL. Drawing on fieldwork between October 2018 and May 2020, we argue the ICC regulatory process minimized the space available for pipeline opposition in three ways. First, the ICC is limited, in an institutional design sense, from integrating broad public opinion into its decision-making process. Second, as a function of its design, pipeline opponents required significant knowledge and resources to mount claims before the ICC. Finally, we contend that politically powerful interest groups, especially labor unions and industry stakeholders, shape pipeline politics in Illinois in ways that further limit avenues for formal opposition. Our work raises important questions about the impact of public participation in contemporary energy and environmental governance, as well as how democratic contestation surrounding oil pipelines can openspacefor resistance and transformativesocial change.}, + langid = {english}, + keywords = {Crude-oil pipeline,Dakota Access Pipeline,Energy infrastructure governance,Illinois,Participation}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/7VAUJT4S/Johnson et al. - 2021 - The Dakota Access Pipeline in Illinois Participat.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/INTYX64C/S2214629621000013.html} +} + +@article{liebman:1976, title = {Some {{Simple-Minded Observations}} on the {{Role}} of {{Optimization}} in {{Public Systems Decision-Making}}}, author = {Liebman, Jon C.}, year = {1976}, @@ -14,7 +50,7 @@ @article{liebmanSimpleMindedObservationsRole1976 abstract = {Because public systems problems are frequently ill-defined and have fuzzy constraints and vague multiple objectives, their solution by means of formal optimization models is not widely accepted. This paper will explore the modes (both useful and otherwise) in which optimization has been applied to such problems. The need for optimization models which somehow ``fit'' the decision-makers' methods and backgrounds will be discussed. Several other aspects of public systems optimization will be considered, in a somewhat random fashion. This paper will raise more questions than answers.} } -@article{mckennaCombiningLocalPreferences2018, +@article{mckenna:2018, title = {Combining Local Preferences with Multi-Criteria Decision Analysis and Linear Optimization to Develop Feasible Energy Concepts in Small Communities}, author = {McKenna, R. and Bertsch, V. and Mainzer, K. and Fichtner, W.}, year = {2018}, @@ -32,7 +68,7 @@ @article{mckennaCombiningLocalPreferences2018 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/N4X7U5L5/McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/DFTWLY3S/S0377221718300729.html} } -@misc{nationalrenewableenergylaboratory2023AnnualTechnology2023, +@misc{nationalrenewableenergylaboratory:2023, title = {2023 {{Annual Technology Baseline}} ({{ATB}})}, author = {{National Renewable Energy Laboratory}}, year = {2023}, @@ -40,7 +76,17 @@ @misc{nationalrenewableenergylaboratory2023AnnualTechnology2023 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} } -@article{pfenningerEnergySystemsModeling2014, +@misc{pfenninger:, + title = {Openmod - {{Open Energy Modelling Initiative}}}, + author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, + journal = {openmod-initiative}, + urldate = {2022-12-13}, + abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes -- even to fellow researchers. ``Open'' refers to model source code that can be studied, changed and improved as well as freely available energy system data. We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, + howpublished = {https://www.openmod-initiative.org/}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html} +} + +@article{pfenninger:2014, title = {Energy Systems Modeling for Twenty-First Century Energy Challenges}, author = {Pfenninger, Stefan and Hawkes, Adam and Keirstead, James}, year = {2014}, @@ -57,17 +103,7 @@ @article{pfenningerEnergySystemsModeling2014 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/WG6LL95H/S1364032114000872.html} } -@misc{pfenningerOpenmodOpenEnergy, - title = {Openmod - {{Open Energy Modelling Initiative}}}, - author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, - journal = {openmod-initiative}, - urldate = {2022-12-13}, - abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes -- even to fellow researchers. ``Open'' refers to model source code that can be studied, changed and improved as well as freely available energy system data. We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, - howpublished = {https://www.openmod-initiative.org/}, - file = {/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html} -} - -@article{vageroCanWeOptimise2023, +@article{vagero:2023, title = {Can We Optimise for Justice? {{Reviewing}} the Inclusion of Energy Justice in Energy System Optimisation Models}, shorttitle = {Can We Optimise for Justice?}, author = {V{\aa}ger{\"o}, Oskar and Zeyringer, Marianne}, diff --git a/paper.md b/paper.md index 6a5e2df..5892883 100644 --- a/paper.md +++ b/paper.md @@ -8,29 +8,28 @@ tags: authors: - name: Samuel G. Dotson - orcid: 0000-0002-8662-0336 - - affiliation: 1,2 + - affiliation: 1 - corresponding: true affiliations: - name: Felix T. Adler Fellow, Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA index: 1 - - name: Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA - index: 2 date: 20 February 2024 bibliography: paper.bib --- # Summary -Transitioning to a clean energy economy will require expanded energy infrastructure a +Transitioning to a clean energy economy will require expanded energy infrastructure and an equitable, or just, transition will requires the recognition of the unique perspectives of the people and communities directly affected by this transition. `osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges with procedural and recognition justice. + # Statement of Need There are myriad open- and closed-source energy system optimization models -(ESOMs) available [`@pfenningerOpenmodOpenEnergy`]. ESOMs can be used for a variety +(ESOMs) available [`@pfenninger:`]. ESOMs can be used for a variety of tasks but are most frequently used for prescriptive analyses -meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models [`@pfenninger_energy_2014`]. +meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models [`@pfenninger:2014`]. # Design and Implementation In order to run `osier`, users are only required to supply an energy demand time -series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset [`@national_renewable_energy_laboratory_2023_2023`]. +series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset [`@nationalrenewableenergylaboratory:2023`]. A set of `osier.Technology` objects, along with user-supplied demand data, can be tested independently with the `osier.DispatchModel`. The `osier.DispatchModel` is a linear programming model implemented with the `pyomo` library. For investment decisions and tradeoff analysis, users can pass their portfolio of `osier.Technology` objects, energy demand, and their desired objectives to the `osier.CapacityExpansion` model, the highest level model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo`. @@ -41,6 +40,8 @@ In addition to being the first and only open-source multi-objective energy model 2. The second argument must be the results from an `osier.DispatchModel`. But this may be a simple placeholder with a default value of `None` as shown below. 3. The function must return a numerical value. +#### Example Code + ```py nuclear.readiness = 9 fusion.readiness = 3 From 7d06776c3d5a6a75d772475e2ec08a6642bf2ef2 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 14:26:56 -0600 Subject: [PATCH 08/34] fixes author metadata --- paper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper.md b/paper.md index 5892883..ad5dedb 100644 --- a/paper.md +++ b/paper.md @@ -7,9 +7,9 @@ tags: - multi-objective optimization authors: - name: Samuel G. Dotson - - orcid: 0000-0002-8662-0336 - - affiliation: 1 - - corresponding: true + orcid: 0000-0002-8662-0336 + affiliation: 1 + corresponding: true affiliations: - name: Felix T. Adler Fellow, Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA index: 1 From 61511864aeab6369ca14c622fa3d7d35536cd88a Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 14:39:07 -0600 Subject: [PATCH 09/34] tries fixing citations --- paper.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 12 deletions(-) diff --git a/paper.md b/paper.md index ad5dedb..99e221f 100644 --- a/paper.md +++ b/paper.md @@ -11,33 +11,72 @@ authors: affiliation: 1 corresponding: true affiliations: - - name: Felix T. Adler Fellow, Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA + - name: Felix T. Adler Fellow, Department of Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA index: 1 date: 20 February 2024 bibliography: paper.bib --- # Summary -Transitioning to a clean energy economy will require expanded energy infrastructure and an equitable, or just, transition will requires the recognition of the unique perspectives of the people and communities directly affected by this transition. -`osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges with procedural and recognition justice. +Transitioning to a clean energy economy will require expanded energy +infrastructure and an equitable, or just, transition further requires the +recognition of the people and communities directly affected by this transition. +However, public preferences may be ignored during decision-making processes +related to nearby energy infrastructure due to a lack of technical rigor and +expertise [@johnson:2021]. `osier` was designed to help localized communities +articulate their energy preferences in a technical manner without requiring +extensive technical expertise. In order to facilitate more robust tradeoff +analysis, `osier` generates a set of technology portfolios, called a Pareto +front, with multi-objective optimization using evolutionary algorithms. `osier` +also implements a novel algorithm that extends the common +modelling-to-generate-alternatives (MGA) algorithm into many dimensions, +allowing users to investigate the near-optimal for appealing alternative +solutions. In this way, `osier` may address challenges with procedural and +recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models -(ESOMs) available [`@pfenninger:`]. ESOMs can be used for a variety -of tasks but are most frequently used for prescriptive analyses -meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share two important characteristics: Single objective optimization and an economic objective (either cost minimization or social welfare maximization). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models [`@pfenninger:2014`]. +(ESOMs) available [@pfenninger:]. ESOMs can be used for a variety of tasks but +are most frequently used for prescriptive analyses meant to guide +decision-makers in planning processes. However, despite the many available +models, all of these tools share two important characteristics: Single objective +optimization and an economic objective (either cost minimization or social +welfare maximization). Simultaneously, there is growing awareness of energy +justice and calls for its inclusion in energy models [@pfenninger:2014]. # Design and Implementation In order to run `osier`, users are only required to supply an energy demand time -series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset [`@nationalrenewableenergylaboratory:2023`]. - -A set of `osier.Technology` objects, along with user-supplied demand data, can be tested independently with the `osier.DispatchModel`. The `osier.DispatchModel` is a linear programming model implemented with the `pyomo` library. For investment decisions and tradeoff analysis, users can pass their portfolio of `osier.Technology` objects, energy demand, and their desired objectives to the `osier.CapacityExpansion` model, the highest level model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo`. +series. Users can optionally provide weather data to incorporate solar or wind +energy. The fundamental object in `osier` is an `osier.Technology` object, which +contain all of the necessary cost and performance data for different technology +classes. `osier` comes pre-loaded with a variety of technologies described in +the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline +(ATB) dataset [@nationalrenewableenergylaboratory:2023]. + +A set of `osier.Technology` objects, along with user-supplied demand data, can +be tested independently with the `osier.DispatchModel`. The +`osier.DispatchModel` is a linear programming model implemented with the `pyomo` +library. For investment decisions and tradeoff analysis, users can pass their +portfolio of `osier.Technology` objects, energy demand, and their desired +objectives to the `osier.CapacityExpansion` model, the highest level model in +`osier`. The `osier.CapacityExpansion` model is implemented with the +multi-objective optimization framework, `pymoo`. ## Key Features -In addition to being the first and only open-source multi-objective energy modelling framework, `osier` has a few key features that further distinguishes it from other modelling frameworks. First, since `osier.Technology` objects are Python objects, users can modify values and assumptions, or assign new attributes to the tested technologies. Second, contrary to conventional energy system models, `osier` has no required objectives. While users may choose from a variety of pre-defined objectives, they may also declare their own objectives based on any quantifiable metric. The example code below illustrates the pattern that `osier` expects. The requirements for a bespoke objective are: +In addition to being the first and only open-source multi-objective energy +modelling framework, `osier` has a few key features that further distinguishes +it from other modelling frameworks. First, since `osier.Technology` objects are +Python objects, users can modify values and assumptions, or assign new +attributes to the tested technologies. Second, contrary to conventional energy +system models, `osier` has no required objectives. While users may choose from a +variety of pre-defined objectives, they may also declare their own objectives +based on any quantifiable metric. The example code below illustrates the pattern +that `osier` expects. The requirements for a bespoke objective are: 1. The first argument must be a list of `osier.Technology` objects. -2. The second argument must be the results from an `osier.DispatchModel`. But this may be a simple placeholder with a default value of `None` as shown below. +2. The second argument must be the results from an `osier.DispatchModel`. But + this may be a simple placeholder with a default value of `None` as shown + below. 3. The function must return a numerical value. #### Example Code @@ -63,7 +102,11 @@ def osier_objective(technology_list, solved_dispatch_model=None): return objective_value / total_capacity ``` -These two features acknowledge that a modeler cannot know *a priori* all possible objectives or parameters of interest. Allowing users to define their own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and expands the potential for incorporating localized preferences. +These two features acknowledge that a modeler cannot know *a priori* all +possible objectives or parameters of interest. Allowing users to define their +own objectives and modify technology objects (or simply build their own by +inheriting from the `osier.Technology` class) accounts for this limitation and +expands the potential for incorporating localized preferences. # References From d0746454f07164d7e7a1add739c9427c7ab91a95 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 15:34:11 -0600 Subject: [PATCH 10/34] moves paper docs to folder --- .github/workflows/draft-pdf.yml | 2 +- paper/osier_flow.png | Bin 0 -> 48578 bytes paper.bib => paper/paper.bib | 78 ++++++++++++++++++++++++++++---- paper.md => paper/paper.md | 16 ++++--- 4 files changed, 79 insertions(+), 17 deletions(-) create mode 100644 paper/osier_flow.png rename paper.bib => paper/paper.bib (68%) rename paper.md => paper/paper.md (82%) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 08a5ede..3248ee6 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -12,7 +12,7 @@ jobs: with: journal: joss # This should be the path to the paper within your repo. - paper-path: paper.md + paper-path: paper/paper.md - name: Upload uses: actions/upload-artifact@v1 with: diff --git a/paper/osier_flow.png b/paper/osier_flow.png new file mode 100644 index 0000000000000000000000000000000000000000..d66af289c82da04b0323fa438723d0f2542cf35c GIT binary patch literal 48578 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 z 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 HMgji=W0U5J literal 0 HcmV?d00001 diff --git a/paper.bib b/paper/paper.bib similarity index 68% rename from paper.bib rename to paper/paper.bib index 4a21dd2..c1aa809 100644 --- a/paper.bib +++ b/paper/paper.bib @@ -1,3 +1,21 @@ +@article{bertsch:2016, + title = {A Participatory Multi-Criteria Approach for Power Generation and Transmission Planning}, + author = {Bertsch, Valentin and Fichtner, Wolf}, + year = {2016}, + month = oct, + journal = {Annals of Operations Research}, + volume = {245}, + number = {1}, + pages = {177--207}, + issn = {1572-9338}, + doi = {10.1007/s10479-015-1791-y}, + urldate = {2024-02-25}, + abstract = {The energy sector continues to undergo substantial structural changes. Currently, the expansion of renewable energy sources and the decentralisation of energy supply lead to new players entering the market who pursue different objectives and have different preferences. Thus, multiple and usually conflicting targets need to be considered. Moreover, recent public reactions towards infrastructure projects highlight the importance of considering public acceptance as a key dimension of decision making in the energy sector. As a result, decision processes grow more complex at all levels from political to strategic, tactical and operational decisions in companies. We therefore present an approach combining power systems analysis considering grid constraints and multi-criteria decision analysis. The approach focusses on multi-dimensional sensitivity analyses allowing for simultaneous variations of the different preference parameters determined within the decision analysis aimed at facilitating preference elicitation and consensus building in group decisions. The focus of the paper is the demonstration of the presented approach for a power generation and transmission planning case study in the context of the energy transition in Germany.}, + langid = {english}, + keywords = {Multi-criteria decision analysis (MCDA),Participatory decision processes,Power systems analysis (PSA),Transformation of energy systems}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/UMBDFUR8/Bertsch and Fichtner - 2016 - A participatory multi-criteria approach for power .pdf} +} + @article{carley:2020, title = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion: A Systematic Literature Review of Three Decades of Empirical Survey Literature}, shorttitle = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion}, @@ -76,16 +94,6 @@ @misc{nationalrenewableenergylaboratory:2023 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} } -@misc{pfenninger:, - title = {Openmod - {{Open Energy Modelling Initiative}}}, - author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, - journal = {openmod-initiative}, - urldate = {2022-12-13}, - abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes -- even to fellow researchers. ``Open'' refers to model source code that can be studied, changed and improved as well as freely available energy system data. We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, - howpublished = {https://www.openmod-initiative.org/}, - file = {/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html} -} - @article{pfenninger:2014, title = {Energy Systems Modeling for Twenty-First Century Energy Challenges}, author = {Pfenninger, Stefan and Hawkes, Adam and Keirstead, James}, @@ -103,6 +111,35 @@ @article{pfenninger:2014 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/ZB9UXEB5/Pfenninger et al. - 2014 - Energy systems modeling for twenty-first century e.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/WG6LL95H/S1364032114000872.html} } +@misc{pfenninger:2022, + title = {Openmod - {{Open Energy Modelling Initiative}}}, + author = {Pfenninger, Stefan and Schlect, Ingmar and Trondle, Tim and Brown, Tom}, + year = {2022}, + month = dec, + journal = {openmod-initiative}, + urldate = {2022-12-13}, + abstract = {The Open Energy Modelling (openmod) Initiative promotes open energy modelling across the world. Energy models are widely used for policy advice and research. They serve to help answer questions on energy policy, decarbonization, and transitions towards renewable energy sources. Currently, most energy models are black boxes -- even to fellow researchers. ``Open'' refers to model source code that can be studied, changed and improved as well as freely available energy system data. We believe that more openness in energy modelling increases transparency and credibility, reduces wasteful double-work and improves overall quality. This allows the community to advance the research frontier and gain the highest benefit from energy modelling for society. We, energy modelers from various institutions, want to promote the idea and practice of open energy modelling among fellow modelers, research institutions, funding bodies, and recipients of our work.}, + howpublished = {https://www.openmod-initiative.org/}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/8FWR7W4F/www.openmod-initiative.org.html} +} + +@article{prina:2020, + title = {Multi-Objective Investment Optimization for Energy System Models in High Temporal and Spatial Resolution}, + author = {Prina, Matteo Giacomo and Casalicchio, Valeria and Kaldemeyer, Cord and Manzolini, Giampaolo and Moser, David and Wanitschke, Alexander and Sparber, Wolfram}, + year = {2020}, + month = apr, + journal = {Applied Energy}, + volume = {264}, + pages = {114728}, + issn = {03062619}, + doi = {10.1016/j.apenergy.2020.114728}, + urldate = {2022-07-14}, + abstract = {Energy system modelling supports decision-makers in the development of short and long-term energy strategies. In the field of bottom-up short-term energy system models, high resolution in time and space, the implementation of sector coupling and the adoption of a multi-objective investment optimization have never been achieved simultaneously because of the high computational effort. Within this paper, such a bottom-up shortterm model which simultaneously implements (i) hourly temporal resolution, (ii) multi-node approach thus high spatial resolution, (iii) integrates the electric, thermal and transport sectors and (iv) implements a multi-objective investment optimization method is proposed. The developed method is applied to the Italian energy system at 2050 to test and show its main features. The model allows the evaluation of the hourly curtailments for each node. The optimization highlights that the cheapest solutions work towards high curtailments and low investments in flexibility options. In order to further reduce the CO2 emissions the investments in flexibility options like electric storage batteries and reinforcement and enlargement of the transmission grid become relevant.}, + langid = {english}, + keywords = {Energy scenarios,Evolutionary algorithms,Linear programming,Multi-objective optimization,Oemof,Pareto,Photovoltaics,Wind}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/NUDYXC6P/Prina et al. - 2020 - Multi-objective investment optimization for energy.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/ERFKECIJ/S0306261920302403.html} +} + @article{vagero:2023, title = {Can We Optimise for Justice? {{Reviewing}} the Inclusion of Energy Justice in Energy System Optimisation Models}, shorttitle = {Can We Optimise for Justice?}, @@ -119,3 +156,24 @@ @article{vagero:2023 keywords = {Energy justice,Energy systems modelling,Optimisation,Social justice}, file = {/home/sam/snap/zotero-snap/common/Zotero/storage/EB5R8QJC/Vågerö and Zeyringer - 2023 - Can we optimise for justice Reviewing the inclusi.pdf} } + +@article{zelt:2019, + title = {Long-{{Term Electricity Scenarios}} for the {{MENA Region}}: {{Assessing}} the {{Preferences}} of {{Local Stakeholders Using Multi-Criteria Analyses}}}, + shorttitle = {Long-{{Term Electricity Scenarios}} for the {{MENA Region}}}, + author = {Zelt, Ole and Kr{\"u}ger, Christine and Blohm, Marina and Bohm, S{\"o}nke and Far, Shahrazad}, + year = {2019}, + month = jan, + journal = {Energies}, + volume = {12}, + number = {16}, + pages = {3046}, + publisher = {Multidisciplinary Digital Publishing Institute}, + issn = {1996-1073}, + doi = {10.3390/en12163046}, + urldate = {2024-02-25}, + abstract = {In recent years, most countries in the Middle East and North Africa (MENA), including Jordan, Morocco and Tunisia, have rolled out national policies with the goal of decarbonising their economies. Energy policy goals in these countries have been characterised by expanding the deployment of renewable energy technologies in the electricity mix in the medium term (i.e., until 2030). This tacitly signals a transformation of socio-technical systems by 2030 and beyond. Nevertheless, how these policy objectives actually translate into future scenarios that can also take into account a long-term perspective up to 2050 and correspond to local preferences remains largely understudied. This paper aims to fill this gap by identifying the most widely preferred long-term electricity scenarios for Jordan, Morocco and Tunisia. During a series of two-day workshops (one in each country), the research team, along with local stakeholders, adopted a participatory approach to develop multiple 2050 electricity scenarios, which enabled electricity pathways to be modelled using Renewable Energy Pathway Simulation System GIS (renpassG!S). We subsequently used the Analytical Hierarchy Process (AHP) within a Multi-Criteria Analysis (MCA) to capture local preferences. The empirical findings show that local stakeholders in all three countries preferred electricity scenarios mainly or even exclusively based on renewables. The findings demonstrate a clear preference for renewable energies and show that useful insights can be generated using participatory approaches to energy planning.}, + copyright = {http://creativecommons.org/licenses/by/3.0/}, + langid = {english}, + keywords = {electricity scenarios,energy modelling,Jordan,MCA,MENA,Morocco,multi-criteria,stakeholder participation,sustainability,Tunisia}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/S3QTXVF7/Zelt et al. - 2019 - Long-Term Electricity Scenarios for the MENA Regio.pdf} +} diff --git a/paper.md b/paper/paper.md similarity index 82% rename from paper.md rename to paper/paper.md index 99e221f..61b56b9 100644 --- a/paper.md +++ b/paper/paper.md @@ -23,7 +23,9 @@ infrastructure and an equitable, or just, transition further requires the recognition of the people and communities directly affected by this transition. However, public preferences may be ignored during decision-making processes related to nearby energy infrastructure due to a lack of technical rigor and -expertise [@johnson:2021]. `osier` was designed to help localized communities +expertise [@johnson:2021]. + +The challenge is more complicated by the fact that people have and express preferences over many dimensions simultaneously.`osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto @@ -36,13 +38,11 @@ recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models -(ESOMs) available [@pfenninger:]. ESOMs can be used for a variety of tasks but +(ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks but are most frequently used for prescriptive analyses meant to guide decision-makers in planning processes. However, despite the many available -models, all of these tools share two important characteristics: Single objective -optimization and an economic objective (either cost minimization or social -welfare maximization). Simultaneously, there is growing awareness of energy -justice and calls for its inclusion in energy models [@pfenninger:2014]. +models, all of these tools share a fundamental characteristic: Optimization over a single economic (e.g., total cost or social welfare) objective. Simultaneously, there is growing awareness of energy +justice and calls for its inclusion in energy models [@pfenninger:2014, @vagero:2023]. Some studies attempted to incorporate local preferences into energy system design through multi-criteria decision analysis (MCDA) and community focus groups [@bertsch:2016, @mckenna:2018, @zelt2019]. Although @prina:2020 created a bespoke multi-objective energy model, a flexible and extensible framework has not yet been developed. `osier` fills this gap. # Design and Implementation In order to run `osier`, users are only required to supply an energy demand time @@ -108,6 +108,10 @@ own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and expands the potential for incorporating localized preferences. +## Documentation + +`osier` offers robust documentation with detailed usage examples at [osier.readthedocs.io](https://osier.readthedocs.io). + # References From df360e3e344d257a7d720892f26037da8d673dde Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 15:35:25 -0600 Subject: [PATCH 11/34] fixes paper path in CI? --- .github/workflows/draft-pdf.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 3248ee6..51a805e 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -20,4 +20,4 @@ jobs: # This is the output path where Pandoc will write the compiled # PDF. Note, this should be the same directory as the input # paper.md - path: paper.pdf \ No newline at end of file + path: paper/paper.pdf \ No newline at end of file From 9f407857e16f742fbc8e14da524f4c026d44503f Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 15:40:49 -0600 Subject: [PATCH 12/34] adds image to osier --- paper/paper.md | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 61b56b9..d9fbe49 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -25,12 +25,13 @@ However, public preferences may be ignored during decision-making processes related to nearby energy infrastructure due to a lack of technical rigor and expertise [@johnson:2021]. -The challenge is more complicated by the fact that people have and express preferences over many dimensions simultaneously.`osier` was designed to help localized communities -articulate their energy preferences in a technical manner without requiring -extensive technical expertise. In order to facilitate more robust tradeoff -analysis, `osier` generates a set of technology portfolios, called a Pareto -front, with multi-objective optimization using evolutionary algorithms. `osier` -also implements a novel algorithm that extends the common +The challenge is more complicated by the fact that people have and express +preferences over many dimensions simultaneously.`osier` was designed to help +localized communities articulate their energy preferences in a technical manner +without requiring extensive technical expertise. In order to facilitate more +robust tradeoff analysis, `osier` generates a set of technology portfolios, +called a Pareto front, with multi-objective optimization using evolutionary +algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges with procedural and @@ -38,11 +39,18 @@ recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models -(ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks but -are most frequently used for prescriptive analyses meant to guide +(ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks +but are most frequently used for prescriptive analyses meant to guide decision-makers in planning processes. However, despite the many available -models, all of these tools share a fundamental characteristic: Optimization over a single economic (e.g., total cost or social welfare) objective. Simultaneously, there is growing awareness of energy -justice and calls for its inclusion in energy models [@pfenninger:2014, @vagero:2023]. Some studies attempted to incorporate local preferences into energy system design through multi-criteria decision analysis (MCDA) and community focus groups [@bertsch:2016, @mckenna:2018, @zelt2019]. Although @prina:2020 created a bespoke multi-objective energy model, a flexible and extensible framework has not yet been developed. `osier` fills this gap. +models, all of these tools share a fundamental characteristic: Optimization over +a single economic (e.g., total cost or social welfare) objective. +Simultaneously, there is growing awareness of energy justice and calls for its +inclusion in energy models [@pfenninger:2014, @vagero:2023]. Some studies +attempted to incorporate local preferences into energy system design through +multi-criteria decision analysis (MCDA) and community focus groups +[@bertsch:2016, @mckenna:2018, @zelt2019]. Although @prina:2020 created a +bespoke multi-objective energy model, a flexible and extensible framework has +not yet been developed. `osier` fills this gap. # Design and Implementation In order to run `osier`, users are only required to supply an energy demand time @@ -60,7 +68,11 @@ library. For investment decisions and tradeoff analysis, users can pass their portfolio of `osier.Technology` objects, energy demand, and their desired objectives to the `osier.CapacityExpansion` model, the highest level model in `osier`. The `osier.CapacityExpansion` model is implemented with the -multi-objective optimization framework, `pymoo`. +multi-objective optimization framework, `pymoo`. \autoref{fig:osier-flow} +overviews the flow of data through `osier`. + +![The flow of data into and within `osier` +\label{fig:osier-flow}](osier_flow.png) ## Key Features In addition to being the first and only open-source multi-objective energy @@ -110,7 +122,8 @@ expands the potential for incorporating localized preferences. ## Documentation -`osier` offers robust documentation with detailed usage examples at [osier.readthedocs.io](https://osier.readthedocs.io). +`osier` offers robust documentation with detailed usage examples at +[osier.readthedocs.io](https://osier.readthedocs.io). # References From 6ffe7d41ba255051cbd53d3c06166ce73c856dd5 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 15:51:16 -0600 Subject: [PATCH 13/34] removes example code --- paper/paper.md | 29 ++++------------------------- 1 file changed, 4 insertions(+), 25 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index d9fbe49..aae497e 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -26,7 +26,7 @@ related to nearby energy infrastructure due to a lack of technical rigor and expertise [@johnson:2021]. The challenge is more complicated by the fact that people have and express -preferences over many dimensions simultaneously.`osier` was designed to help +preferences over many dimensions simultaneously. `osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, @@ -43,7 +43,7 @@ There are myriad open- and closed-source energy system optimization models but are most frequently used for prescriptive analyses meant to guide decision-makers in planning processes. However, despite the many available models, all of these tools share a fundamental characteristic: Optimization over -a single economic (e.g., total cost or social welfare) objective. +a single economic objective (e.g., total cost or social welfare). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models [@pfenninger:2014, @vagero:2023]. Some studies attempted to incorporate local preferences into energy system design through @@ -91,35 +91,14 @@ that `osier` expects. The requirements for a bespoke objective are: below. 3. The function must return a numerical value. -#### Example Code - -```py -nuclear.readiness = 9 -fusion.readiness = 3 - -technology_list = [nuclear, fusion] - -def osier_objective(technology_list, solved_dispatch_model=None): - """ - Calculate the capacity-weighted technology readiness - score for this energy mix. - """ - - total_capacity = np.array([t.capacity - for t in technology_list]).sum() - - objective_value = np.array([t.readiness*t.capacity - for t in technology_list]).sum() - - return objective_value / total_capacity -``` - These two features acknowledge that a modeler cannot know *a priori* all possible objectives or parameters of interest. Allowing users to define their own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and expands the potential for incorporating localized preferences. +Lastly, in order to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal + ## Documentation `osier` offers robust documentation with detailed usage examples at From 89d3fb80781ab7565575d092218102deec3d69b6 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 17:32:14 -0600 Subject: [PATCH 14/34] first full draft --- paper/paper.bib | 33 ++++++++++++++++++++++++++++ paper/paper.md | 57 ++++++++++++------------------------------------- 2 files changed, 47 insertions(+), 43 deletions(-) diff --git a/paper/paper.bib b/paper/paper.bib index c1aa809..db7c5b3 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -16,6 +16,21 @@ @article{bertsch:2016 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/UMBDFUR8/Bertsch and Fichtner - 2016 - A participatory multi-criteria approach for power .pdf} } +@article{blank:2020, + title = {Pymoo: {{Multi-Objective Optimization}} in {{Python}}}, + shorttitle = {Pymoo}, + author = {Blank, Julian and Deb, Kalyanmoy}, + year = {2020}, + journal = {IEEE Access}, + volume = {8}, + pages = {89497--89509}, + issn = {2169-3536}, + doi = {10.1109/ACCESS.2020.2990567}, + abstract = {Python has become the programming language of choice for research and industry projects related to data science, machine learning, and deep learning. Since optimization is an inherent part of these research fields, more optimization related frameworks have arisen in the past few years. Only a few of them support optimization of multiple conflicting objectives at a time, but do not provide comprehensive tools for a complete multi-objective optimization task. To address this issue, we have developed pymoo, a multi-objective optimization framework in Python. We provide a guide to getting started with our framework by demonstrating the implementation of an exemplary constrained multi-objective optimization scenario. Moreover, we give a high-level overview of the architecture of pymoo to show its capabilities followed by an explanation of each module and its corresponding sub-modules. The implementations in our framework are customizable and algorithms can be modified/extended by supplying custom operators. Moreover, a variety of single, multi- and many-objective test problems are provided and gradients can be retrieved by automatic differentiation out of the box. Also, pymoo addresses practical needs, such as the parallelization of function evaluations, methods to visualize low and high-dimensional spaces, and tools for multi-criteria decision making. For more information about pymoo, readers are encouraged to visit: https://pymoo.org.}, + keywords = {Customization,Data visualization,Evolutionary computation,genetic algorithm,multi-objective optimization,Optimization,python,Python,Task analysis,Tools}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/MPT3PNKG/Blank and Deb - 2020 - Pymoo Multi-Objective Optimization in Python.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/54WMEV9R/9078759.html} +} + @article{carley:2020, title = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion: A Systematic Literature Review of Three Decades of Empirical Survey Literature}, shorttitle = {Energy Infrastructure, {{NIMBYism}}, and Public Opinion}, @@ -34,6 +49,24 @@ @article{carley:2020 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/BFTMQWYL/Carley et al. - 2020 - Energy infrastructure, NIMBYism, and public opinio.pdf} } +@article{hart:2011, + title = {Pyomo: Modeling and Solving Mathematical Programs in {{Python}}}, + shorttitle = {Pyomo}, + author = {Hart, William E. and Watson, Jean-Paul and Woodruff, David L.}, + year = {2011}, + month = sep, + journal = {Mathematical Programming Computation}, + volume = {3}, + number = {3}, + pages = {219--260}, + issn = {1867-2949, 1867-2957}, + doi = {10.1007/s12532-011-0026-8}, + urldate = {2022-08-11}, + abstract = {We describe Pyomo, an open source software package for modeling and solving mathematical programs in Python. Pyomo can be used to define abstract and concrete problems, create problem instances, and solve these instances with standard open-source and commercial solvers. Pyomo provides a capability that is commonly associated with algebraic modeling languages such as AMPL, AIMMS, and GAMS. In contrast, Pyomo's modeling objects are embedded within a full-featured highlevel programming language with a rich set of supporting libraries. Pyomo leverages the capabilities of the Coopr software library, which together with Pyomo is part of IBM's COIN-OR open-source initiative for operations research software. Coopr integrates Python packages for defining optimizers, modeling optimization applications, and managing computational experiments. Numerous examples illustrating advanced scripting applications are provided.}, + langid = {english}, + file = {/home/sam/snap/zotero-snap/common/Zotero/storage/ULZKWVDV/Hart et al. - 2011 - Pyomo modeling and solving mathematical programs .pdf} +} + @article{johnson:2021, title = {The {{Dakota Access Pipeline}} in {{Illinois}}: {{Participation}}, Power, and Institutional Design in {{United States}} Critical Energy Infrastructure Governance}, shorttitle = {The {{Dakota Access Pipeline}} in {{Illinois}}}, diff --git a/paper/paper.md b/paper/paper.md index aae497e..c569f3a 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -19,57 +19,27 @@ bibliography: paper.bib # Summary Transitioning to a clean energy economy will require expanded energy -infrastructure and an equitable, or just, transition further requires the -recognition of the people and communities directly affected by this transition. -However, public preferences may be ignored during decision-making processes -related to nearby energy infrastructure due to a lack of technical rigor and -expertise [@johnson:2021]. - -The challenge is more complicated by the fact that people have and express -preferences over many dimensions simultaneously. `osier` was designed to help -localized communities articulate their energy preferences in a technical manner -without requiring extensive technical expertise. In order to facilitate more -robust tradeoff analysis, `osier` generates a set of technology portfolios, -called a Pareto front, with multi-objective optimization using evolutionary -algorithms. `osier` also implements a novel algorithm that extends the common -modelling-to-generate-alternatives (MGA) algorithm into many dimensions, -allowing users to investigate the near-optimal for appealing alternative -solutions. In this way, `osier` may address challenges with procedural and -recognition justice. +infrastructure. An equitable, or just, transition further requires the +recognition of the people and communities directly affected by this transition. However, public preferences may be ignored during decision-making processes related energy infrastructure due to a lack of technical rigor or expertise [@johnson:2021]. This challenge is further complicated by the fact that people have and express preferences over many dimensions simultaneously. Multi-objective optimization offers a method to help decision makers and stakeholders understand the problem and analyze tradeoffs among solutions [@liebman:1976]. Although, to date, no multi-objective energy modelling frameworks exist. Open-source multi-objective energy system framework (`osier`) is a Python package for designing and optimizing energy systems across an arbitrary number of dimensions.`osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges related to procedural and recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models (ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks but are most frequently used for prescriptive analyses meant to guide decision-makers in planning processes. However, despite the many available -models, all of these tools share a fundamental characteristic: Optimization over -a single economic objective (e.g., total cost or social welfare). +models, all of these tools share a fundamental characteristic: Optimization over a single economic objective (e.g., total cost or social welfare). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models [@pfenninger:2014, @vagero:2023]. Some studies attempted to incorporate local preferences into energy system design through multi-criteria decision analysis (MCDA) and community focus groups -[@bertsch:2016, @mckenna:2018, @zelt2019]. Although @prina:2020 created a -bespoke multi-objective energy model, a flexible and extensible framework has -not yet been developed. `osier` fills this gap. +[@bertsch:2016, @mckenna:2018, @zelt2019]. But these studies rely on tools with pre-defined objectives which are difficult to modify. Without the ability to add objectives that reflect the concerns of a community, the priorities of that community will continue to be secondary to those of modellers and decision makers. A flexible and extensible multi-objective framework that fulfills this need has not yet been developed. `osier` closes this gap. # Design and Implementation -In order to run `osier`, users are only required to supply an energy demand time -series. Users can optionally provide weather data to incorporate solar or wind -energy. The fundamental object in `osier` is an `osier.Technology` object, which -contain all of the necessary cost and performance data for different technology -classes. `osier` comes pre-loaded with a variety of technologies described in -the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline -(ATB) dataset [@nationalrenewableenergylaboratory:2023]. +In order to run `osier`, users are only required to supply an energy demand time series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset[@nationalrenewableenergylaboratory:2023] but users are also able to define their own. A set of `osier.Technology` objects, along with user-supplied demand data, can be tested independently with the `osier.DispatchModel`. The -`osier.DispatchModel` is a linear programming model implemented with the `pyomo` -library. For investment decisions and tradeoff analysis, users can pass their -portfolio of `osier.Technology` objects, energy demand, and their desired -objectives to the `osier.CapacityExpansion` model, the highest level model in -`osier`. The `osier.CapacityExpansion` model is implemented with the -multi-objective optimization framework, `pymoo`. \autoref{fig:osier-flow} -overviews the flow of data through `osier`. +`osier.DispatchModel` is a linear programming model implemented with the `pyomo` library [@hart:2011]. For investment decisions and tradeoff analysis, users can pass their portfolio of `osier.Technology` objects, energy demand, and their desired objectives to the `osier.CapacityExpansion` model, the highest level model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo` [@blank:2020]. \autoref{fig:osier-flow} overviews the flow of data through `osier`. ![The flow of data into and within `osier` \label{fig:osier-flow}](osier_flow.png) @@ -77,19 +47,16 @@ overviews the flow of data through `osier`. ## Key Features In addition to being the first and only open-source multi-objective energy modelling framework, `osier` has a few key features that further distinguishes -it from other modelling frameworks. First, since `osier.Technology` objects are -Python objects, users can modify values and assumptions, or assign new +it from other modelling frameworks. First, since `osier.Technology` objects are Python objects, users can modify values and assumptions, or assign new attributes to the tested technologies. Second, contrary to conventional energy -system models, `osier` has no required objectives. While users may choose from a -variety of pre-defined objectives, they may also declare their own objectives -based on any quantifiable metric. The example code below illustrates the pattern -that `osier` expects. The requirements for a bespoke objective are: +system models, `osier` has no required objectives. While users may choose from a variety of pre-defined objectives, they may also declare their own objectives based on any quantifiable metric. The requirements for a bespoke objective are: 1. The first argument must be a list of `osier.Technology` objects. 2. The second argument must be the results from an `osier.DispatchModel`. But this may be a simple placeholder with a default value of `None` as shown below. 3. The function must return a numerical value. +4. The final (implicit) requirement, is that all `osier.Technology` objects possess the attribute being optimized. These two features acknowledge that a modeler cannot know *a priori* all possible objectives or parameters of interest. Allowing users to define their @@ -97,13 +64,17 @@ own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and expands the potential for incorporating localized preferences. -Lastly, in order to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal +Lastly, in order to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal in the design space over ## Documentation `osier` offers robust documentation with detailed usage examples at [osier.readthedocs.io](https://osier.readthedocs.io). +# Acknowledgements + +Samuel Dotson was supported by the Nuclear Regulatory Commission Fellowship program. This research was part of the Advanced Reactors and Fuel Cycles (ARFC) group in the Department of Nuclear, Plasma, and Radiological Engineering (NPRE) at the University of Illinois Urbana-Champaign. Additionally, Samuel Dotson was supported by the Felix T. Adler Fellowship through NPRE. The views and opinions expressed in this paper are those of the author alone. + # References From 9ac90676c505c4b76bbecfff0750853abe9b4d6f Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 17:32:51 -0600 Subject: [PATCH 15/34] actual first draft --- paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.md b/paper/paper.md index c569f3a..0893781 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -64,7 +64,7 @@ own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and expands the potential for incorporating localized preferences. -Lastly, in order to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal in the design space over +Lastly, in order to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal in the design space. ## Documentation From 7c08b95bc748229fe851bcb8015af118d983c23a Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 17:38:13 -0600 Subject: [PATCH 16/34] fixes citations and line lengths --- paper/paper.md | 74 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 13 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 0893781..8833ede 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -20,26 +20,64 @@ bibliography: paper.bib # Summary Transitioning to a clean energy economy will require expanded energy infrastructure. An equitable, or just, transition further requires the -recognition of the people and communities directly affected by this transition. However, public preferences may be ignored during decision-making processes related energy infrastructure due to a lack of technical rigor or expertise [@johnson:2021]. This challenge is further complicated by the fact that people have and express preferences over many dimensions simultaneously. Multi-objective optimization offers a method to help decision makers and stakeholders understand the problem and analyze tradeoffs among solutions [@liebman:1976]. Although, to date, no multi-objective energy modelling frameworks exist. Open-source multi-objective energy system framework (`osier`) is a Python package for designing and optimizing energy systems across an arbitrary number of dimensions.`osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. `osier` also implements a novel algorithm that extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative solutions. In this way, `osier` may address challenges related to procedural and recognition justice. +recognition of the people and communities directly affected by this transition. +However, public preferences may be ignored during decision-making processes +related energy infrastructure due to a lack of technical rigor or expertise +[@johnson:2021]. This challenge is further complicated by the fact that people +have and express preferences over many dimensions simultaneously. +Multi-objective optimization offers a method to help decision makers and +stakeholders understand the problem and analyze tradeoffs among solutions +[@liebman:1976]. Although, to date, no multi-objective energy modelling +frameworks exist. Open-source multi-objective energy system framework (`osier`) +is a Python package for designing and optimizing energy systems across an +arbitrary number of dimensions.`osier` was designed to help localized +communities articulate their energy preferences in a technical manner without +requiring extensive technical expertise. In order to facilitate more robust +tradeoff analysis, `osier` generates a set of technology portfolios, called a +Pareto front, with multi-objective optimization using evolutionary algorithms. +`osier` also implements a novel algorithm that extends the common +modelling-to-generate-alternatives (MGA) algorithm into many dimensions, +allowing users to investigate the near-optimal for appealing alternative +solutions. In this way, `osier` may address challenges related to procedural and +recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models (ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks but are most frequently used for prescriptive analyses meant to guide decision-makers in planning processes. However, despite the many available -models, all of these tools share a fundamental characteristic: Optimization over a single economic objective (e.g., total cost or social welfare). +models, all of these tools share a fundamental characteristic: Optimization over +a single economic objective (e.g., total cost or social welfare). Simultaneously, there is growing awareness of energy justice and calls for its -inclusion in energy models [@pfenninger:2014, @vagero:2023]. Some studies +inclusion in energy models [@pfenninger:2014; @vagero:2023]. Some studies attempted to incorporate local preferences into energy system design through multi-criteria decision analysis (MCDA) and community focus groups -[@bertsch:2016, @mckenna:2018, @zelt2019]. But these studies rely on tools with pre-defined objectives which are difficult to modify. Without the ability to add objectives that reflect the concerns of a community, the priorities of that community will continue to be secondary to those of modellers and decision makers. A flexible and extensible multi-objective framework that fulfills this need has not yet been developed. `osier` closes this gap. +[@bertsch:2016; @mckenna:2018; @zelt:2019]. But these studies rely on tools with +pre-defined objectives which are difficult to modify. Without the ability to add +objectives that reflect the concerns of a community, the priorities of that +community will continue to be secondary to those of modellers and decision +makers. A flexible and extensible multi-objective framework that fulfills this +need has not yet been developed. `osier` closes this gap. # Design and Implementation -In order to run `osier`, users are only required to supply an energy demand time series. Users can optionally provide weather data to incorporate solar or wind energy. The fundamental object in `osier` is an `osier.Technology` object, which contain all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset[@nationalrenewableenergylaboratory:2023] but users are also able to define their own. +In order to run `osier`, users are only required to supply an energy demand time +series. Users can optionally provide weather data to incorporate solar or wind +energy. The fundamental object in `osier` is an `osier.Technology` object, which +contain all of the necessary cost and performance data for different technology +classes. `osier` comes pre-loaded with a variety of technologies described in +the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline +(ATB) dataset[@nationalrenewableenergylaboratory:2023] but users are also able +to define their own. A set of `osier.Technology` objects, along with user-supplied demand data, can be tested independently with the `osier.DispatchModel`. The -`osier.DispatchModel` is a linear programming model implemented with the `pyomo` library [@hart:2011]. For investment decisions and tradeoff analysis, users can pass their portfolio of `osier.Technology` objects, energy demand, and their desired objectives to the `osier.CapacityExpansion` model, the highest level model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo` [@blank:2020]. \autoref{fig:osier-flow} overviews the flow of data through `osier`. +`osier.DispatchModel` is a linear programming model implemented with the `pyomo` +library [@hart:2011]. For investment decisions and tradeoff analysis, users can +pass their portfolio of `osier.Technology` objects, energy demand, and their +desired objectives to the `osier.CapacityExpansion` model, the highest level +model in `osier`. The `osier.CapacityExpansion` model is implemented with the +multi-objective optimization framework, `pymoo` [@blank:2020]. +\autoref{fig:osier-flow} overviews the flow of data through `osier`. ![The flow of data into and within `osier` \label{fig:osier-flow}](osier_flow.png) @@ -47,24 +85,29 @@ be tested independently with the `osier.DispatchModel`. The ## Key Features In addition to being the first and only open-source multi-objective energy modelling framework, `osier` has a few key features that further distinguishes -it from other modelling frameworks. First, since `osier.Technology` objects are Python objects, users can modify values and assumptions, or assign new +it from other modelling frameworks. First, since `osier.Technology` objects are +Python objects, users can modify values and assumptions, or assign new attributes to the tested technologies. Second, contrary to conventional energy -system models, `osier` has no required objectives. While users may choose from a variety of pre-defined objectives, they may also declare their own objectives based on any quantifiable metric. The requirements for a bespoke objective are: +system models, `osier` has no required objectives. While users may choose from a +variety of pre-defined objectives, they may also declare their own objectives +based on any quantifiable metric. The requirements for a bespoke objective are: 1. The first argument must be a list of `osier.Technology` objects. 2. The second argument must be the results from an `osier.DispatchModel`. But this may be a simple placeholder with a default value of `None` as shown below. 3. The function must return a numerical value. -4. The final (implicit) requirement, is that all `osier.Technology` objects possess the attribute being optimized. +4. The final (implicit) requirement, is that all `osier.Technology` objects + possess the attribute being optimized. These two features acknowledge that a modeler cannot know *a priori* all possible objectives or parameters of interest. Allowing users to define their own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and -expands the potential for incorporating localized preferences. - -Lastly, in order to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal in the design space. +expands the potential for incorporating localized preferences.Lastly, in order +to account for unmodeled or unmodelable objectives, `osier` extends the +conventional MGA algorithm into N-dimensions by using a farthest-first-traversal +in the design space. ## Documentation @@ -73,7 +116,12 @@ Lastly, in order to account for unmodeled or unmodelable objectives, `osier` ext # Acknowledgements -Samuel Dotson was supported by the Nuclear Regulatory Commission Fellowship program. This research was part of the Advanced Reactors and Fuel Cycles (ARFC) group in the Department of Nuclear, Plasma, and Radiological Engineering (NPRE) at the University of Illinois Urbana-Champaign. Additionally, Samuel Dotson was supported by the Felix T. Adler Fellowship through NPRE. The views and opinions expressed in this paper are those of the author alone. +Samuel Dotson was supported by the Nuclear Regulatory Commission Fellowship +program. This research was part of the Advanced Reactors and Fuel Cycles (ARFC) +group in the Department of Nuclear, Plasma, and Radiological Engineering (NPRE) +at the University of Illinois Urbana-Champaign. Additionally, Samuel Dotson was +supported by the Felix T. Adler Fellowship through NPRE. The views and opinions +expressed in this paper are those of the author alone. # References From 94dd5e78f480dbd3b7ded7f4d138323d2fbaf801 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 2 Mar 2024 17:55:28 -0600 Subject: [PATCH 17/34] minor edits --- paper/paper.md | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 8833ede..983fb2a 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -30,15 +30,15 @@ stakeholders understand the problem and analyze tradeoffs among solutions [@liebman:1976]. Although, to date, no multi-objective energy modelling frameworks exist. Open-source multi-objective energy system framework (`osier`) is a Python package for designing and optimizing energy systems across an -arbitrary number of dimensions.`osier` was designed to help localized +arbitrary number of dimensions. `osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of technology portfolios, called a Pareto front, with multi-objective optimization using evolutionary algorithms. -`osier` also implements a novel algorithm that extends the common +`osier` also extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative -solutions. In this way, `osier` may address challenges related to procedural and +solutions. In this way, `osier` may aid modelers in addressing procedural and recognition justice. # Statement of Need @@ -55,9 +55,9 @@ multi-criteria decision analysis (MCDA) and community focus groups [@bertsch:2016; @mckenna:2018; @zelt:2019]. But these studies rely on tools with pre-defined objectives which are difficult to modify. Without the ability to add objectives that reflect the concerns of a community, the priorities of that -community will continue to be secondary to those of modellers and decision +community will remain secondary to those of modellers and decision makers. A flexible and extensible multi-objective framework that fulfills this -need has not yet been developed. `osier` closes this gap. +need has not yet been developed. The `osier` framework closes this gap. # Design and Implementation In order to run `osier`, users are only required to supply an energy demand time @@ -94,17 +94,16 @@ based on any quantifiable metric. The requirements for a bespoke objective are: 1. The first argument must be a list of `osier.Technology` objects. 2. The second argument must be the results from an `osier.DispatchModel`. But - this may be a simple placeholder with a default value of `None` as shown - below. -3. The function must return a numerical value. -4. The final (implicit) requirement, is that all `osier.Technology` objects + this may be a simple placeholder with a default value of `None`. +3. The function must return a single numerical value. +4. The final requirement, is that all `osier.Technology` objects possess the attribute being optimized. These two features acknowledge that a modeler cannot know *a priori* all possible objectives or parameters of interest. Allowing users to define their own objectives and modify technology objects (or simply build their own by inheriting from the `osier.Technology` class) accounts for this limitation and -expands the potential for incorporating localized preferences.Lastly, in order +expands the potential for incorporating localized preferences. Lastly, in order to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal in the design space. From bd7f5557be895529e21434a7851397d4fc5f9b73 Mon Sep 17 00:00:00 2001 From: Sam Dotson <44342873+samgdotson@users.noreply.github.com> Date: Thu, 4 Apr 2024 06:40:51 -0500 Subject: [PATCH 18/34] Apply some suggestions from code review Co-authored-by: Madicken Munk --- paper/paper.md | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 983fb2a..e4f75b3 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -11,7 +11,7 @@ authors: affiliation: 1 corresponding: true affiliations: - - name: Felix T. Adler Fellow, Department of Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA + - name: Department of Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA index: 1 date: 20 February 2024 bibliography: paper.bib @@ -22,7 +22,7 @@ Transitioning to a clean energy economy will require expanded energy infrastructure. An equitable, or just, transition further requires the recognition of the people and communities directly affected by this transition. However, public preferences may be ignored during decision-making processes -related energy infrastructure due to a lack of technical rigor or expertise +related to energy infrastructure due to a lack of technical rigor or expertise [@johnson:2021]. This challenge is further complicated by the fact that people have and express preferences over many dimensions simultaneously. Multi-objective optimization offers a method to help decision makers and @@ -33,8 +33,8 @@ is a Python package for designing and optimizing energy systems across an arbitrary number of dimensions. `osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust -tradeoff analysis, `osier` generates a set of technology portfolios, called a -Pareto front, with multi-objective optimization using evolutionary algorithms. +tradeoff analysis, `osier` generates a set of solutions, called a +Pareto front, that are composed of a number of technology portfolios. The Pareto front is calculated using multi-objective optimization using evolutionary algorithms. `osier` also extends the common modelling-to-generate-alternatives (MGA) algorithm into many dimensions, allowing users to investigate the near-optimal for appealing alternative @@ -115,12 +115,23 @@ in the design space. # Acknowledgements -Samuel Dotson was supported by the Nuclear Regulatory Commission Fellowship +Samuel Dotson, the corresponding and lead author of this publication is responsible +for the conceptualization of osier, developing the osier as a software, in preparing +this manuscript for publication, and for performing analysis to validate osier. +Madicken Munk provided resources and supervision for the work, as well as assisted +in the review and editing of the manuscript. Samuel Dotson was supported +by the Nuclear Regulatory Commission Fellowship program. This research was part of the Advanced Reactors and Fuel Cycles (ARFC) group in the Department of Nuclear, Plasma, and Radiological Engineering (NPRE) -at the University of Illinois Urbana-Champaign. Additionally, Samuel Dotson was -supported by the Felix T. Adler Fellowship through NPRE. The views and opinions -expressed in this paper are those of the author alone. +at the University of +Illinois Urbana-Champaign. To that end, the authors would like to acknowledge ARFC +members Oleksander Yardas, Luke Seifert, Nathan Ryan, Amanda Bachmann, +and Sun Myung Park for their contributions in reviewing pull requests +supporting the creation of osier. +Additionally, Samuel Dotson was +supported by the Felix T. Adler Fellowship through NPRE. +Finally, the authors would like to thank the JOSS reviewers for their time +and commentary in reviewing this manuscript. # References From 380637204ed136f70203c888bc58a2d605e96cde Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Thu, 4 Apr 2024 08:08:31 -0500 Subject: [PATCH 19/34] adds results section and @munkm suggestions --- paper/images/osier-results.png | Bin 0 -> 22283 bytes paper/images/osier-tech-results.png | Bin 0 -> 17083 bytes paper/paper.md | 107 ++++++++++++++++------------ 3 files changed, 62 insertions(+), 45 deletions(-) create mode 100644 paper/images/osier-results.png create mode 100644 paper/images/osier-tech-results.png diff --git a/paper/images/osier-results.png b/paper/images/osier-results.png new file mode 100644 index 0000000000000000000000000000000000000000..202fc60b706f5776de28bf4a12dc02ae5df3fd2d GIT binary patch literal 22283 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 Li1MpF`Zxa%9k^36 literal 0 HcmV?d00001 diff --git a/paper/images/osier-tech-results.png b/paper/images/osier-tech-results.png new file mode 100644 index 0000000000000000000000000000000000000000..e6245339e60ed83313a200945af5c62b6a8cdf9d GIT binary patch literal 17083 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 literal 0 HcmV?d00001 diff --git a/paper/paper.md b/paper/paper.md index e4f75b3..8b0138b 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -10,10 +10,13 @@ authors: orcid: 0000-0002-8662-0336 affiliation: 1 corresponding: true + - name: Madicken Munk + orcid: 0000-0003-0117-5366 + affiliation: 1 affiliations: - name: Department of Nuclear, Plasma, and Radiological Engineering, University of Illinois Urbana-Champaign, USA index: 1 -date: 20 February 2024 +date: 05 April 2024 bibliography: paper.bib --- @@ -27,47 +30,48 @@ related to energy infrastructure due to a lack of technical rigor or expertise have and express preferences over many dimensions simultaneously. Multi-objective optimization offers a method to help decision makers and stakeholders understand the problem and analyze tradeoffs among solutions -[@liebman:1976]. Although, to date, no multi-objective energy modelling -frameworks exist. Open-source multi-objective energy system framework (`osier`) -is a Python package for designing and optimizing energy systems across an -arbitrary number of dimensions. `osier` was designed to help localized +[@liebman:1976]. Although, to date, no open-source multi-objective energy +modelling frameworks exist. Open-source multi-objective energy system framework +(`osier`) is a Python package for designing and optimizing energy systems across +an arbitrary number of dimensions. `osier` was designed to help localized communities articulate their energy preferences in a technical manner without requiring extensive technical expertise. In order to facilitate more robust -tradeoff analysis, `osier` generates a set of solutions, called a -Pareto front, that are composed of a number of technology portfolios. The Pareto front is calculated using multi-objective optimization using evolutionary algorithms. -`osier` also extends the common -modelling-to-generate-alternatives (MGA) algorithm into many dimensions, -allowing users to investigate the near-optimal for appealing alternative -solutions. In this way, `osier` may aid modelers in addressing procedural and -recognition justice. +tradeoff analysis, `osier` generates a set of solutions, called a Pareto front, +that are composed of a number of technology portfolios. The Pareto front is +calculated using multi-objective optimization using evolutionary algorithms. +`osier` also extends the common modelling-to-generate-alternatives (MGA) +algorithm into N-dimensional objective space, as opposed to the conventional +single-objective MGA. This allows users to investigate the near-optimal +for appealing alternative solutions. In this way, `osier` may aid modelers in +addressing procedural and recognition justice. # Statement of Need There are myriad open- and closed-source energy system optimization models (ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks but are most frequently used for prescriptive analyses meant to guide -decision-makers in planning processes. However, despite the many available -models, all of these tools share a fundamental characteristic: Optimization over +decision-makers in planning processes. However, virtually all of these tools +share a fundamental characteristic: Optimization over a single economic objective (e.g., total cost or social welfare). Simultaneously, there is growing awareness of energy justice and calls for its inclusion in energy models [@pfenninger:2014; @vagero:2023]. Some studies -attempted to incorporate local preferences into energy system design through +incorporate local preferences into energy system design through multi-criteria decision analysis (MCDA) and community focus groups [@bertsch:2016; @mckenna:2018; @zelt:2019]. But these studies rely on tools with pre-defined objectives which are difficult to modify. Without the ability to add objectives that reflect the concerns of a community, the priorities of that -community will remain secondary to those of modellers and decision -makers. A flexible and extensible multi-objective framework that fulfills this -need has not yet been developed. The `osier` framework closes this gap. +community will remain secondary to those of modellers and decision makers. A +flexible and extensible multi-objective framework that fulfills this need has +not yet been developed. The `osier` framework closes this gap. # Design and Implementation -In order to run `osier`, users are only required to supply an energy demand time -series. Users can optionally provide weather data to incorporate solar or wind -energy. The fundamental object in `osier` is an `osier.Technology` object, which -contain all of the necessary cost and performance data for different technology -classes. `osier` comes pre-loaded with a variety of technologies described in -the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline -(ATB) dataset[@nationalrenewableenergylaboratory:2023] but users are also able -to define their own. +The fundamental object in `osier` is an `osier.Technology` object, which +contains all of the necessary cost and performance data for different technology +classes. `osier` comes pre-loaded with a variety of technologies described in +the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) +dataset[@nationalrenewableenergylaboratory:2023] but users are also able to +define their own. In order to run `osier`, users are only required to supply an +energy demand time series and a list of `osier.Technology` objects. Users can +optionally provide weather data to incorporate solar or wind energy. A set of `osier.Technology` objects, along with user-supplied demand data, can be tested independently with the `osier.DispatchModel`. The @@ -79,8 +83,7 @@ model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo` [@blank:2020]. \autoref{fig:osier-flow} overviews the flow of data through `osier`. -![The flow of data into and within `osier` -\label{fig:osier-flow}](osier_flow.png) +![The flow of data into and within `osier`.\label{fig:osier-flow}](osier_flow.png) ## Key Features In addition to being the first and only open-source multi-objective energy @@ -96,8 +99,8 @@ based on any quantifiable metric. The requirements for a bespoke objective are: 2. The second argument must be the results from an `osier.DispatchModel`. But this may be a simple placeholder with a default value of `None`. 3. The function must return a single numerical value. -4. The final requirement, is that all `osier.Technology` objects - possess the attribute being optimized. +4. The final requirement, is that all `osier.Technology` objects possess the + attribute being optimized. These two features acknowledge that a modeler cannot know *a priori* all possible objectives or parameters of interest. Allowing users to define their @@ -108,6 +111,22 @@ to account for unmodeled or unmodelable objectives, `osier` extends the conventional MGA algorithm into N-dimensions by using a farthest-first-traversal in the design space. +## Sample Results and Interpretation + +When solving a multi-objective problem, `osier` generates a set of co-optimal +solutions rather than a global optimum, called a Pareto front. +\autoref{fig:osier-results} shows a Pareto front from a problem that +simultaneously minimizes total cost and lifecylce carbon emissions. + +![A Pareto front generated by`osier`.\label{fig:osier-results}](images/osier-results.png) + +Each point on this Pareto front represents a different technology portfolio +(i.e., different combination of wind, natural gas, and battery storage). +\autoref{fig:osier-tech-res} illustrates the variation in solutions from +the Pareto front in \autoref{fig:osier-results}. + +![The variance in technology options along a Pareto front.\label{fig:osier-tech-res}](images/osier-tech-results.png) + ## Documentation `osier` offers robust documentation with detailed usage examples at @@ -115,23 +134,21 @@ in the design space. # Acknowledgements -Samuel Dotson, the corresponding and lead author of this publication is responsible -for the conceptualization of osier, developing the osier as a software, in preparing -this manuscript for publication, and for performing analysis to validate osier. -Madicken Munk provided resources and supervision for the work, as well as assisted -in the review and editing of the manuscript. Samuel Dotson was supported -by the Nuclear Regulatory Commission Fellowship +Samuel Dotson, the corresponding and lead author of this publication is +responsible for the conceptualization of `osier`, developing `osier` as a +software, in preparing this manuscript for publication, and for performing +analysis to validate `osier`. Madicken Munk provided resources and supervision +for the work, as well as assisted in the review and editing of the manuscript. +Samuel Dotson was supported by the Nuclear Regulatory Commission Fellowship program. This research was part of the Advanced Reactors and Fuel Cycles (ARFC) group in the Department of Nuclear, Plasma, and Radiological Engineering (NPRE) -at the University of -Illinois Urbana-Champaign. To that end, the authors would like to acknowledge ARFC -members Oleksander Yardas, Luke Seifert, Nathan Ryan, Amanda Bachmann, -and Sun Myung Park for their contributions in reviewing pull requests -supporting the creation of osier. -Additionally, Samuel Dotson was -supported by the Felix T. Adler Fellowship through NPRE. -Finally, the authors would like to thank the JOSS reviewers for their time -and commentary in reviewing this manuscript. +at the University of Illinois Urbana-Champaign. To that end, the authors would +like to acknowledge ARFC members Oleksander Yardas, Luke Seifert, Nathan Ryan, +Amanda Bachmann, and Sun Myung Park for their contributions in reviewing pull +requests supporting the creation of osier. Additionally, Samuel Dotson was +supported by the Felix T. Adler Fellowship through NPRE. Finally, the authors +would like to thank the JOSS reviewers for their time and commentary in +reviewing this manuscript. # References From 5fac3238916ad73ae7786bf21bc0b00c5875fe27 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Thu, 4 Apr 2024 08:17:02 -0500 Subject: [PATCH 20/34] adds comment about results. --- paper/paper.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/paper/paper.md b/paper/paper.md index 8b0138b..af70ed2 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -123,7 +123,9 @@ simultaneously minimizes total cost and lifecylce carbon emissions. Each point on this Pareto front represents a different technology portfolio (i.e., different combination of wind, natural gas, and battery storage). \autoref{fig:osier-tech-res} illustrates the variation in solutions from -the Pareto front in \autoref{fig:osier-results}. +the Pareto front in \autoref{fig:osier-results}. In this case, the range of +wind capacity is wider than the range of capacities for natural gas and battery +storage. ![The variance in technology options along a Pareto front.\label{fig:osier-tech-res}](images/osier-tech-results.png) From fbcf05327ea9667cf12d70e831ca1f872cb00673 Mon Sep 17 00:00:00 2001 From: Sam Dotson <44342873+samgdotson@users.noreply.github.com> Date: Thu, 4 Apr 2024 17:12:13 -0500 Subject: [PATCH 21/34] Update paper/paper.md Co-authored-by: Madicken Munk --- paper/paper.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.md b/paper/paper.md index af70ed2..e6013bb 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -69,7 +69,7 @@ contains all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) dataset[@nationalrenewableenergylaboratory:2023] but users are also able to -define their own. In order to run `osier`, users are only required to supply an +define their own. In order to run `osier`, users are required to supply an energy demand time series and a list of `osier.Technology` objects. Users can optionally provide weather data to incorporate solar or wind energy. From e31d6abf5cad25b946247f4e941c976a4294988e Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Tue, 10 Sep 2024 17:02:49 -0400 Subject: [PATCH 22/34] adds two articles to bib and reinstates the joss draft build step --- .github/workflows/CI.yml | 3 +++ paper/paper.bib | 41 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 1358aa1..2afb551 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -81,3 +81,6 @@ jobs: flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics + + - name: Open Journals PDF Generator + uses: openjournals/openjournals-draft-action@v.1.0 diff --git a/paper/paper.bib b/paper/paper.bib index db7c5b3..ff5a4ba 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -210,3 +210,44 @@ @article{zelt:2019 keywords = {electricity scenarios,energy modelling,Jordan,MCA,MENA,Morocco,multi-criteria,stakeholder participation,sustainability,Tunisia}, file = {/home/sam/snap/zotero-snap/common/Zotero/storage/S3QTXVF7/Zelt et al. - 2019 - Long-Term Electricity Scenarios for the MENA Regio.pdf} } + +@article{brown:2018, + title = {{PyPSA}: {Python} for {Power} {System} {Analysis}}, + volume = {6}, + copyright = {Authors who publish with this journal agree to the following terms: Authors retain copyright and grant the journal right of first publication with the work simultaneously licensed under a Creative Commons Attribution License that allows others to share the work with an acknowledgement of the work's authorship and initial publication in this journal. Authors are able to enter into separate, additional contractual arrangements for the non-exclusive distribution of the journal's published version of the work (e.g., post it to an institutional repository or publish it in a book), with an acknowledgement of its initial publication in this journal. Authors are permitted and encouraged to post their work online (e.g., in institutional repositories or on their website) prior to and during the submission process, as it can lead to productive exchanges, as well as earlier and greater citation of published work (See The Effect of Open Access ). All third-party images reproduced on this journal are shared under Educational Fair Use. For more information on Educational Fair Use , please see this useful checklist prepared by Columbia University Libraries . All copyright of third-party content posted here for research purposes belongs to its original owners. Unless otherwise stated all references to characters and comic art presented on this journal are ©, ® or ™ of their respective owners. No challenge to any owner’s rights is intended or should be inferred.}, + issn = {2049-9647}, + shorttitle = {{PyPSA}}, + url = {http://openresearchsoftware.metajnl.com/articles/10.5334/jors.188/}, + doi = {10.5334/jors.188}, + abstract = {Python for Power System Analysis (PyPSA) is a free software toolbox for simulating and optimising modern electrical power systems over multiple periods. PyPSA includes models for conventional generators with unit commitment, variable renewable generation, storage units, coupling to other energy sectors, and mixed alternating and direct current networks. It is designed to be easily extensible and to scale well with large networks and long time series. In this paper the basic functionality of PyPSA is described, including the formulation of the full power flow equations and the multi-period optimisation of operation and investment with linear power flow equations. PyPSA is positioned in the existing free software landscape as a bridge between traditional power flow analysis tools for steady-state analysis and full multi-period energy system models. The functionality is demonstrated on two open datasets of the transmission system in Germany (based on SciGRID) and Europe (based on GridKit).Funding statement: This research was conducted as part of the CoNDyNet project, which is supported by the German Federal Ministry of Education and Research under grant no. 03SF0472C. The responsibility for the contents lies solely with the authors}, + language = {en}, + number = {1}, + urldate = {2022-12-12}, + journal = {Journal of Open Research Software}, + author = {Brown, Thomas and Hörsch, Jonas and Schlachtberger, David}, + month = jan, + year = {2018}, + publisher = Ubiquity Press, + keywords = {energy system simulations, Load flow calculations, optimal power flow, Power system simulations, renewable energy, security-constrained optimal power flow, unit commitment}, + pages = {4}, + file = {Full Text PDF:/Users/samdotson/Zotero/storage/WXM33X5R/Brown et al. - 2018 - PyPSA Python for Power System Analysis.pdf:application/pdf}, +} + +@article{pfenninger:2018, + title = {Calliope: a multi-scale energy systems modelling framework}, + volume = {3}, + issn = {2475-9066}, + shorttitle = {Calliope}, + url = {https://joss.theoj.org/papers/10.21105/joss.00825}, + doi = {10.21105/joss.00825}, + abstract = {Pfenninger et al., (2018). Calliope: a multi-scale energy systems modelling framework. Journal of Open Source Software, 3(29), 825, https://doi.org/10.21105/joss.00825}, + language = {en}, + number = {29}, + urldate = {2022-12-12}, + journal = {Journal of Open Source Software}, + author = {Pfenninger, Stefan and Pickering, Bryn}, + month = sep, + year = {2018}, + pages = {825}, + file = {Full Text PDF:/Users/samdotson/Zotero/storage/7DVHTBE3/Pfenninger and Pickering - 2018 - Calliope a multi-scale energy systems modelling f.pdf:application/pdf}, +} From 615c9ddf212c42999928311ba5c6f1d29b9c477c Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Tue, 10 Sep 2024 17:27:39 -0400 Subject: [PATCH 23/34] adds a line about two related projects, calliope and pypsa --- paper/paper.md | 68 +++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index e6013bb..749c1d7 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -31,7 +31,7 @@ have and express preferences over many dimensions simultaneously. Multi-objective optimization offers a method to help decision makers and stakeholders understand the problem and analyze tradeoffs among solutions [@liebman:1976]. Although, to date, no open-source multi-objective energy -modelling frameworks exist. Open-source multi-objective energy system framework +modeling frameworks exist. Open-source multi-objective energy system framework (`osier`) is a Python package for designing and optimizing energy systems across an arbitrary number of dimensions. `osier` was designed to help localized communities articulate their energy preferences in a technical manner without @@ -39,9 +39,9 @@ requiring extensive technical expertise. In order to facilitate more robust tradeoff analysis, `osier` generates a set of solutions, called a Pareto front, that are composed of a number of technology portfolios. The Pareto front is calculated using multi-objective optimization using evolutionary algorithms. -`osier` also extends the common modelling-to-generate-alternatives (MGA) +`osier` also extends the common modeling-to-generate-alternatives (MGA) algorithm into N-dimensional objective space, as opposed to the conventional -single-objective MGA. This allows users to investigate the near-optimal +single-objective MGA. This allows users to investigate the near-optimal space for appealing alternative solutions. In this way, `osier` may aid modelers in addressing procedural and recognition justice. @@ -49,28 +49,31 @@ addressing procedural and recognition justice. There are myriad open- and closed-source energy system optimization models (ESOMs) available [@pfenninger:2022]. ESOMs can be used for a variety of tasks but are most frequently used for prescriptive analyses meant to guide -decision-makers in planning processes. However, virtually all of these tools -share a fundamental characteristic: Optimization over -a single economic objective (e.g., total cost or social welfare). -Simultaneously, there is growing awareness of energy justice and calls for its -inclusion in energy models [@pfenninger:2014; @vagero:2023]. Some studies -incorporate local preferences into energy system design through -multi-criteria decision analysis (MCDA) and community focus groups -[@bertsch:2016; @mckenna:2018; @zelt:2019]. But these studies rely on tools with -pre-defined objectives which are difficult to modify. Without the ability to add -objectives that reflect the concerns of a community, the priorities of that -community will remain secondary to those of modellers and decision makers. A -flexible and extensible multi-objective framework that fulfills this need has -not yet been developed. The `osier` framework closes this gap. +decision-makers in planning processes. However, virtually all of these tools +share a fundamental characteristic: Optimization over a single economic +objective (e.g., total cost or social welfare). Simultaneously, there is growing +awareness of energy justice and calls for its inclusion in energy models +[@pfenninger:2014; @vagero:2023]. Two well known open-source ESOMs, Calliope +[@pfenninger:2018] and Python for Power Systems Analysis (PyPSA) [@brown:2018], +partially address equity issues by implementing MGA, but this does not resolve +the limitation of mono-objective optimization. Some studies incorporate local +preferences into energy system design through multi-criteria decision analysis +(MCDA) and community focus groups [@bertsch:2016; @mckenna:2018; @zelt:2019]. +But these studies rely on tools with pre-defined objectives which are difficult +to modify. Without the ability to add objectives that reflect the concerns of a +community, the priorities of that community will remain secondary to those of +modelers and decision makers. A flexible and extensible multi-objective +framework that fulfills this need has not yet been developed. The `osier` +framework closes this gap. # Design and Implementation -The fundamental object in `osier` is an `osier.Technology` object, which -contains all of the necessary cost and performance data for different technology -classes. `osier` comes pre-loaded with a variety of technologies described in -the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline (ATB) -dataset[@nationalrenewableenergylaboratory:2023] but users are also able to -define their own. In order to run `osier`, users are required to supply an -energy demand time series and a list of `osier.Technology` objects. Users can +The fundamental object in `osier` is an `osier.Technology` object, which +contains all of the necessary cost and performance data for different technology +classes. `osier` comes pre-loaded with a variety of technologies described in +the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline +(ATB) dataset[@nationalrenewableenergylaboratory:2023] but users are also able +to define their own. In order to run `osier`, users are required to supply an +energy demand time series and a list of `osier.Technology` objects. Users can optionally provide weather data to incorporate solar or wind energy. A set of `osier.Technology` objects, along with user-supplied demand data, can @@ -83,12 +86,13 @@ model in `osier`. The `osier.CapacityExpansion` model is implemented with the multi-objective optimization framework, `pymoo` [@blank:2020]. \autoref{fig:osier-flow} overviews the flow of data through `osier`. -![The flow of data into and within `osier`.\label{fig:osier-flow}](osier_flow.png) +![The flow of data into and within +`osier`.\label{fig:osier-flow}](osier_flow.png) ## Key Features In addition to being the first and only open-source multi-objective energy -modelling framework, `osier` has a few key features that further distinguishes -it from other modelling frameworks. First, since `osier.Technology` objects are +modeling framework, `osier` has a few key features that further distinguishes it +from other modeling frameworks. First, since `osier.Technology` objects are Python objects, users can modify values and assumptions, or assign new attributes to the tested technologies. Second, contrary to conventional energy system models, `osier` has no required objectives. While users may choose from a @@ -118,16 +122,18 @@ solutions rather than a global optimum, called a Pareto front. \autoref{fig:osier-results} shows a Pareto front from a problem that simultaneously minimizes total cost and lifecylce carbon emissions. -![A Pareto front generated by`osier`.\label{fig:osier-results}](images/osier-results.png) +![A Pareto front generated +by`osier`.\label{fig:osier-results}](images/osier-results.png) Each point on this Pareto front represents a different technology portfolio (i.e., different combination of wind, natural gas, and battery storage). -\autoref{fig:osier-tech-res} illustrates the variation in solutions from -the Pareto front in \autoref{fig:osier-results}. In this case, the range of -wind capacity is wider than the range of capacities for natural gas and battery +\autoref{fig:osier-tech-res} illustrates the variation in solutions from the +Pareto front in \autoref{fig:osier-results}. In this case, the range of wind +capacity is wider than the range of capacities for natural gas and battery storage. -![The variance in technology options along a Pareto front.\label{fig:osier-tech-res}](images/osier-tech-results.png) +![The variance in technology options along a Pareto +front.\label{fig:osier-tech-res}](images/osier-tech-results.png) ## Documentation From d91646bc63ed82c541c99bec3ed04aac5e81f9ec Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 14 Sep 2024 17:06:18 -0400 Subject: [PATCH 24/34] comments out openjournals hook in CI file --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2afb551..d228f4c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -82,5 +82,5 @@ jobs: # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - - name: Open Journals PDF Generator - uses: openjournals/openjournals-draft-action@v.1.0 + # - name: Open Journals PDF Generator + # uses: openjournals/openjournals-draft-action@v.1.0 From 3116516d3646492331684d0b687c5c0619e0cca7 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 14 Sep 2024 17:17:59 -0400 Subject: [PATCH 25/34] adds pull_request to draft pdf workflow --- .github/workflows/draft-pdf.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index 51a805e..f34dfeb 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -1,4 +1,5 @@ -on: [push] +name: Draft PDF +on: [push, pull_request] jobs: paper: From 93dc1822fb0d36b96923d54cd880db15ae795d68 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 14 Sep 2024 17:19:55 -0400 Subject: [PATCH 26/34] updates workflow --- .github/workflows/draft-pdf.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index f34dfeb..d14665a 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -15,7 +15,7 @@ jobs: # This should be the path to the paper within your repo. paper-path: paper/paper.md - name: Upload - uses: actions/upload-artifact@v1 + uses: actions/download-artifact@v4 with: name: paper # This is the output path where Pandoc will write the compiled From 80c759857ff970afedfff304abd006031cd1b8b0 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 14 Sep 2024 17:23:22 -0400 Subject: [PATCH 27/34] fixes paper.bib --- paper/paper.bib | 1 - 1 file changed, 1 deletion(-) diff --git a/paper/paper.bib b/paper/paper.bib index ff5a4ba..10cf556 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -227,7 +227,6 @@ @article{brown:2018 author = {Brown, Thomas and Hörsch, Jonas and Schlachtberger, David}, month = jan, year = {2018}, - publisher = Ubiquity Press, keywords = {energy system simulations, Load flow calculations, optimal power flow, Power system simulations, renewable energy, security-constrained optimal power flow, unit commitment}, pages = {4}, file = {Full Text PDF:/Users/samdotson/Zotero/storage/WXM33X5R/Brown et al. - 2018 - PyPSA Python for Power System Analysis.pdf:application/pdf}, From d7d12974194b9dbcf8dedf46a14b68a5526f319b Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 14 Sep 2024 17:25:09 -0400 Subject: [PATCH 28/34] fixes erroneous 'download' in the 'upload' rule --- .github/workflows/draft-pdf.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/draft-pdf.yml b/.github/workflows/draft-pdf.yml index d14665a..4a982d0 100644 --- a/.github/workflows/draft-pdf.yml +++ b/.github/workflows/draft-pdf.yml @@ -15,7 +15,7 @@ jobs: # This should be the path to the paper within your repo. paper-path: paper/paper.md - name: Upload - uses: actions/download-artifact@v4 + uses: actions/upload-artifact@v4 with: name: paper # This is the output path where Pandoc will write the compiled From 0507d4714bb64129aa34a1cf2701861f5533b932 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Tue, 24 Sep 2024 07:15:08 -0400 Subject: [PATCH 29/34] fixes paper typo --- paper/paper.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/paper/paper.md b/paper/paper.md index 749c1d7..2782f17 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -56,15 +56,15 @@ awareness of energy justice and calls for its inclusion in energy models [@pfenninger:2014; @vagero:2023]. Two well known open-source ESOMs, Calliope [@pfenninger:2018] and Python for Power Systems Analysis (PyPSA) [@brown:2018], partially address equity issues by implementing MGA, but this does not resolve -the limitation of mono-objective optimization. Some studies incorporate local +the limitations of mono-objective optimization. Some studies incorporate local preferences into energy system design through multi-criteria decision analysis (MCDA) and community focus groups [@bertsch:2016; @mckenna:2018; @zelt:2019]. But these studies rely on tools with pre-defined objectives which are difficult to modify. Without the ability to add objectives that reflect the concerns of a community, the priorities of that community will remain secondary to those of modelers and decision makers. A flexible and extensible multi-objective -framework that fulfills this need has not yet been developed. The `osier` -framework closes this gap. +framework that fulfills this need has not yet been developed. `osier` +closes this gap. # Design and Implementation The fundamental object in `osier` is an `osier.Technology` object, which From ede291670b80a319c1c91a6d61d3efff001654e6 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Thu, 5 Dec 2024 18:45:28 -0500 Subject: [PATCH 30/34] updates nrel dataset ref --- paper/paper.bib | 3 ++- paper/paper.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/paper/paper.bib b/paper/paper.bib index 10cf556..2f9751b 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -119,11 +119,12 @@ @article{mckenna:2018 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/N4X7U5L5/McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/DFTWLY3S/S0377221718300729.html} } -@misc{nationalrenewableenergylaboratory:2023, +@dataset{nationalrenewableenergylaboratory:2023, title = {2023 {{Annual Technology Baseline}} ({{ATB}})}, author = {{National Renewable Energy Laboratory}}, year = {2023}, urldate = {2024-02-26}, + url={https://atb.nrel.gov/} file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} } diff --git a/paper/paper.md b/paper/paper.md index 2782f17..e01b701 100644 --- a/paper/paper.md +++ b/paper/paper.md @@ -71,7 +71,7 @@ The fundamental object in `osier` is an `osier.Technology` object, which contains all of the necessary cost and performance data for different technology classes. `osier` comes pre-loaded with a variety of technologies described in the National Renewable Energy Laboratory's (NREL) Annual Technology Baseline -(ATB) dataset[@nationalrenewableenergylaboratory:2023] but users are also able +(ATB) dataset [@nationalrenewableenergylaboratory:2023] but users are also able to define their own. In order to run `osier`, users are required to supply an energy demand time series and a list of `osier.Technology` objects. Users can optionally provide weather data to incorporate solar or wind energy. From 8390636e331ff0b1b597ae7795f3fa3ccce62027 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Thu, 5 Dec 2024 18:47:04 -0500 Subject: [PATCH 31/34] adds missing comma to bib file --- paper/paper.bib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.bib b/paper/paper.bib index 2f9751b..4cbaa39 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -124,7 +124,7 @@ @dataset{nationalrenewableenergylaboratory:2023 author = {{National Renewable Energy Laboratory}}, year = {2023}, urldate = {2024-02-26}, - url={https://atb.nrel.gov/} + url={https://atb.nrel.gov/}, file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} } From b985c7494857f1c8eeb0e9ab8594801f692b48e9 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Thu, 5 Dec 2024 18:53:28 -0500 Subject: [PATCH 32/34] removes erroneous type. --- paper/paper.bib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.bib b/paper/paper.bib index 4cbaa39..0a72f54 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -119,7 +119,7 @@ @article{mckenna:2018 file = {/home/sam/snap/zotero-snap/common/Zotero/storage/N4X7U5L5/McKenna et al. - 2018 - Combining local preferences with multi-criteria de.pdf;/home/sam/snap/zotero-snap/common/Zotero/storage/DFTWLY3S/S0377221718300729.html} } -@dataset{nationalrenewableenergylaboratory:2023, +@misc{nationalrenewableenergylaboratory:2023, title = {2023 {{Annual Technology Baseline}} ({{ATB}})}, author = {{National Renewable Energy Laboratory}}, year = {2023}, From fe6d9b6bba370c97743ee382988324238423ae94 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Thu, 5 Dec 2024 18:57:19 -0500 Subject: [PATCH 33/34] adds place to nrel ref --- paper/paper.bib | 1 + 1 file changed, 1 insertion(+) diff --git a/paper/paper.bib b/paper/paper.bib index 0a72f54..c947c9f 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -125,6 +125,7 @@ @misc{nationalrenewableenergylaboratory:2023 year = {2023}, urldate = {2024-02-26}, url={https://atb.nrel.gov/}, + place={Golden, CO: National Renewable Energy Laboratory} file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} } From 068d746f411c6aa964977626ae05812dc79ba81a Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Thu, 5 Dec 2024 18:58:53 -0500 Subject: [PATCH 34/34] adds missing comma to bib file --- paper/paper.bib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paper/paper.bib b/paper/paper.bib index c947c9f..4fc0764 100644 --- a/paper/paper.bib +++ b/paper/paper.bib @@ -125,7 +125,7 @@ @misc{nationalrenewableenergylaboratory:2023 year = {2023}, urldate = {2024-02-26}, url={https://atb.nrel.gov/}, - place={Golden, CO: National Renewable Energy Laboratory} + place={Golden, CO: National Renewable Energy Laboratory}, file = {/home/sam/snap/zotero-snap/common/Zotero/storage/URRFWYVN/data.html} }