From 48f62475321c47c1f2f7e9a783607b7b7b372af6 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Tue, 11 Nov 2025 17:38:24 -0500 Subject: [PATCH 01/11] updates introduction to address committee feedback --- docs/1-introduction/1-introduction.tex | 87 ++++++++++++++++++-------- 1 file changed, 61 insertions(+), 26 deletions(-) diff --git a/docs/1-introduction/1-introduction.tex b/docs/1-introduction/1-introduction.tex index 5d59f26..d66a7fb 100644 --- a/docs/1-introduction/1-introduction.tex +++ b/docs/1-introduction/1-introduction.tex @@ -43,45 +43,81 @@ \FloatBarrier Therefore, to achieve the almost universally shared goal of halting and -reversing the effects of climate change \cite{united_nations_paris_2015}, our -globalized society must transition away from fossil fuels to clean energy -technologies such as nuclear and renewable energy and switch our transportation -systems to electric or hydrogen powered vehicles -\cite{intergovernmental_panel_on_climate_change_climate_2021}. - +reversing the effects of anthropogenic climate change +\cite{united_nations_paris_2015}, our globalized society must transition away +from fossil fuels to clean energy technologies such as nuclear and renewable +energy and switch our transportation systems to electric or hydrogen powered +vehicles \cite{intergovernmental_panel_on_climate_change_climate_2021}. Naturally, the importance of modeling energy systems to gain insight and form strategies to achieve this transition has grown. Especially since the spatial and temporal complexities are also expected to grow with greater penetration of \ac{vre}, such as solar and wind energy --- two energy sources that are spatially diffuse and temporally challenging to predict. A class of tools called \acp{esom} are the most common method for understanding our energy systems. -However, while climate change may be the most immediate existential threat to -society \cite{hickman_climate_2021}, it is a focusing issue that brings -challenges of equity and disproportional impacts to the fore. These latter -challenges have always been concomitant with our energy system, but energy -system modeling has largely ignored the ways energy systems mediate -socio-political power alongside transporting electrons and fuel. For example, -fossil fueled power plants have always been associated with air pollution and -worsened health for nearby communities --- commonly poorer and black -communities, which are already marginalized, evincing a violation of fairness -and justice principles \cite{mohai_which_2015}. Studying these consequences of -our energy choices historically belonged to domain of the environmental justice -literature \cite{schlosberg_reconceiving_2004,mohai_environmental_2009} but has -developed further into the discipline of energy justice -\cite{sovacool_energy_2015}. + +However, current \acp{esom} face critical limitations that hinder their ability +to support a just energy transition. Existing \acp{esom} optimize exclusively +for cost, providing decision-makers with +a single ``best'' solution. Yet real-world energy decisions involve tradeoffs +among multiple competing objectives, such as cost, carbon emissions, job +creation, land use, and equity considerations. This single-objective approach +prevents meaningful public engagement, since communities cannot deliberate over +priorities when presented with only one supposedly optimal answer. Further, +while climate change is among the most immediate existential threats to society +\cite{hickman_climate_2021}, it is also a focusing issue that brings challenges +of equity and disproportional impacts to the fore. These latter challenges have +always been concomitant with our energy system, but energy system modeling has +largely ignored the ways energy systems mediate socio-political power alongside +transporting electrons and fuel. For example, fossil fueled power plants have +always been associated with air pollution and worsened health for nearby +communities --- commonly poorer and black communities, which are already +marginalized, evincing a violation of fairness and justice principles +\cite{mohai_which_2015}. +% Studying these consequences of our energy choices historically belonged to +% domain of the environmental justice literature +% \cite{schlosberg_reconceiving_2004,mohai_environmental_2009} but has developed +% further into the discipline of energy justice \cite{sovacool_energy_2015}. + +This thesis addresses these limitations by developing \acl{osier}, a tool +designed to enhance democratic engagement in energy planning. \ac{osier} stores +comprehensive information about energy generation technologies (e.g., wind, +solar, nuclear, natural gas, etc.), including their costs, carbon emissions, +land use requirements, generation variability, and other relevant +characteristics. Users provide energy demand data and specify multiple, +simultaneous competing goals (e.g., minimizing cost while maximizing local jobs +and minimizing \ac{co2} emissions). \ac{osier} then identifies multiple optimal +energy portfolios --- each specifying how much of each technology type should be +installed to meet energy demand --- that represent different balances between +these competing objectives. Rather than prescribing a single solution, +\ac{osier} generates a set of co-optimal solutions, called a \textit{Pareto +front}, where improving one objective necessarily worsens another, making +tradeoffs explicit and negotiable. + +It is important to clarify what \ac{osier} is and is not. \ac{osier} is a +prescriptive optimization tool, not a projection or forecasting model. It +identifies what should be built to achieve specified goals rather than +predicting what will happen under various scenarios. \ac{osier} cannot model +unquantifiable values that defy mathematical formulation, though it can optimize +proxy metrics (such as using job creation as a proxy for economic development). +The tool's power lies in making quantifiable tradeoffs explicit and structured, +thereby enhancing rather than replacing human deliberation. Beyond planning, +\ac{osier} can serve as an accountability tool, enabling communities and +advocacy organizations to evaluate whether implemented energy policies align +with stated priorities. + The energy transition will require a great expansion of our energy -infrastructure to build replace fossil-fueled energy with clean energy and +infrastructure to replace fossil-fueled energy with clean energy and additional transmission networks to carry electrons. Although the technology to accomplish this transition is mature, there is still local public opposition to -many energy projects \cite{wolsink_wind_2007}. Particularly in empowered and +many energy projects \cite{wolsink_wind_2007}, particularly in empowered and affluent communities \cite{stokes_prevalence_2023}. \acp{esom} cannot capture these ``human dimensions'' of energy systems despite some awareness of their importance \cite{pfenninger_energy_2014}. This is because they only optimize a single objective --- cost (or some other aggregated economic metric). People -have and express preferences over many dimensions simultaneously. Further, even -in the absence of climate change, incorporating social context into the practice -of energy modeling remains beneficial since doing so will create substantively +have and express preferences over many dimensions simultaneously. Further, even in +the absence of climate change, incorporating social context into the practice of +energy modeling remains beneficial since doing so will create substantively better decisions \cite{wilsdon_see-through_2004}. The solution for enclosing this feature of energy system design proposed in this thesis is two-fold. The first is to develop an \ac{esom} capable of multi-objective optimization. The @@ -89,7 +125,6 @@ only recent advances in computing power have made them a practical method for energy modeling. Hobbs (1995) wrote: -% \cite{hobbs_optimization_1995}. \begin{quote} \blockcquote[p.12]{hobbs_optimization_1995}{Multi-objective methods are more appropriately used to help people to understand the problem better, explore From ae796a30a73befd92d330bed4aa471cc1d14a6ac Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Tue, 11 Nov 2025 17:49:13 -0500 Subject: [PATCH 02/11] addresses some singer comments --- docs/2-literature/21-esoms.tex | 6 +++--- docs/2-literature/23-social-movements.tex | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/2-literature/21-esoms.tex b/docs/2-literature/21-esoms.tex index d87dab3..07c61a8 100644 --- a/docs/2-literature/21-esoms.tex +++ b/docs/2-literature/21-esoms.tex @@ -8,7 +8,7 @@ \section{Modeling Energy Systems} available \acp{esom} seldom consider the role of energy systems in creating and maintaining inequitable distributions of burdens. \acp{esom} vary significantly by the energy sectors they choose to model, the degree of physical detail, -uncertainty quanitification, and forecasting capabilities. Table \ref{tab:esoms} +uncertainty quanitification, and forecasting capabilities. Table~\ref{tab:esoms} summarizes the capabilities for a comprehensive list of energy system analysis tools. These tools are approximately sorted by mathematical formulation, e.g. explicit optimization or simulation. The ``\ac{milp}'' column indicates whether @@ -20,7 +20,7 @@ \section{Modeling Energy Systems} None of the tools in Table \ref{tab:esoms} are designed to handle simultaneous optimization (i.e., \ac{moo}). For those modeling frameworks that have an ``objective'' in Table \ref{tab:esoms}, virtually all of them optimize system -costs. EnergyScope is the only exception to this, which allows users to optimize +costs. EnergyScope is the only exception to this; it allows users to optimize \ac{ghg} emissions \cite{limpens_energyscope_2019}. \textcolor{black}{The ``uncertainty'' column indicates a feature to algorithmically generate model runs for testing either parametric or structural uncertainties. @@ -153,7 +153,7 @@ \subsection{Economic Dispatch and Social Welfare} \cite{richstein_cross-border_2014}}. This simplification is valid because demand for energy is highly inelastic \cite{heuberger_power_2017, eia_price_2021, labandeira_meta-analysis_2017, csereklyei_price_2020}. Figure -\ref{fig:inelastic} shows the impact of highly inelastic demand. +\ref{fig:inelastic} shows the impact of completely inelastic demand. \begin{figure}[H] \centering diff --git a/docs/2-literature/23-social-movements.tex b/docs/2-literature/23-social-movements.tex index 3d20930..f20ea87 100644 --- a/docs/2-literature/23-social-movements.tex +++ b/docs/2-literature/23-social-movements.tex @@ -18,7 +18,7 @@ \section{Characterizing the Problem of Climate Change} vulnerabilities to its hazards are not uniformly distributed. On the contrary, the people and communities most likely to be harmed by climate change are already harmed by social inequities, a feature called -\textit{disproportionality} \cite{islam_climate_2017}. For example, low-income +\textit{disproportionality}~\cite{islam_climate_2017}. For example, low-income communities have fewer resources to respond to natural hazards, such as hurricanes, floods, or fires, and therefore take longer to recover, compared to a communities with relatively greater wealth. Recent work from Simpson et al. @@ -37,11 +37,11 @@ \section{Characterizing the Problem of Climate Change} dehghanpour_agent-based_2018} to community responses \cite{paterson_community-based_2019, elmallah_frontlining_2022}, national level policies \cite{roelfsema_taking_2020, fawzy_strategies_2020}, and levels in -between. Paterson and Charles \cite{paterson_community-based_2019} developed a +between. Paterson and Charles developed a descriptive typology for community-based hazard responses that also applies to national and global scales. The five response categories making up this typology -are: -\cite{paterson_community-based_2019} +are +\cite{paterson_community-based_2019}: \begin{enumerate} \item individual and material well-being, which seek to meet individuals' basic needs such as food, water, and shelter, as well as livelihood and From d03a834f8ac59fbc1733917c80380678e2e26066 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Tue, 11 Nov 2025 18:33:24 -0500 Subject: [PATCH 03/11] updates fuel cycle options urls --- analysis/Snakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/analysis/Snakefile b/analysis/Snakefile index 510c577..119a816 100644 --- a/analysis/Snakefile +++ b/analysis/Snakefile @@ -270,8 +270,8 @@ rule benchmark_chapter: done """ #============================EXAMPLES CHAPTER================================ -app_d_url = "https://fuelcycleevaluation.inl.gov/Shared%20Documents/ES%20Appendix%20D.pdf" -app_c_url = "https://fuelcycleevaluation.inl.gov/Shared%20Documents/ES%20Appendix%20C.pdf" +app_d_url = "https://sai.inl.gov/content/uploads/29/2024/11/es_appendix_d.pdf" +app_c_url = "https://sai.inl.gov/content/uploads/29/2024/11/es_appendix_c.pdf" atbe_url = "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/csv/2024/v3.0.0/ATBe.csv" rule retrieve_fuel_cycles_report_D: From afeaac5971f3348565e452545c58bc1e7cace4bb Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Tue, 11 Nov 2025 19:13:57 -0500 Subject: [PATCH 04/11] tries a fix for the CI workflow --- .github/workflows/CI.yml | 4 ++ analysis/introduction_chapter_dag.png | Bin 24328 -> 24380 bytes .../05-examples-scripts/solve_datacenter.py | 3 +- docs/00-outline.tex | 36 +++++++++--------- docs/tables/summary_data.tex | 21 ---------- 5 files changed, 24 insertions(+), 40 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a670230..3e1af2f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -77,7 +77,11 @@ jobs: # Execute the Snakemake workflow - name: Run Snakemake workflow + shell: bash -l {0} # Explicitly use login shell run: | + conda activate 2025-dotson-thesis + which python + which snakemake cd analysis && snakemake -j2 # Upload the generated PDF as an artifact diff --git a/analysis/introduction_chapter_dag.png b/analysis/introduction_chapter_dag.png index bfe58fcdc40110a82d70be58c1925e0011aa6f4e..ff1ec2682832a20ad3875c469bcd1d7ce61426b8 100644 GIT binary patch literal 24380 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≶mmUkcbPWWK@( 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 literal 24328 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 bI^D)<*%-_6S|AE0}T(+eiNg>oWqR diff --git a/analysis/scripts/05-examples-scripts/solve_datacenter.py b/analysis/scripts/05-examples-scripts/solve_datacenter.py index 38a000c..0f93219 100644 --- a/analysis/scripts/05-examples-scripts/solve_datacenter.py +++ b/analysis/scripts/05-examples-scripts/solve_datacenter.py @@ -37,10 +37,11 @@ with open(snakemake.input.dc_problem, "rb") as file: problem = pickle.load(file) + use_checkpoints = False checkpoint_list = glob("checkpoint_*.pkl") checkpoint_list.sort() - if len(checkpoint_list) > 0: + if (len(checkpoint_list) > 0) and use_checkpoints: with open(checkpoint_list[-1], 'rb') as f: algorithm = pickle.load(f) algorithm.termination = MaximumGenerationTermination(200) diff --git a/docs/00-outline.tex b/docs/00-outline.tex index 9a6e9f5..f337a03 100644 --- a/docs/00-outline.tex +++ b/docs/00-outline.tex @@ -2,26 +2,26 @@ \chapter{Introduction} \label{chapter:introduction} \input{1-introduction/1-introduction.tex} -% \chapter{Literature Review} -% \label{chapter:lit-review} -% \input{2-literature/20-literature} +\chapter{Literature Review} +\label{chapter:lit-review} +\input{2-literature/20-literature} -% \chapter{\acf{osier}} -% \label{chapter:osier} -% \input{3-osier/30-intro} +\chapter{\acf{osier}} +\label{chapter:osier} +\input{3-osier/30-intro} -% \chapter{Benchmark Results} -% \label{chapter:benchmark-results} -% \input{4-benchmark-results/40-benchmark.tex} +\chapter{Benchmark Results} +\label{chapter:benchmark-results} +\input{4-benchmark-results/40-benchmark.tex} -% \chapter{Examples with \acs{osier}} -% \label{chapter:examples} -% \input{5-examples/50-intro.tex} +\chapter{Examples with \acs{osier}} +\label{chapter:examples} +\input{5-examples/50-intro.tex} -% \chapter{Energy modeling, planning, and justice} -% \label{chapter:communities} -% \input{7-interviews/70-outline} +\chapter{Energy modeling, planning, and justice} +\label{chapter:communities} +\input{7-interviews/70-outline} -% \chapter{Conclusions} -% \label{chapter:conclusions} -% \input{8-conclusion/80-conclusion.tex} +\chapter{Conclusions} +\label{chapter:conclusions} +\input{8-conclusion/80-conclusion.tex} diff --git a/docs/tables/summary_data.tex b/docs/tables/summary_data.tex index aa3a4bf..7dae8fc 100644 --- a/docs/tables/summary_data.tex +++ b/docs/tables/summary_data.tex @@ -3,62 +3,41 @@ & Fuel Cycle Type & Reactor Type & EST Conclusion & Pareto Optimal \\ EG & & & & \\ \midrule -\rowcolor{orange} EG01 & once-through & PWR & Not promising & True \\ -\rowcolor{orange} EG02 & once-through & HTGR & Not promising & True \\ -\rowcolor{orange} EG03 & once-through & HWR & Not promising & True \\ -\rowcolor{lime} EG04 & once-through & SFR & Less promising & True \\ -\rowcolor{orange} EG05 & once-through & HTGR & Not promising & True \\ EG06 & once-through & FFH & Potentially promising & True \\ -\rowcolor{yellow} EG07 & once-through & ADS & Potentially promising & False \\ EG08 & once-through & FFH & Potentially promising & True \\ EG09 & limited-recycle & SFR & Potentially promising & True \\ EG10 & limited-recycle & MSR & Less promising & True \\ EG11 & limited-recycle & SFR & Not promising & False \\ -\rowcolor{orange} EG12 & limited-recycle & HWR & Not promising & True \\ -\rowcolor{orange} EG13 & limited-recycle & PWR & Not promising & True \\ EG14 & limited-recycle & SFR & Less promising & True \\ -\rowcolor{orange} EG15 & limited-recycle & SFR & Not promising & True \\ EG16 & limited-recycle & ADS & Not promising & False \\ -\rowcolor{orange} EG17 & limited-recycle & PWR & Not promising & True \\ -\rowcolor{orange} EG18 & limited-recycle & PWR & Not promising & True \\ -\rowcolor{orange} EG19 & continuous-recycle & HWR & Not promising & True \\ -\rowcolor{orange} EG20 & continuous-recycle & HWR & Not promising & True \\ -\rowcolor{orange} EG21 & continuous-recycle & PWR & Not promising & True \\ -\rowcolor{orange} EG22 & continuous-recycle & PWR & Not promising & True \\ EG23 & continuous-recycle & SFR & Most promising & True \\ EG24 & continuous-recycle & SFR & Most promising & True \\ -\rowcolor{orange} EG25 & continuous-recycle & PWR & Not promising & True \\ EG26 & continuous-recycle & MSR & Potentially promising & True \\ EG27 & continuous-recycle & SFR & Not promising & False \\ EG28 & continuous-recycle & SFR & Potentially promising & True \\ EG29 & continuous-recycle & SFR & Most promising & True \\ EG30 & continuous-recycle & SFR & Most promising & True \\ -\rowcolor{orange} EG31 & continuous-recycle & SFR & Not promising & True \\ -\rowcolor{orange} EG32 & continuous-recycle & SFR & Not promising & True \\ -\rowcolor{yellow} EG33 & continuous-recycle & ADS & Potentially promising & False \\ -\rowcolor{yellow} EG34 & continuous-recycle & ADS & Potentially promising & False \\ EG35 & continuous-recycle & ADS & Not promising & False \\ -\rowcolor{orange} EG36 & continuous-recycle & ADS & Not promising & True \\ EG37 & continuous-recycle & SFR & Potentially promising & True \\ EG38 & continuous-recycle & SFR & Potentially promising & True \\ From 321cccfd2ea627f4c3a4c4d8c569565980c476de Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Wed, 12 Nov 2025 09:01:07 -0500 Subject: [PATCH 05/11] DEBUG: updates environment file and temporarily removes latex step --- .github/workflows/CI.yml | 34 +++++++++++++++++----------------- environment.yml | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3e1af2f..2409da1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -57,23 +57,23 @@ jobs: ${{ runner.os }}-latex- # Install LaTeX on each OS - - name: Install LaTeX - env: - CACHE_HIT: ${{ steps.latex-cache.outputs.cache-hit }} - run: | - if [[ ${{ matrix.os }} == 'ubuntu-latest' ]]; then - sudo apt-get update - sudo apt-get install -y texlive-full biber - elif [[ ${{ matrix.os }} == 'macos-latest' ]]; then - brew install --cask mactex-no-gui - sudo tlmgr update --self && sudo tlmgr install biber - elif [[ ${{ matrix.os }} == 'windows-latest' ]]; then - choco install miktex -y - miktexsetup finish - initexmf --update-fndb - initexmf --mklinks - initexmf --mklangs - fi + # - name: Install LaTeX + # env: + # CACHE_HIT: ${{ steps.latex-cache.outputs.cache-hit }} + # run: | + # if [[ ${{ matrix.os }} == 'ubuntu-latest' ]]; then + # sudo apt-get update + # sudo apt-get install -y texlive-full biber + # elif [[ ${{ matrix.os }} == 'macos-latest' ]]; then + # brew install --cask mactex-no-gui + # sudo tlmgr update --self && sudo tlmgr install biber + # elif [[ ${{ matrix.os }} == 'windows-latest' ]]; then + # choco install miktex -y + # miktexsetup finish + # initexmf --update-fndb + # initexmf --mklinks + # initexmf --mklangs + # fi # Execute the Snakemake workflow - name: Run Snakemake workflow diff --git a/environment.yml b/environment.yml index 48ab524..aeb3025 100644 --- a/environment.yml +++ b/environment.yml @@ -54,7 +54,7 @@ dependencies: - deap - dill - openpyxl - - git+https://github.com/arfc/osier.git + - osier - highspy - python-dotenv - git+https://github.com/kmax12/gridstatus.git From 7990bd45ade2c880ab4934e48d1b69a9e03062b3 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Wed, 12 Nov 2025 09:56:38 -0500 Subject: [PATCH 06/11] DEBUG: reverts change to environment file, adds debugging rule to workflow --- .github/workflows/CI.yml | 14 ++++++++++++++ environment.yml | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2409da1..1605379 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -74,6 +74,20 @@ jobs: # initexmf --mklinks # initexmf --mklangs # fi + + - name: Debug conda environment + shell: bash -l {0} + run: | + echo "Conda info:" + conda info + echo "Conda envs:" + conda env list + echo "Current PATH:" + echo $PATH + echo "Which python:" + which python + echo "Which snakemake:" + which snakemake || echo "snakemake not found" # Execute the Snakemake workflow - name: Run Snakemake workflow diff --git a/environment.yml b/environment.yml index aeb3025..48ab524 100644 --- a/environment.yml +++ b/environment.yml @@ -54,7 +54,7 @@ dependencies: - deap - dill - openpyxl - - osier + - git+https://github.com/arfc/osier.git - highspy - python-dotenv - git+https://github.com/kmax12/gridstatus.git From 208dbf11a4ddd3a5d3c81644500a6398d59daa1f Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Wed, 12 Nov 2025 10:01:24 -0500 Subject: [PATCH 07/11] includes the latex install rule -- should work now. --- .github/workflows/CI.yml | 34 +++++++++++++-------------- data/metric_data.csv | 41 -------------------------------- docs/tables/metric_data.tex | 47 ------------------------------------- 3 files changed, 17 insertions(+), 105 deletions(-) delete mode 100644 data/metric_data.csv delete mode 100644 docs/tables/metric_data.tex diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 1605379..a275511 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -57,23 +57,23 @@ jobs: ${{ runner.os }}-latex- # Install LaTeX on each OS - # - name: Install LaTeX - # env: - # CACHE_HIT: ${{ steps.latex-cache.outputs.cache-hit }} - # run: | - # if [[ ${{ matrix.os }} == 'ubuntu-latest' ]]; then - # sudo apt-get update - # sudo apt-get install -y texlive-full biber - # elif [[ ${{ matrix.os }} == 'macos-latest' ]]; then - # brew install --cask mactex-no-gui - # sudo tlmgr update --self && sudo tlmgr install biber - # elif [[ ${{ matrix.os }} == 'windows-latest' ]]; then - # choco install miktex -y - # miktexsetup finish - # initexmf --update-fndb - # initexmf --mklinks - # initexmf --mklangs - # fi + - name: Install LaTeX + env: + CACHE_HIT: ${{ steps.latex-cache.outputs.cache-hit }} + run: | + if [[ ${{ matrix.os }} == 'ubuntu-latest' ]]; then + sudo apt-get update + sudo apt-get install -y texlive-full biber + elif [[ ${{ matrix.os }} == 'macos-latest' ]]; then + brew install --cask mactex-no-gui + sudo tlmgr update --self && sudo tlmgr install biber + elif [[ ${{ matrix.os }} == 'windows-latest' ]]; then + choco install miktex -y + miktexsetup finish + initexmf --update-fndb + initexmf --mklinks + initexmf --mklangs + fi - name: Debug conda environment shell: bash -l {0} diff --git a/data/metric_data.csv b/data/metric_data.csv deleted file mode 100644 index 1836c44..0000000 --- a/data/metric_data.csv +++ /dev/null @@ -1,41 +0,0 @@ -EG,mass snf hlw disposal [t/GWe-yr],activity at 100 yrs [Ci/GWe-yr],activity at 100k years [Ci/GWe-yr],mass du ru rth disposal [t/GWe-yr],volume llw disposal [m3],safety challenges [Data],land use [km2/GWe-yr],water use [ML/GWe-yr],carbon dioxide emissions [CO2/GWe-yr],total worker dose [person-mSv/GWe-yr],natural uranium required [t/GWe-yr],natural thorium utilization [t/GWe-yr],development cost [Data],development time [Data],foak cost [Data],incompatibility [Data],unfamiliarity [Data] -EG01,21.92,1340000.0,1650.0,166.67,398.84,0.0,0.175,23891.0,44.1,1.1,188.63,0.0,0.0,0.0,0.0,0.0,0.0 -EG02,9.22,1430000.0,2050.0,296.48,414.23,0.0,0.21,23994.0,54.9,1.28,305.73,0.0,1.0,1.0,1.0,0.0,0.0 -EG03,147.57,1340000.0,2460.0,0.0,373.0,0.0,0.247,23924.0,87.1,2.41,147.87,0.0,0.0,0.0,0.0,1.0,1.0 -EG04,3.99,805000.0,1640.0,0.0,278.6,0.0,0.082,23706.0,13.5,1.22,4.0,0.0,2.0,2.0,2.0,2.0,2.0 -EG05,11.41,1390000.0,7380.0,282.41,412.58,0.0,0.206,23981.0,53.9,1.27,289.2,4.65,1.0,1.0,1.0,3.0,3.0 -EG06,9.86,1770000.0,13000.0,0.0,835.32,1.0,0.119,31308.0,59.1,2.81,0.0,9.88,3.0,2.0,3.0,2.0,3.0 -EG07,31.97,1780000.0,9480.0,0.0,342.2,1.0,0.167,37831.0,45.7,4.54,32.03,0.0,3.0,2.0,3.0,2.0,3.0 -EG08,1.62,909000.0,1690.0,0.0,826.47,1.0,0.109,33640.0,25.4,2.93,0.0,1.62,3.0,2.0,3.0,2.0,3.0 -EG09,2.24,882000.0,942.0,0.0,359.0,0.0,0.081,23709.0,17.5,1.21,2.25,0.0,3.0,2.0,4.0,2.0,3.0 -EG10,10.84,1420000.0,10800.0,0.0,2796.69,0.0,0.098,23767.0,79.5,0.61,0.0,10.86,3.0,2.0,4.0,2.0,3.0 -EG11,4.54,1020000.0,9140.0,104.29,401.01,0.0,0.126,23810.0,31.8,1.4,106.8,2.05,3.0,2.0,4.0,2.0,3.0 -EG12,7.27,1400000.0,1420.0,104.96,1646.12,0.0,0.137,23912.0,113.3,2.02,112.46,0.0,4.0,3.0,3.0,1.0,2.0 -EG13,3.42,1330000.0,1320.0,167.69,621.88,0.0,0.156,23897.0,52.7,1.12,171.16,0.0,4.0,3.0,3.0,3.0,2.0 -EG14,8.34,1140000.0,1240.0,0.0,618.99,0.0,0.094,23728.0,28.5,1.18,8.38,0.0,2.0,2.0,4.0,1.0,2.0 -EG15,2.11,1240000.0,1140.0,169.81,611.53,0.0,0.149,23881.0,48.8,1.12,171.96,0.0,2.0,2.0,3.0,3.0,2.0 -EG16,1.52,1260000.0,1030.0,175.99,630.76,1.0,0.152,24495.0,50.9,1.26,177.56,0.0,3.0,2.0,4.0,3.0,3.0 -EG17,3.37,1330000.0,3090.0,170.88,624.09,0.0,0.151,23883.0,49.9,1.1,172.41,1.88,2.0,2.0,4.0,3.0,3.0 -EG18,6.95,1450000.0,6950.0,148.6,567.72,0.0,0.147,23861.0,43.9,1.04,152.16,3.42,3.0,2.0,4.0,3.0,3.0 -EG19,2.59,1140000.0,765.0,65.54,2134.12,0.0,0.121,23897.0,127.9,2.04,68.41,0.0,4.0,3.0,3.0,1.0,2.0 -EG20,2.61,1050000.0,557.0,69.36,2343.8,0.0,0.123,23909.0,134.9,2.06,72.26,0.0,3.0,2.0,4.0,1.0,3.0 -EG21,1.46,1140000.0,800.0,157.51,678.04,0.0,0.143,23874.0,51.1,1.05,159.02,0.0,4.0,3.0,3.0,3.0,2.0 -EG22,1.39,994000.0,581.0,175.42,691.19,0.0,0.15,23891.0,53.3,1.08,176.86,0.0,3.0,2.0,4.0,3.0,3.0 -EG23,1.31,1030000.0,728.0,0.0,549.49,0.0,0.081,23717.0,24.1,1.21,1.34,0.0,2.0,2.0,3.0,2.0,2.0 -EG24,1.34,1040000.0,606.0,0.0,561.42,0.0,0.082,23717.0,24.1,1.21,1.37,0.0,3.0,2.0,4.0,2.0,3.0 -EG25,1.51,1300000.0,864.0,112.81,853.46,0.0,0.128,23839.0,51.5,0.95,113.54,0.85,3.0,2.0,4.0,2.0,3.0 -EG26,1.25,1300000.0,1370.0,0.0,2830.6,0.0,0.086,23762.0,77.3,0.55,0.0,1.25,3.0,2.0,4.0,2.0,3.0 -EG27,2.25,1300000.0,3620.0,184.74,1160.73,0.0,0.16,23909.0,67.3,1.54,186.62,0.45,3.0,2.0,4.0,2.0,3.0 -EG28,1.58,1180000.0,3010.0,0.0,1168.72,0.0,0.086,23748.0,50.1,1.24,0.0,1.68,3.0,2.0,4.0,2.0,3.0 -EG29,1.45,1130000.0,917.0,0.0,662.22,0.0,0.083,23725.0,30.5,1.02,1.49,0.0,2.0,2.0,4.0,1.0,2.0 -EG30,1.3,954000.0,571.0,0.0,602.99,0.0,0.081,23719.0,26.1,1.14,1.33,0.0,3.0,2.0,4.0,1.0,3.0 -EG31,1.37,1180000.0,697.0,136.55,567.85,0.0,0.134,23847.0,42.7,1.13,137.96,0.0,2.0,2.0,3.0,1.0,2.0 -EG32,1.32,1080000.0,519.0,127.15,579.27,0.0,0.13,23838.0,41.6,1.13,128.5,0.0,3.0,2.0,4.0,1.0,3.0 -EG33,1.59,1220000.0,879.0,0.0,753.51,1.0,0.095,27521.0,39.1,2.84,1.64,0.0,3.0,2.0,4.0,1.0,3.0 -EG34,1.5,1070000.0,669.0,0.0,696.42,1.0,0.093,27104.0,38.2,2.7,1.55,0.0,5.0,2.0,4.0,1.0,3.0 -EG35,1.42,1200000.0,741.0,163.92,621.45,1.0,0.149,24957.0,49.5,1.43,165.37,0.0,3.0,2.0,4.0,3.0,3.0 -EG36,1.39,1020000.0,535.0,149.1,735.16,1.0,0.14,23887.0,49.7,1.14,150.54,0.0,5.0,2.0,4.0,3.0,3.0 -EG37,1.33,1120000.0,762.0,23.42,624.52,0.0,0.091,23717.0,31.9,1.01,24.36,0.43,3.0,2.0,4.0,1.0,3.0 -EG38,1.79,1270000.0,3170.0,0.0,1518.73,1.0,0.09,23770.0,67.0,1.18,0.0,1.93,3.0,2.0,4.0,1.0,3.0 -EG39,1.4,1300000.0,763.0,114.17,677.49,1.0,0.13,24623.0,41.7,1.14,114.85,0.75,5.0,2.0,4.0,3.0,3.0 -EG40,1.47,1490000.0,1280.0,0.0,592.98,1.0,0.094,27306.0,29.4,1.49,0.0,1.51,5.0,2.0,4.0,3.0,3.0 diff --git a/docs/tables/metric_data.tex b/docs/tables/metric_data.tex deleted file mode 100644 index 1404e92..0000000 --- a/docs/tables/metric_data.tex +++ /dev/null @@ -1,47 +0,0 @@ -\begin{tabular}{lrrrrrrrrrrrrrrrrr} -\toprule - & mass snf hlw disposal [t/GWe-yr] & activity at 100 yrs [Ci/GWe-yr] & activity at 100k years [Ci/GWe-yr] & mass du ru rth disposal [t/GWe-yr] & volume llw disposal [m3] & safety challenges [Data] & land use [km2/GWe-yr] & water use [ML/GWe-yr] & carbon dioxide emissions [CO2/GWe-yr] & total worker dose [person-mSv/GWe-yr] & natural uranium required [t/GWe-yr] & natural thorium utilization [t/GWe-yr] & development cost [Data] & development time [Data] & foak cost [Data] & incompatibility [Data] & unfamiliarity [Data] \\ -EG & & & & & & & & & & & & & & & & & \\ -\midrule -EG01 & 21.92 & 1340000.00 & 1650.00 & 166.67 & 398.84 & 0.00 & 0.17 & 23891.00 & 44.10 & 1.10 & 188.63 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 & 0.00 \\ -EG02 & 9.22 & 1430000.00 & 2050.00 & 296.48 & 414.23 & 0.00 & 0.21 & 23994.00 & 54.90 & 1.28 & 305.73 & 0.00 & 1.00 & 1.00 & 1.00 & 0.00 & 0.00 \\ -EG03 & 147.57 & 1340000.00 & 2460.00 & 0.00 & 373.00 & 0.00 & 0.25 & 23924.00 & 87.10 & 2.41 & 147.87 & 0.00 & 0.00 & 0.00 & 0.00 & 1.00 & 1.00 \\ -EG04 & 3.99 & 805000.00 & 1640.00 & 0.00 & 278.60 & 0.00 & 0.08 & 23706.00 & 13.50 & 1.22 & 4.00 & 0.00 & 2.00 & 2.00 & 2.00 & 2.00 & 2.00 \\ -EG05 & 11.41 & 1390000.00 & 7380.00 & 282.41 & 412.58 & 0.00 & 0.21 & 23981.00 & 53.90 & 1.27 & 289.20 & 4.65 & 1.00 & 1.00 & 1.00 & 3.00 & 3.00 \\ -EG06 & 9.86 & 1770000.00 & 13000.00 & 0.00 & 835.32 & 1.00 & 0.12 & 31308.00 & 59.10 & 2.81 & 0.00 & 9.88 & 3.00 & 2.00 & 3.00 & 2.00 & 3.00 \\ -EG07 & 31.97 & 1780000.00 & 9480.00 & 0.00 & 342.20 & 1.00 & 0.17 & 37831.00 & 45.70 & 4.54 & 32.03 & 0.00 & 3.00 & 2.00 & 3.00 & 2.00 & 3.00 \\ -EG08 & 1.62 & 909000.00 & 1690.00 & 0.00 & 826.47 & 1.00 & 0.11 & 33640.00 & 25.40 & 2.93 & 0.00 & 1.62 & 3.00 & 2.00 & 3.00 & 2.00 & 3.00 \\ -EG09 & 2.24 & 882000.00 & 942.00 & 0.00 & 359.00 & 0.00 & 0.08 & 23709.00 & 17.50 & 1.21 & 2.25 & 0.00 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG10 & 10.84 & 1420000.00 & 10800.00 & 0.00 & 2796.69 & 0.00 & 0.10 & 23767.00 & 79.50 & 0.61 & 0.00 & 10.86 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG11 & 4.54 & 1020000.00 & 9140.00 & 104.29 & 401.01 & 0.00 & 0.13 & 23810.00 & 31.80 & 1.40 & 106.80 & 2.05 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG12 & 7.27 & 1400000.00 & 1420.00 & 104.96 & 1646.12 & 0.00 & 0.14 & 23912.00 & 113.30 & 2.02 & 112.46 & 0.00 & 4.00 & 3.00 & 3.00 & 1.00 & 2.00 \\ -EG13 & 3.42 & 1330000.00 & 1320.00 & 167.69 & 621.88 & 0.00 & 0.16 & 23897.00 & 52.70 & 1.12 & 171.16 & 0.00 & 4.00 & 3.00 & 3.00 & 3.00 & 2.00 \\ -EG14 & 8.34 & 1140000.00 & 1240.00 & 0.00 & 618.99 & 0.00 & 0.09 & 23728.00 & 28.50 & 1.18 & 8.38 & 0.00 & 2.00 & 2.00 & 4.00 & 1.00 & 2.00 \\ -EG15 & 2.11 & 1240000.00 & 1140.00 & 169.81 & 611.53 & 0.00 & 0.15 & 23881.00 & 48.80 & 1.12 & 171.96 & 0.00 & 2.00 & 2.00 & 3.00 & 3.00 & 2.00 \\ -EG16 & 1.52 & 1260000.00 & 1030.00 & 175.99 & 630.76 & 1.00 & 0.15 & 24495.00 & 50.90 & 1.26 & 177.56 & 0.00 & 3.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -EG17 & 3.37 & 1330000.00 & 3090.00 & 170.88 & 624.09 & 0.00 & 0.15 & 23883.00 & 49.90 & 1.10 & 172.41 & 1.88 & 2.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -EG18 & 6.95 & 1450000.00 & 6950.00 & 148.60 & 567.72 & 0.00 & 0.15 & 23861.00 & 43.90 & 1.04 & 152.16 & 3.42 & 3.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -EG19 & 2.59 & 1140000.00 & 765.00 & 65.54 & 2134.12 & 0.00 & 0.12 & 23897.00 & 127.90 & 2.04 & 68.41 & 0.00 & 4.00 & 3.00 & 3.00 & 1.00 & 2.00 \\ -EG20 & 2.61 & 1050000.00 & 557.00 & 69.36 & 2343.80 & 0.00 & 0.12 & 23909.00 & 134.90 & 2.06 & 72.26 & 0.00 & 3.00 & 2.00 & 4.00 & 1.00 & 3.00 \\ -EG21 & 1.46 & 1140000.00 & 800.00 & 157.51 & 678.04 & 0.00 & 0.14 & 23874.00 & 51.10 & 1.05 & 159.02 & 0.00 & 4.00 & 3.00 & 3.00 & 3.00 & 2.00 \\ -EG22 & 1.39 & 994000.00 & 581.00 & 175.42 & 691.19 & 0.00 & 0.15 & 23891.00 & 53.30 & 1.08 & 176.86 & 0.00 & 3.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -EG23 & 1.31 & 1030000.00 & 728.00 & 0.00 & 549.49 & 0.00 & 0.08 & 23717.00 & 24.10 & 1.21 & 1.34 & 0.00 & 2.00 & 2.00 & 3.00 & 2.00 & 2.00 \\ -EG24 & 1.34 & 1040000.00 & 606.00 & 0.00 & 561.42 & 0.00 & 0.08 & 23717.00 & 24.10 & 1.21 & 1.37 & 0.00 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG25 & 1.51 & 1300000.00 & 864.00 & 112.81 & 853.46 & 0.00 & 0.13 & 23839.00 & 51.50 & 0.95 & 113.54 & 0.85 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG26 & 1.25 & 1300000.00 & 1370.00 & 0.00 & 2830.60 & 0.00 & 0.09 & 23762.00 & 77.30 & 0.55 & 0.00 & 1.25 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG27 & 2.25 & 1300000.00 & 3620.00 & 184.74 & 1160.73 & 0.00 & 0.16 & 23909.00 & 67.30 & 1.54 & 186.62 & 0.45 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG28 & 1.58 & 1180000.00 & 3010.00 & 0.00 & 1168.72 & 0.00 & 0.09 & 23748.00 & 50.10 & 1.24 & 0.00 & 1.68 & 3.00 & 2.00 & 4.00 & 2.00 & 3.00 \\ -EG29 & 1.45 & 1130000.00 & 917.00 & 0.00 & 662.22 & 0.00 & 0.08 & 23725.00 & 30.50 & 1.02 & 1.49 & 0.00 & 2.00 & 2.00 & 4.00 & 1.00 & 2.00 \\ -EG30 & 1.30 & 954000.00 & 571.00 & 0.00 & 602.99 & 0.00 & 0.08 & 23719.00 & 26.10 & 1.14 & 1.33 & 0.00 & 3.00 & 2.00 & 4.00 & 1.00 & 3.00 \\ -EG31 & 1.37 & 1180000.00 & 697.00 & 136.55 & 567.85 & 0.00 & 0.13 & 23847.00 & 42.70 & 1.13 & 137.96 & 0.00 & 2.00 & 2.00 & 3.00 & 1.00 & 2.00 \\ -EG32 & 1.32 & 1080000.00 & 519.00 & 127.15 & 579.27 & 0.00 & 0.13 & 23838.00 & 41.60 & 1.13 & 128.50 & 0.00 & 3.00 & 2.00 & 4.00 & 1.00 & 3.00 \\ -EG33 & 1.59 & 1220000.00 & 879.00 & 0.00 & 753.51 & 1.00 & 0.10 & 27521.00 & 39.10 & 2.84 & 1.64 & 0.00 & 3.00 & 2.00 & 4.00 & 1.00 & 3.00 \\ -EG34 & 1.50 & 1070000.00 & 669.00 & 0.00 & 696.42 & 1.00 & 0.09 & 27104.00 & 38.20 & 2.70 & 1.55 & 0.00 & 5.00 & 2.00 & 4.00 & 1.00 & 3.00 \\ -EG35 & 1.42 & 1200000.00 & 741.00 & 163.92 & 621.45 & 1.00 & 0.15 & 24957.00 & 49.50 & 1.43 & 165.37 & 0.00 & 3.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -EG36 & 1.39 & 1020000.00 & 535.00 & 149.10 & 735.16 & 1.00 & 0.14 & 23887.00 & 49.70 & 1.14 & 150.54 & 0.00 & 5.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -EG37 & 1.33 & 1120000.00 & 762.00 & 23.42 & 624.52 & 0.00 & 0.09 & 23717.00 & 31.90 & 1.01 & 24.36 & 0.43 & 3.00 & 2.00 & 4.00 & 1.00 & 3.00 \\ -EG38 & 1.79 & 1270000.00 & 3170.00 & 0.00 & 1518.73 & 1.00 & 0.09 & 23770.00 & 67.00 & 1.18 & 0.00 & 1.93 & 3.00 & 2.00 & 4.00 & 1.00 & 3.00 \\ -EG39 & 1.40 & 1300000.00 & 763.00 & 114.17 & 677.49 & 1.00 & 0.13 & 24623.00 & 41.70 & 1.14 & 114.85 & 0.75 & 5.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -EG40 & 1.47 & 1490000.00 & 1280.00 & 0.00 & 592.98 & 1.00 & 0.09 & 27306.00 & 29.40 & 1.49 & 0.00 & 1.51 & 5.00 & 2.00 & 4.00 & 3.00 & 3.00 \\ -\bottomrule -\end{tabular} From fd752ea87067470beae95628d69645e0ebe2f075 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Sat, 15 Nov 2025 11:43:17 -0500 Subject: [PATCH 08/11] updates environment file to install osier directly from pypi. This should work --- .github/workflows/CI.yml | 2 +- environment.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a275511..9f78880 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -96,7 +96,7 @@ jobs: conda activate 2025-dotson-thesis which python which snakemake - cd analysis && snakemake -j2 + cd analysis && snakemake -j2 --force # Upload the generated PDF as an artifact - name: Upload PDF artifact diff --git a/environment.yml b/environment.yml index 48ab524..aeb3025 100644 --- a/environment.yml +++ b/environment.yml @@ -54,7 +54,7 @@ dependencies: - deap - dill - openpyxl - - git+https://github.com/arfc/osier.git + - osier - highspy - python-dotenv - git+https://github.com/kmax12/gridstatus.git From 5a96a49716e897bb09c07e007636e70a60bcef12 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Mon, 17 Nov 2025 11:27:58 -0500 Subject: [PATCH 09/11] adds acknowledgements --- docs/02-acks.tex | 43 +++++++ docs/1-introduction/1-introduction.tex | 172 +++++++++++++------------ docs/2025-dotson-thesis.tex | 18 +-- 3 files changed, 136 insertions(+), 97 deletions(-) create mode 100644 docs/02-acks.tex diff --git a/docs/02-acks.tex b/docs/02-acks.tex new file mode 100644 index 0000000..9696101 --- /dev/null +++ b/docs/02-acks.tex @@ -0,0 +1,43 @@ +Writing a thesis can often feel like a solitary experience. Despite appearances, +such an endeavor is only possible through the collective support of mentors, +colleagues, friends, and family (and those friends who became family). + +I am profoundly indebted to my advisor and mentor, Professor Kathryn D. Huff, +who set me on this path. Her uncompromising standards for excellence are matched +only by the care and attention she affords her students. I only hope I can live +up to her example. I would also like to thank my co-advisor, Professor Madicken +Munk, for encouraging me to pursue my curiosity, which led to this sprawling +multi-disciplinary work. + +I thank the other members of my committee, James Stubbins, Clifford Singer, +McKenzie Johnson, and Denia Djoki\'c. I am particularly grateful to Professor +Johnson for her patience and humor while mentoring me through the nuances of +interacting with and writing about real people (gasp!). I am also deeply +appreciative of the time and effort Dr. Djoki\'c put into guiding myself and +Haley Williams (UC Berkeley) through the philosophy of science literature in +weekly meetings of the ``Nuclear Contextualizers." + +Of course, I thank my colleagues, past and present, from the Advanced Reactors +and Fuel Cycles (ARFC) group: Gwendolyn Chee, Sun Myung Park, Amanda Bachmann, +Nathan Ryan, Olek Yardas, Zo\"e Richter, and Luke Seifert. Their feedback and +code reviews were indispensable. + +I would like to extend a special thanks to the following people. Shannon +Anderson, thank you for helping me navigate the challenges of social science and +engaging with the energy justice literature. Roberto Fairhurst, thanks for being +a great friend and roommate. I miss interrupting you at work (and I appreciate +your patience with my interruptions). Jeremy Mettler, although I credit +Professor Huff with officially starting my journey, I truly would not be here +without your persistent, friendly nudges. Thank you for always inviting me, for +being a trusted confidant, and a dear friend. Nataly Panczyk, I adore your +curiosity, kindness, and infectious enthusiasm. I am perpetually in awe of you. + +I would also like to acknowledge the many incredible professors at the +University of Illinois and at the College of Lake County. In particular, I +acknowledge Drs. Ryan Stock, Ana Mazilu, Josephine Faulk, Kristi Dameron, and +Steve Chamberlin for encouraging me to pursue graduate studies. + +Finally, I received financial support for this work from the Nuclear Regulatory +Commission Fellowship Program, the Felix T. Adler Fellowship from the NPRE +Department at UIUC, and the Union of Concerned Scientists Professional +Development Fund. \ No newline at end of file diff --git a/docs/1-introduction/1-introduction.tex b/docs/1-introduction/1-introduction.tex index d66a7fb..91cd9dd 100644 --- a/docs/1-introduction/1-introduction.tex +++ b/docs/1-introduction/1-introduction.tex @@ -1,3 +1,69 @@ +Solving climate change will require our globalized society to transition from +fossil fuel infrastructure to clean energy infrastructure. This transition must +also be done equitably and justly to prevent entrenching further injustices to +marginalized and vulnerable communities. Current energy planning tools optimize +for a singular cost objective which challenges decision-makers' ability to +balance competing priorities such as sustainability, employment, or land use. +This thesis develops the first multi-objective energy system optimization +framework, \ac{osier}, to enhance the democratic engagement necessary for a just +transition. + +\section{Research Objectives and Outcomes} + +\ac{osier} stores comprehensive information about energy generation technologies +(e.g., wind, solar, nuclear, natural gas, etc.), including their costs, carbon +emissions, land use requirements, generation variability, and other relevant +characteristics. Users provide energy demand data and specify multiple, +simultaneous competing goals (e.g., minimizing cost while maximizing local jobs +and minimizing \ac{co2} emissions). \ac{osier} then identifies multiple optimal +energy portfolios --- each specifying how much of each technology type should be +installed to meet energy demand --- that represent different balances between +these competing objectives. Rather than prescribing a single solution, +\ac{osier} generates a set of co-optimal solutions, called a \textit{Pareto +front}, where improving one objective necessarily worsens another, making +tradeoffs explicit and negotiable. + +It is important to clarify what \ac{osier} is and is not. \ac{osier} is a +prescriptive optimization tool, not a projection or forecasting model. It +identifies what should be built to achieve specified goals rather than +predicting what will happen under various scenarios. \ac{osier} cannot model +unquantifiable values that defy mathematical formulation, though it can optimize +proxy metrics (such as using job creation as a proxy for economic development). +The tool's power lies in making quantifiable tradeoffs explicit and structured, +thereby enhancing rather than replacing human deliberation. Beyond planning, +\ac{osier} can serve as an accountability tool, enabling communities and +advocacy organizations to evaluate whether implemented energy policies align +with stated priorities. + +This dissertation has three primary objectives. +\begin{enumerate} + \item Create an open-source tool that fills two major gaps in the energy + modeling literature by enabling \acf{moo} and by facilitating open dialogue + and thereby producing more just energy policies. This objective is supported + by Chapter \ref{chapter:lit-review}, Chapter \ref{chapter:osier}, Chapter + \ref{chapter:benchmark-results}, and Chapter \ref{chapter:examples}. + \item Demonstrate the importance of participatory and deliberative processes + for developing robust energy policy. This objective is supported by Chapter + \ref{chapter:lit-review} and Chapter \ref{chapter:communities} + \item Evaluate the role of energy modeling in decision-making processes and + assess the the usability of the aforementioned tool from the perspective of + energy planners, policymakers, and advocates in the state of Illinois. This + objective is supported by Chapter \ref{chapter:communities}. +\end{enumerate} + +Chapter \ref{chapter:lit-review} discusses the existing literature and work from +several spanning disciplines, including risk assessment, energy justice, and +energy system optimization. Chapter \ref{chapter:osier} details the technical +methods I applied to create a flexible multi-objective optimization framework +called \ac{osier}. Chapter \ref{chapter:benchmark-results} validates \ac{osier} +as an \ac{esom} by comparing its results against an established representative +\ac{esom}. Chapter \ref{chapter:examples} further demonstrates \ac{osier} with +two timely examples related to fuel cycle evaluation and data center +development. Finally, Chapter \ref{chapter:communities} presents and analyzes +the results from the Illinois case studies. + +\section{Motivation and Background} + Climate change produced by growing atmospheric CO$_2$ concentrations \cite{kane_atmospheric_1996} from human activity has led to increased exposure to hazards worldwide and domestically: increased storm severity, more extreme @@ -57,67 +123,38 @@ However, current \acp{esom} face critical limitations that hinder their ability to support a just energy transition. Existing \acp{esom} optimize exclusively -for cost, providing decision-makers with -a single ``best'' solution. Yet real-world energy decisions involve tradeoffs -among multiple competing objectives, such as cost, carbon emissions, job -creation, land use, and equity considerations. This single-objective approach -prevents meaningful public engagement, since communities cannot deliberate over -priorities when presented with only one supposedly optimal answer. Further, -while climate change is among the most immediate existential threats to society -\cite{hickman_climate_2021}, it is also a focusing issue that brings challenges -of equity and disproportional impacts to the fore. These latter challenges have -always been concomitant with our energy system, but energy system modeling has -largely ignored the ways energy systems mediate socio-political power alongside -transporting electrons and fuel. For example, fossil fueled power plants have -always been associated with air pollution and worsened health for nearby -communities --- commonly poorer and black communities, which are already -marginalized, evincing a violation of fairness and justice principles -\cite{mohai_which_2015}. +for cost, providing decision-makers with a single ``best'' solution. Yet +real-world energy decisions involve tradeoffs among multiple competing +objectives, such as cost, carbon emissions, job creation, land use, and equity +considerations. This single-objective approach prevents meaningful public +engagement, since communities cannot deliberate over priorities when presented +with only one supposedly optimal answer. Further, while climate change is among +the most immediate existential threats to society \cite{hickman_climate_2021}, +it is also a focusing issue that brings challenges of equity and disproportional +impacts to the fore. These latter challenges have always been concomitant with +our energy system, but energy system modeling has largely ignored the ways +energy systems mediate socio-political power alongside transporting electrons +and fuel. For example, fossil fueled power plants have always been associated +with air pollution and worsened health for nearby communities --- commonly +poorer and black communities, which are already marginalized, evincing a +violation of fairness and justice principles \cite{mohai_which_2015}. % Studying these consequences of our energy choices historically belonged to % domain of the environmental justice literature % \cite{schlosberg_reconceiving_2004,mohai_environmental_2009} but has developed % further into the discipline of energy justice \cite{sovacool_energy_2015}. -This thesis addresses these limitations by developing \acl{osier}, a tool -designed to enhance democratic engagement in energy planning. \ac{osier} stores -comprehensive information about energy generation technologies (e.g., wind, -solar, nuclear, natural gas, etc.), including their costs, carbon emissions, -land use requirements, generation variability, and other relevant -characteristics. Users provide energy demand data and specify multiple, -simultaneous competing goals (e.g., minimizing cost while maximizing local jobs -and minimizing \ac{co2} emissions). \ac{osier} then identifies multiple optimal -energy portfolios --- each specifying how much of each technology type should be -installed to meet energy demand --- that represent different balances between -these competing objectives. Rather than prescribing a single solution, -\ac{osier} generates a set of co-optimal solutions, called a \textit{Pareto -front}, where improving one objective necessarily worsens another, making -tradeoffs explicit and negotiable. - -It is important to clarify what \ac{osier} is and is not. \ac{osier} is a -prescriptive optimization tool, not a projection or forecasting model. It -identifies what should be built to achieve specified goals rather than -predicting what will happen under various scenarios. \ac{osier} cannot model -unquantifiable values that defy mathematical formulation, though it can optimize -proxy metrics (such as using job creation as a proxy for economic development). -The tool's power lies in making quantifiable tradeoffs explicit and structured, -thereby enhancing rather than replacing human deliberation. Beyond planning, -\ac{osier} can serve as an accountability tool, enabling communities and -advocacy organizations to evaluate whether implemented energy policies align -with stated priorities. - - The energy transition will require a great expansion of our energy -infrastructure to replace fossil-fueled energy with clean energy and -additional transmission networks to carry electrons. Although the technology to -accomplish this transition is mature, there is still local public opposition to -many energy projects \cite{wolsink_wind_2007}, particularly in empowered and -affluent communities \cite{stokes_prevalence_2023}. \acp{esom} cannot capture -these ``human dimensions'' of energy systems despite some awareness of their +infrastructure to replace fossil-fueled energy with clean energy and additional +transmission networks to carry electrons. Although the technology to accomplish +this transition is mature, there is still local public opposition to many energy +projects \cite{wolsink_wind_2007}, particularly in empowered and affluent +communities \cite{stokes_prevalence_2023}. \acp{esom} cannot capture these +``human dimensions'' of energy systems despite some awareness of their importance \cite{pfenninger_energy_2014}. This is because they only optimize a single objective --- cost (or some other aggregated economic metric). People -have and express preferences over many dimensions simultaneously. Further, even in -the absence of climate change, incorporating social context into the practice of -energy modeling remains beneficial since doing so will create substantively +have and express preferences over many dimensions simultaneously. Further, even +in the absence of climate change, incorporating social context into the practice +of energy modeling remains beneficial since doing so will create substantively better decisions \cite{wilsdon_see-through_2004}. The solution for enclosing this feature of energy system design proposed in this thesis is two-fold. The first is to develop an \ac{esom} capable of multi-objective optimization. The @@ -146,35 +183,6 @@ The result is a step towards a holistic integration of energy justice and energy system engineering. -\section{Research Objectives} - -This dissertation has three primary objectives. -\begin{enumerate} - \item Create an open-source tool that fills two major gaps in the energy - modeling literature by enabling \acf{moo} and by facilitating open dialogue - and thereby producing more just energy policies. This objective is supported - by Chapter \ref{chapter:lit-review}, Chapter \ref{chapter:osier}, Chapter - \ref{chapter:benchmark-results}, and Chapter \ref{chapter:examples}. - \item Demonstrate the importance of participatory and deliberative processes - for developing robust energy policy. This objective is supported by Chapter - \ref{chapter:lit-review} and Chapter \ref{chapter:communities} - \item Evaluate the role of energy modeling in decision-making processes and - assess the the usability of the aforementioned tool from the perspective of - energy planners, policymakers, and advocates in the state of Illinois. This - objective is supported by Chapter \ref{chapter:communities}. -\end{enumerate} - -Chapter \ref{chapter:lit-review} discusses the existing literature and work from -several spanning disciplines, including risk assessment, energy justice, and -energy system optimization. Chapter \ref{chapter:osier} details the technical -methods I applied to create a flexible multi-objective optimization framework -called \ac{osier}. Chapter \ref{chapter:benchmark-results} validates \ac{osier} -as an \ac{esom} by comparing its results against an established representative -\ac{esom}. Chapter \ref{chapter:examples} further demonstrates \ac{osier} with -two timely examples related to fuel cycle evaluation and data center -development. Finally, Chapter \ref{chapter:communities} presents and analyzes -the results from the Illinois case studies. - \section{Reproducing this work} In an effort to adhere to the scientific computing best practices described by Wilson et al. 2014 \cite{wilson_best_2014}, I produced this document and all of diff --git a/docs/2025-dotson-thesis.tex b/docs/2025-dotson-thesis.tex index d188101..825dd8d 100644 --- a/docs/2025-dotson-thesis.tex +++ b/docs/2025-dotson-thesis.tex @@ -132,21 +132,9 @@ \hspace{10em} Joyner Lucas\\ \end{dedication} -% \begin{acknowledgments} -% People to acknowledge -% \begin{itemize} -% \item Denia Djoki\'c -% \item Shannon Anderson (UIUC) -% \item Haley Williams (UC Berkeley) -% \item Nataly Panczyk -% \item Nathan Ryan -% \item Jeremy Mettler -% \item Gwendolyn Chee -% \item Roberto Fairhurst -% \item Members of ARFC - % \item John Albers (for securing interviews) -% \end{itemize} -% \end{acknowledgments} +\begin{acknowledgments} +\input{02-acks.tex} +\end{acknowledgments} { \hypersetup{linkcolor=black} % disable link coloring locally From 7bc9cee91df29e06884c38b9a44aff4326fb3142 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Mon, 17 Nov 2025 12:02:03 -0500 Subject: [PATCH 10/11] adds highlighted table to examples chapter --- docs/00-outline.tex | 36 ++++++------- docs/2025-dotson-thesis.tex | 6 +-- docs/5-examples/51-set-tool.tex | 2 +- docs/tables/summary_data_highlighted.tex | 68 ++++++++++++++++++++++++ 4 files changed, 90 insertions(+), 22 deletions(-) create mode 100644 docs/tables/summary_data_highlighted.tex diff --git a/docs/00-outline.tex b/docs/00-outline.tex index f337a03..9a6e9f5 100644 --- a/docs/00-outline.tex +++ b/docs/00-outline.tex @@ -2,26 +2,26 @@ \chapter{Introduction} \label{chapter:introduction} \input{1-introduction/1-introduction.tex} -\chapter{Literature Review} -\label{chapter:lit-review} -\input{2-literature/20-literature} +% \chapter{Literature Review} +% \label{chapter:lit-review} +% \input{2-literature/20-literature} -\chapter{\acf{osier}} -\label{chapter:osier} -\input{3-osier/30-intro} +% \chapter{\acf{osier}} +% \label{chapter:osier} +% \input{3-osier/30-intro} -\chapter{Benchmark Results} -\label{chapter:benchmark-results} -\input{4-benchmark-results/40-benchmark.tex} +% \chapter{Benchmark Results} +% \label{chapter:benchmark-results} +% \input{4-benchmark-results/40-benchmark.tex} -\chapter{Examples with \acs{osier}} -\label{chapter:examples} -\input{5-examples/50-intro.tex} +% \chapter{Examples with \acs{osier}} +% \label{chapter:examples} +% \input{5-examples/50-intro.tex} -\chapter{Energy modeling, planning, and justice} -\label{chapter:communities} -\input{7-interviews/70-outline} +% \chapter{Energy modeling, planning, and justice} +% \label{chapter:communities} +% \input{7-interviews/70-outline} -\chapter{Conclusions} -\label{chapter:conclusions} -\input{8-conclusion/80-conclusion.tex} +% \chapter{Conclusions} +% \label{chapter:conclusions} +% \input{8-conclusion/80-conclusion.tex} diff --git a/docs/2025-dotson-thesis.tex b/docs/2025-dotson-thesis.tex index 825dd8d..dcb31af 100644 --- a/docs/2025-dotson-thesis.tex +++ b/docs/2025-dotson-thesis.tex @@ -132,9 +132,9 @@ \hspace{10em} Joyner Lucas\\ \end{dedication} -\begin{acknowledgments} -\input{02-acks.tex} -\end{acknowledgments} +% \begin{acknowledgments} +% \input{02-acks.tex} +% \end{acknowledgments} { \hypersetup{linkcolor=black} % disable link coloring locally diff --git a/docs/5-examples/51-set-tool.tex b/docs/5-examples/51-set-tool.tex index 6027ea6..659b671 100644 --- a/docs/5-examples/51-set-tool.tex +++ b/docs/5-examples/51-set-tool.tex @@ -224,7 +224,7 @@ \subsection{Results} \caption{Summary of \ac{set} and \ac{osier} data. Highlighted rows indicate disagreement between \ac{osier} and \ac{set} results.} \label{tab:summary-data} - \resizebox*{\textwidth}{!}{\input{tables/summary_data.tex}} + \resizebox*{\textwidth}{!}{\input{tables/summary_data_highlighted.tex}} \end{table} \FloatBarrier diff --git a/docs/tables/summary_data_highlighted.tex b/docs/tables/summary_data_highlighted.tex new file mode 100644 index 0000000..dc62245 --- /dev/null +++ b/docs/tables/summary_data_highlighted.tex @@ -0,0 +1,68 @@ +\begin{tabular}{lllll} +\toprule + & Fuel Cycle Type & Reactor Type & EST Conclusion & Pareto Optimal \\ +EG & & & & \\ +\midrule +\rowcolor{orange} +EG01 & once-through & PWR & Not promising & True \\ +\rowcolor{orange} +EG02 & once-through & HTGR & Not promising & True \\ +\rowcolor{orange} +EG03 & once-through & HWR & Not promising & True \\ +\rowcolor{lime} +EG04 & once-through & SFR & Less promising & True \\ +\rowcolor{orange} +EG05 & once-through & HTGR & Not promising & True \\ +EG06 & once-through & FFH & Potentially promising & True \\ +\rowcolor{yellow} +EG07 & once-through & ADS & Potentially promising & False \\ +EG08 & once-through & FFH & Potentially promising & True \\ +EG09 & limited-recycle & SFR & Potentially promising & True \\ +EG10 & limited-recycle & MSR & Less promising & True \\ +EG11 & limited-recycle & SFR & Not promising & False \\ +\rowcolor{orange} +EG12 & limited-recycle & HWR & Not promising & True \\ +\rowcolor{orange} +EG13 & limited-recycle & PWR & Not promising & True \\ +EG14 & limited-recycle & SFR & Less promising & True \\ +\rowcolor{orange} +EG15 & limited-recycle & SFR & Not promising & True \\ +EG16 & limited-recycle & ADS & Not promising & False \\ +\rowcolor{orange} +EG17 & limited-recycle & PWR & Not promising & True \\ +\rowcolor{orange} +EG18 & limited-recycle & PWR & Not promising & True \\ +\rowcolor{orange} +EG19 & continuous-recycle & HWR & Not promising & True \\ +\rowcolor{orange} +EG20 & continuous-recycle & HWR & Not promising & True \\ +\rowcolor{orange} +EG21 & continuous-recycle & PWR & Not promising & True \\ +\rowcolor{orange} +EG22 & continuous-recycle & PWR & Not promising & True \\ +EG23 & continuous-recycle & SFR & Most promising & True \\ +EG24 & continuous-recycle & SFR & Most promising & True \\ +\rowcolor{orange} +EG25 & continuous-recycle & PWR & Not promising & True \\ +EG26 & continuous-recycle & MSR & Potentially promising & True \\ +EG27 & continuous-recycle & SFR & Not promising & False \\ +EG28 & continuous-recycle & SFR & Potentially promising & True \\ +EG29 & continuous-recycle & SFR & Most promising & True \\ +EG30 & continuous-recycle & SFR & Most promising & True \\ +\rowcolor{orange} +EG31 & continuous-recycle & SFR & Not promising & True \\ +\rowcolor{orange} +EG32 & continuous-recycle & SFR & Not promising & True \\ +\rowcolor{yellow} +EG33 & continuous-recycle & ADS & Potentially promising & False \\ +\rowcolor{yellow} +EG34 & continuous-recycle & ADS & Potentially promising & False \\ +EG35 & continuous-recycle & ADS & Not promising & False \\ +\rowcolor{orange} +EG36 & continuous-recycle & ADS & Not promising & True \\ +EG37 & continuous-recycle & SFR & Potentially promising & True \\ +EG38 & continuous-recycle & SFR & Potentially promising & True \\ +EG39 & continuous-recycle & ADS & Not promising & False \\ +EG40 & continuous-recycle & ADS & Potentially promising & True \\ +\bottomrule +\end{tabular} \ No newline at end of file From feb6abc382228fb6cd8b3beeafba2285ff037fb4 Mon Sep 17 00:00:00 2001 From: Sam Dotson Date: Mon, 17 Nov 2025 12:02:38 -0500 Subject: [PATCH 11/11] compiles full thesis --- docs/00-outline.tex | 36 ++++++++++++++++++------------------ docs/2025-dotson-thesis.tex | 6 +++--- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/00-outline.tex b/docs/00-outline.tex index 9a6e9f5..f337a03 100644 --- a/docs/00-outline.tex +++ b/docs/00-outline.tex @@ -2,26 +2,26 @@ \chapter{Introduction} \label{chapter:introduction} \input{1-introduction/1-introduction.tex} -% \chapter{Literature Review} -% \label{chapter:lit-review} -% \input{2-literature/20-literature} +\chapter{Literature Review} +\label{chapter:lit-review} +\input{2-literature/20-literature} -% \chapter{\acf{osier}} -% \label{chapter:osier} -% \input{3-osier/30-intro} +\chapter{\acf{osier}} +\label{chapter:osier} +\input{3-osier/30-intro} -% \chapter{Benchmark Results} -% \label{chapter:benchmark-results} -% \input{4-benchmark-results/40-benchmark.tex} +\chapter{Benchmark Results} +\label{chapter:benchmark-results} +\input{4-benchmark-results/40-benchmark.tex} -% \chapter{Examples with \acs{osier}} -% \label{chapter:examples} -% \input{5-examples/50-intro.tex} +\chapter{Examples with \acs{osier}} +\label{chapter:examples} +\input{5-examples/50-intro.tex} -% \chapter{Energy modeling, planning, and justice} -% \label{chapter:communities} -% \input{7-interviews/70-outline} +\chapter{Energy modeling, planning, and justice} +\label{chapter:communities} +\input{7-interviews/70-outline} -% \chapter{Conclusions} -% \label{chapter:conclusions} -% \input{8-conclusion/80-conclusion.tex} +\chapter{Conclusions} +\label{chapter:conclusions} +\input{8-conclusion/80-conclusion.tex} diff --git a/docs/2025-dotson-thesis.tex b/docs/2025-dotson-thesis.tex index dcb31af..825dd8d 100644 --- a/docs/2025-dotson-thesis.tex +++ b/docs/2025-dotson-thesis.tex @@ -132,9 +132,9 @@ \hspace{10em} Joyner Lucas\\ \end{dedication} -% \begin{acknowledgments} -% \input{02-acks.tex} -% \end{acknowledgments} +\begin{acknowledgments} +\input{02-acks.tex} +\end{acknowledgments} { \hypersetup{linkcolor=black} % disable link coloring locally