From e87a149f39ea35877816d45dce0e787851749cea Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Thu, 8 Feb 2024 19:39:43 +0000 Subject: [PATCH] build based on e23717a --- dev/.documenter-siteinfo.json | 2 +- dev/GTEP/index.html | 2 +- dev/PCM/index.html | 4 ++-- dev/index.html | 2 +- dev/installation/index.html | 2 +- dev/model_introduction/index.html | 2 +- dev/notation/index.html | 2 +- dev/reference/index.html | 2 +- dev/run_case/index.html | 2 +- dev/search_index.js | 2 +- 10 files changed, 11 insertions(+), 11 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 39081ca..f9ac66a 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-02-08T19:33:20","documenter_version":"1.2.1"}} \ No newline at end of file +{"documenter":{"julia_version":"1.6.7","generation_timestamp":"2024-02-08T19:39:38","documenter_version":"1.2.1"}} \ No newline at end of file diff --git a/dev/GTEP/index.html b/dev/GTEP/index.html index 2365863..c374b83 100644 --- a/dev/GTEP/index.html +++ b/dev/GTEP/index.html @@ -17,4 +17,4 @@ \end{aligned}\]

(27) Cap & Trade - State carbon allowance cap:

\[\sum_{g \in (\bigcup_{i \in I_{w}} G_{i}) \cap G^{F}} a+{g,t} - em_{w}^{emis} \le ALW_{t,w}; w \in W, t \in T\]

(28) Cap & Trade - Balance between allowances and emissions:

\[N_{t} \sum_{h \in H_{t}} EF_{g} \times p_{g,t,h} = a_{g,t} + b_{g,t-1} = b_{g,t}; g \in (\bigcup_{i \in I_{w}} G_{i}) \cap G_{F}, w \in W, t \in T\]

(29) Cap & Trade - No cross-year banking:

\[b_{g,1} = b_{g,end} = 0; g \in G_{F}\]

(30) Binary variables:

\[x_{g} = \{0,1 \}; \forall g \in G_{+} y_{l} = \{0,1 \}; \forall l \in L_{+} z_{s} = \{0,1 \}; \forall s \in S_{+}\]

(31) Nonnegative variable:

\[a_{g,t}, b_{g,t}, p_{g,t,h}, p_{d,t,h}^{LS}, c_{s,t,h}, soc_{s,t,h}, pt^{rps}, pw_{g,w}, pwi_{g,w,w'}, em^{emis} \\ -\ge 0\]

+\ge 0\]

diff --git a/dev/PCM/index.html b/dev/PCM/index.html index 81f7790..4d397e5 100644 --- a/dev/PCM/index.html +++ b/dev/PCM/index.html @@ -1,5 +1,5 @@ -PCM · HOPE.jl

Introduction

Objective Function

(1) Minimize total system cost:

\[\begin{aligned} +PCM · HOPE.jl

Overview

The production cost model (PCM) is for system operation analysis under various policies and energy transition scenarios. This model is a Linear Programming Problem.

The objective of this model is to minimize the system's (given by the planning model) total cost, including variable operation costs and penalties for non-compliance with policies. The constraints of this model are power balance, transmission transfer limit, generator operation constraints, storage operation constraints, resource adequacy requirements, and policy constraints (i.e., renewable portfolio standards (RPS) and carbon emission limitations).  The continuous decision variables of the PCM model are hourly operations of resources for a target year.

Problem Formulation

Objective function

(1) Minimize total system cost:

\[\begin{aligned} \min_{\Gamma} \quad &\sum_{g \in G, t \in T}VCG_{g} \times N_{t} \times \sum_{h \in H}p_{g,h} + \\ &\sum_{s \in S, t \in T} VCS \times \sum_{h \in H} (c_{s,h} + dc_{s,h}) + \\ @@ -14,4 +14,4 @@ \ge \sum_{i \in I_{w},h \in H} \sum_{d \in D_{i}} p_{d,h} \times RPS_{w};\\ w \in W \end{aligned}\]

(18) Cap & Trade - State carbon allowance cap:

\[\sum_{g \in (\bigcup_{i \in I_{w}} G_{i}) \cap G^{F}} a+{g,t} - \sum_{t \in T} N_{t} em_{w,h}^{emis} \le ALW_{t,w}; w \in W\]

(19) Cap & Trade - Balance between allowances and emissions:

\[\sum_{h \in H} EF_{g} \times p_{g,h} = a_{g,t} + b_{g,t-1} = b_{g,t}; g \in (\bigcup_{i \in I_{w}} G_{i}) \cap G_{F}, w \in W, t \in T\]

(20) Cap & Trade - No cross-year banking:

\[b_{g,1} = b_{g,end} = 0; g \in G_{F}\]

(21) Nonnegative variable:

\[a_{g,t}, b_{g,t}, p_{g,h}, p_{d,h}^{LS}, c_{s,h}, soc_{s,h}, pt^{rps}, pw_{g,w}, pwi_{g,w,w'}, em^{emis} \\ -\ge 0\]

+\ge 0\]

diff --git a/dev/index.html b/dev/index.html index 873af9c..c5237b3 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,2 +1,2 @@ -Introduction · HOPE.jl

HOPE Documentation

Overview

The Holistic Optimization Program for Electricity (HOPE) model is a transparent and open-source tool for evaluating electric sector transition pathways and policy scenarios regarding power system planning, system operation, optimal power flow, and market designs. It is a highly configurable and modulized tool coded in the Julia language and optimization package JuMP. The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:

  1. GTEP mode: a generation & transmission expansion planning model
  2. PCM mode: a production cost model
  3. OPF mode: (under development): an optimal power flow model
  4. DART mode: (under development): a bilevel market model for simulating day-head and real-time markets

Users can select the proper mode of HOPE based on their research needs. Each mode is modeled as linear or mixed-integer linear programming and can be solved with open-source (e.g., Cbc, GLPK, Clp, etc.) or commercial (e.g., Groubi and CPLEX) solver packages.

Contributors

The HOPE model was originally developed by a team of researchers in Prof. Benjamin F. Hobbs's group at Johns Hopkins University. The main developers of the current HOPE version include Dr. Shen Wang, Dr. Mahdi Mehrtash, and Zoe Song.

+Introduction · HOPE.jl

HOPE Documentation

Overview

The Holistic Optimization Program for Electricity (HOPE) model is a transparent and open-source tool for evaluating electric sector transition pathways and policy scenarios regarding power system planning, system operation, optimal power flow, and market designs. It is a highly configurable and modulized tool coded in the Julia language and optimization package JuMP. The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:

  1. GTEP mode: a generation & transmission expansion planning model
  2. PCM mode: a production cost model
  3. OPF mode: (under development): an optimal power flow model
  4. DART mode: (under development): a bilevel market model for simulating day-head and real-time markets

Users can select the proper mode of HOPE based on their research needs. Each mode is modeled as linear or mixed-integer linear programming and can be solved with open-source (e.g., Cbc, GLPK, Clp, etc.) or commercial (e.g., Groubi and CPLEX) solver packages.

Contributors

The HOPE model was originally developed by a team of researchers in Prof. Benjamin F. Hobbs's group at Johns Hopkins University. The main developers of the current HOPE version include Dr. Shen Wang, Dr. Mahdi Mehrtash, and Zoe Song.

diff --git a/dev/installation/index.html b/dev/installation/index.html index f4e3c8f..8184672 100644 --- a/dev/installation/index.html +++ b/dev/installation/index.html @@ -1,2 +1,2 @@ -Installation · HOPE.jl

Installation

1. Install Julia

Install Julia language. A short video tutorial on how to download and install Julia is provided here.

2. Download HOPE repository

Clone or download the HOPE repository to your local directory - click the green "Code" button on the HOPE main page and choose "Download ZIP" (remember to change the folder name to HOPE after you decompress the zip file). You need to save the HOPE project in your home directory like: /yourpath/home/HOPE. image

3. Solver Packages

The open-source solver packages (e.g., Cbc, GLPK, Clp, etc.) will be automatically installed in step 2. While the commercial solver packages (e.g., Groubi and CPLEX) should be installed by users (if needed) by following their instructions.

pkg> add https://github.com/swang22/HOPE.jl
+Installation · HOPE.jl

Installation

1. Install Julia

Install Julia language. A short video tutorial on how to download and install Julia is provided here.

2. Download HOPE repository

Clone or download the HOPE repository to your local directory - click the green "Code" button on the HOPE main page and choose "Download ZIP" (remember to change the folder name to HOPE after you decompress the zip file). You need to save the HOPE project in your home directory like: /yourpath/home/HOPE. image

3. Solver Packages

The open-source solver packages (e.g., Cbc, GLPK, Clp, etc.) will be automatically installed in step 2. While the commercial solver packages (e.g., Groubi and CPLEX) should be installed by users (if needed) by following their instructions.

pkg> add https://github.com/swang22/HOPE.jl
diff --git a/dev/model_introduction/index.html b/dev/model_introduction/index.html index 2cd7283..a90c5e9 100644 --- a/dev/model_introduction/index.html +++ b/dev/model_introduction/index.html @@ -1,2 +1,2 @@ -Model Introduction · HOPE.jl

Model Overview

The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:

  1. GTEP mode: a generation & transmission expansion planning model
  2. PCM mode: a production cost model
  3. OPF mode: (under development): an optimal power flow model
  4. DART mode: (under development): a bilevel market model for simulating day-head and real-time markets
+Model Introduction · HOPE.jl

Model Overview

The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:

  1. GTEP mode: a generation & transmission expansion planning model
  2. PCM mode: a production cost model
  3. OPF mode: (under development): an optimal power flow model
  4. DART mode: (under development): a bilevel market model for simulating day-head and real-time markets
diff --git a/dev/notation/index.html b/dev/notation/index.html index ba97d17..df3a517 100644 --- a/dev/notation/index.html +++ b/dev/notation/index.html @@ -1,2 +1,2 @@ -Notation · HOPE.jl

Notation

Sets and Indices


NotationDescription
$D$Set of demand, index $d$
$G$Set of all types of generating units, index $g$
$H$Set of hours, index $h$
$K$Set of technology types, index $k$
$T$Set of time periods (e.g., representative days of seasons), index $t$
$S$Set of storage units, index $s$
$I,J$Set of zones, index $i,j$
$L$Set of transmission corridors, index $l$
$W$Set of states, index $w/w’$

Subsets


NotationDescription
$D_{i}$Set of demand connected to zone $i$, a subset of $D$
$G^{PV}$, $G^{W}$, $G^{F}$Set of solar, wind, and dispatchable generators, respectively, subsets of $G$
$G^{RPS}$Set of generators could provide RPS credits, subsets of $G$
$G^{L}_{l}$Set of generators linked to line $i$, subset of $G$
$G_{i}$Set of generating units connected to zone $i$, subset of $G$
$G^{E}/G^{+}$Set of existing/candidate generation units, index $g$, subset of $G$
$H_{t}$Set of hours in time period (day) $t$, index $h$, subset of $H$
$S^{E}/S^{+}$Set of existing/candidate storage units, subset of $S$
$S_{i}$Set of storage units connected to zone $i$, subset of $S$
$L^{E}/L^{+}$Set of existing/candidate transmission corridors
$LS_{l}/LR_{l}$Set of sending/receiving corridors for zone $i$, subset of $L$
$WIR_{w}$Set of states that state w can import renewable credits from (includes $w$ itself), subset of $W$
$WER_{w}$Set of states that state w can export renewable credits to (excludes $w$ itself), subset of $W$

Parameters


NotationDescription
$ALW_{t,w}$Total carbon allowance in time period $t$ in state $w$, ton
$AFRE_{g,h,i}$Availability factor of renewable energy source $g$ in hour $h$ in zone $i$, $g \in G^{PV} \bigcup G^{W}$
$CC_{g/s}$Capacity credit of resource $g/s$, unitless
$CP_{g}$Carbon price of generation $g \in\ G^{F}$, M/t
$EF_{g}$Carbon emission factor of generator $g$, t/MWh
$ELMT_{w}$Carbon emission limits at state $w, t$
$F^{max}_{l}$Maximum capacity of transmission corridor/line $l$, MW
$\tilde{I}_{g}$Investment cost of candidate generator $g$, M$
$\tilde{I}_{l}$Investment cost of transmission line $l$, M$
$\tilde{I}_{s}$Investment cost of storage unit $s$, M$
$IBG$Total investment budget for generators
$IBL$Total investment budget for transmission lines
$IBS$Total investment budget for storages
$N_{t}$Number of time periods (days) represented by time period (day) $t$ per year, /sum{t /in T} N{t}
$NI_{i.h}$Net interchange in zone $i$ in hour $h, MWh
$P_{d,h}$Active power demand, MW
$PK$Peak power demand, MW
$PT^{rps}$RPS volitation penalty, /MWh
$PT^{emis}$Carbon emission volitation penalty, /t
$P_{g}^{min}/P_{g}^{max}$Minimum/Maximum power generation of unit $g$, MW
$RPS_{w}$Renewable portfolio standard in state $w$, %, unitless
$RM$Planning reserve margin, unitless
$SCAP_{s}$Maximum capacity of storage unit $s$, MW
$SECAP_{s}$Maximum energy capacity of storage unit $s$, MWh
$SC_{s}/SD_{s}$The maximum rates of charging/discharging, unitless
$VCG_{g}$Variable cost of generation unit $g$, / MWh
$VCS_{g}$Variable (degradation) cost of storage unit $s$, / MWh
$VOLL_{d}$Value of loss of load $d$, /MWh
$\epsilon_{ch}$Charging efficiency of storage unit $s$, unitless
$\epsilon_{dis}$Discharging efficiency of storage unit $s$, unitless

Variables


NotationDescription
$a_{g,t}$Bidding carbon allowance of unit $g$ in time period $t$, ton
$b_{g,t}$Banking of allowance of g in time period $t$, ton
$p_{g,t,h}$Active power generation of unit $g$ in time period $t$ hour $h$, MW
$pw_{g,w}$Total renewable generation of unit $g$ in state $w$, MWh
$p^{LS}_{d,t,h}$Load shedding of demand $d$ in time period $t$ in hour $h$, MW
$pt^{rps}_{w}$Amount of active power violated RPS policy in state $w$, MW
$pwi_{g,w,w'}$State $w$ imported renewable credits of from state $w'$ annually, MWh
$f_{l,t,h}$Active power of generator $g$ through transmission corridor/line $l$ in time period $t$ and hour $h$, MW
$em^{emis}_{w}$Carbon emission violated emission limit in state $w$, ton
$x_{g}$Decision variable for candidate generator $g$, binary
$y_{l}$Decision variable for candidate line $l$, binary
$z_{s}$Decision variable for candidate storage $s$, binary
$soc_{s,t,h}$State of charge level of storage $s$ in time period $t$ in hour $h$, MWh
$c_{s,t,h}$Charging power of storage $s$ from grid in time period $t$ in hour $h$, MW
$dc_{s,t,h}$Discharging power of storage $s$ from grid in time period $t$ in hour $h$, MW

+Notation · HOPE.jl

Notation

Sets and Indices


NotationDescription
$D$Set of demand, index $d$
$G$Set of all types of generating units, index $g$
$H$Set of hours, index $h$
$K$Set of technology types, index $k$
$T$Set of time periods (e.g., representative days of seasons), index $t$
$S$Set of storage units, index $s$
$I,J$Set of zones, index $i,j$
$L$Set of transmission corridors, index $l$
$W$Set of states, index $w/w’$

Subsets


NotationDescription
$D_{i}$Set of demand connected to zone $i$, a subset of $D$
$G^{PV}$, $G^{W}$, $G^{F}$Set of solar, wind, and dispatchable generators, respectively, subsets of $G$
$G^{RPS}$Set of generators could provide RPS credits, subsets of $G$
$G^{L}_{l}$Set of generators linked to line $i$, subset of $G$
$G_{i}$Set of generating units connected to zone $i$, subset of $G$
$G^{E}/G^{+}$Set of existing/candidate generation units, index $g$, subset of $G$
$H_{t}$Set of hours in time period (day) $t$, index $h$, subset of $H$
$S^{E}/S^{+}$Set of existing/candidate storage units, subset of $S$
$S_{i}$Set of storage units connected to zone $i$, subset of $S$
$L^{E}/L^{+}$Set of existing/candidate transmission corridors
$LS_{l}/LR_{l}$Set of sending/receiving corridors for zone $i$, subset of $L$
$WIR_{w}$Set of states that state w can import renewable credits from (includes $w$ itself), subset of $W$
$WER_{w}$Set of states that state w can export renewable credits to (excludes $w$ itself), subset of $W$

Parameters


NotationDescription
$ALW_{t,w}$Total carbon allowance in time period $t$ in state $w$, ton
$AFRE_{g,h,i}$Availability factor of renewable energy source $g$ in hour $h$ in zone $i$, $g \in G^{PV} \bigcup G^{W}$
$CC_{g/s}$Capacity credit of resource $g/s$, unitless
$CP_{g}$Carbon price of generation $g \in\ G^{F}$, M/t
$EF_{g}$Carbon emission factor of generator $g$, t/MWh
$ELMT_{w}$Carbon emission limits at state $w, t$
$F^{max}_{l}$Maximum capacity of transmission corridor/line $l$, MW
$\tilde{I}_{g}$Investment cost of candidate generator $g$, M$
$\tilde{I}_{l}$Investment cost of transmission line $l$, M$
$\tilde{I}_{s}$Investment cost of storage unit $s$, M$
$IBG$Total investment budget for generators
$IBL$Total investment budget for transmission lines
$IBS$Total investment budget for storages
$N_{t}$Number of time periods (days) represented by time period (day) $t$ per year, /sum{t /in T} N{t}
$NI_{i.h}$Net interchange in zone $i$ in hour $h, MWh
$P_{d,h}$Active power demand, MW
$PK$Peak power demand, MW
$PT^{rps}$RPS volitation penalty, /MWh
$PT^{emis}$Carbon emission volitation penalty, /t
$P_{g}^{min}/P_{g}^{max}$Minimum/Maximum power generation of unit $g$, MW
$RPS_{w}$Renewable portfolio standard in state $w$, %, unitless
$RM$Planning reserve margin, unitless
$SCAP_{s}$Maximum capacity of storage unit $s$, MW
$SECAP_{s}$Maximum energy capacity of storage unit $s$, MWh
$SC_{s}/SD_{s}$The maximum rates of charging/discharging, unitless
$VCG_{g}$Variable cost of generation unit $g$, / MWh
$VCS_{g}$Variable (degradation) cost of storage unit $s$, / MWh
$VOLL_{d}$Value of loss of load $d$, /MWh
$\epsilon_{ch}$Charging efficiency of storage unit $s$, unitless
$\epsilon_{dis}$Discharging efficiency of storage unit $s$, unitless

Variables


NotationDescription
$a_{g,t}$Bidding carbon allowance of unit $g$ in time period $t$, ton
$b_{g,t}$Banking of allowance of g in time period $t$, ton
$p_{g,t,h}$Active power generation of unit $g$ in time period $t$ hour $h$, MW
$pw_{g,w}$Total renewable generation of unit $g$ in state $w$, MWh
$p^{LS}_{d,t,h}$Load shedding of demand $d$ in time period $t$ in hour $h$, MW
$pt^{rps}_{w}$Amount of active power violated RPS policy in state $w$, MW
$pwi_{g,w,w'}$State $w$ imported renewable credits of from state $w'$ annually, MWh
$f_{l,t,h}$Active power of generator $g$ through transmission corridor/line $l$ in time period $t$ and hour $h$, MW
$em^{emis}_{w}$Carbon emission violated emission limit in state $w$, ton
$x_{g}$Decision variable for candidate generator $g$, binary
$y_{l}$Decision variable for candidate line $l$, binary
$z_{s}$Decision variable for candidate storage $s$, binary
$soc_{s,t,h}$State of charge level of storage $s$ in time period $t$ in hour $h$, MWh
$c_{s,t,h}$Charging power of storage $s$ from grid in time period $t$ in hour $h$, MW
$dc_{s,t,h}$Discharging power of storage $s$ from grid in time period $t$ in hour $h$, MW

diff --git a/dev/reference/index.html b/dev/reference/index.html index a1fb519..860bcd8 100644 --- a/dev/reference/index.html +++ b/dev/reference/index.html @@ -1,2 +1,2 @@ -- · HOPE.jl
+- · HOPE.jl
diff --git a/dev/run_case/index.html b/dev/run_case/index.html index 114a4d4..051e89d 100644 --- a/dev/run_case/index.html +++ b/dev/run_case/index.html @@ -1,2 +1,2 @@ -Run a case · HOPE.jl

Run a Case in HOPE

Using VScode to Run a Case (Recommended)

Install Visual Studio Code: Download VScode and install it. A short video tutorial on how to install VScode and add Julia to it can be found here.

(1) Open the VScode, click the 'File' tab, select 'Open Folder...', and navigate to your home working directory:/yourpath/home (The home directory in the examples below is named Maryland-Electric-Sector-Transition).

(2) In the VScode TERMINAL, type Julia and press the "Enter" button. Julia will be opened as below:

image

(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory) or activate yourpath/home/HOPE (if you are not in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully.

image

(4) Type instantiate in the (HOPE) pkg prompt (make sure you are in your home directory, not the home/HOPE directory!).

(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)

image

(6) If there is no error in the above processes, the HOPE model has been successfully installed! Then, press Backspace button to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope("HOPE/ModelCases/MD_Excel_case/"), you will see the HOPE is running:

image

The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output.

image

(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6.

Using System Terminal to Run a Case

You can use a system terminal either with a "Windows system" or a "Mac system" to run a test case. See details below.

Windows users

(1) Open Command Prompt from Windows Start and navigate to your home path:/yourpath/home.

(2) Type julia. Julia will be opened as below:

image

(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully.

(4) Type instantiate in the (HOPE) pkg prompt. ( After the HOPE is successfully installed, you can skip this step)

(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)

image

(6) If there is no error in the above processes, the HOPE model has been successfully installed. Then, click Backspace to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope("HOPE/ModelCases/MD_Excel_case/"), you will see the HOPE is running:

image

The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output.

image

(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6.

+Run a case · HOPE.jl

Run a Case in HOPE

Using VScode to Run a Case (Recommended)

Install Visual Studio Code: Download VScode and install it. A short video tutorial on how to install VScode and add Julia to it can be found here.

(1) Open the VScode, click the 'File' tab, select 'Open Folder...', and navigate to your home working directory:/yourpath/home (The home directory in the examples below is named Maryland-Electric-Sector-Transition).

(2) In the VScode TERMINAL, type Julia and press the "Enter" button. Julia will be opened as below:

image

(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory) or activate yourpath/home/HOPE (if you are not in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully.

image

(4) Type instantiate in the (HOPE) pkg prompt (make sure you are in your home directory, not the home/HOPE directory!).

(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)

image

(6) If there is no error in the above processes, the HOPE model has been successfully installed! Then, press Backspace button to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope("HOPE/ModelCases/MD_Excel_case/"), you will see the HOPE is running:

image

The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output.

image

(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6.

Using System Terminal to Run a Case

You can use a system terminal either with a "Windows system" or a "Mac system" to run a test case. See details below.

Windows users

(1) Open Command Prompt from Windows Start and navigate to your home path:/yourpath/home.

(2) Type julia. Julia will be opened as below:

image

(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully.

(4) Type instantiate in the (HOPE) pkg prompt. ( After the HOPE is successfully installed, you can skip this step)

(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)

image

(6) If there is no error in the above processes, the HOPE model has been successfully installed. Then, click Backspace to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope("HOPE/ModelCases/MD_Excel_case/"), you will see the HOPE is running:

image

The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output.

image

(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6.

diff --git a/dev/search_index.js b/dev/search_index.js index 118b5b0..7e4a3fa 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"model_introduction/","page":"Model Introduction","title":"Model Introduction","text":"CurrentModule = HOPE","category":"page"},{"location":"model_introduction/#Model-Overview","page":"Model Introduction","title":"Model Overview","text":"","category":"section"},{"location":"model_introduction/","page":"Model Introduction","title":"Model Introduction","text":"The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:","category":"page"},{"location":"model_introduction/","page":"Model Introduction","title":"Model Introduction","text":"GTEP mode: a generation & transmission expansion planning model\nPCM mode: a production cost model\nOPF mode: (under development): an optimal power flow model\nDART mode: (under development): a bilevel market model for simulating day-head and real-time markets","category":"page"},{"location":"GTEP/#Overview","page":"GTEP","title":"Overview","text":"","category":"section"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"The generation and transmission expansion planning (GTEP) model is for investment decision analysis under various policies and energy transition scenarios. This model is a Mixed-Integer Linear Programming (MILP) Problem.","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"The objective of this model is to minimize total system costs, including fixed investment costs, variable operation costs, and penalties for non-compliance with policies. The techno-economic and environmental constraints of this model are budget constraints, power balance, transmission transfer limits, generator operation constraints, storage operation constraints, resource adequacy requirements, and policy constraints (i.e., renewable portfolio standards (RPS) and carbon emission limitations). The decision variables of this model includes integer decision variables for investment in resources and continuous decision variables for operations in representative days.","category":"page"},{"location":"GTEP/#Problem-Formulation","page":"GTEP","title":"Problem Formulation","text":"","category":"section"},{"location":"GTEP/#Objective-function","page":"GTEP","title":"Objective function","text":"","category":"section"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(1) Minimize total system cost:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"beginaligned\n min_Gamma quad\n sum_g in G^+ tildeI_g times x_g + sum_g in G t in TVCG_g times N_t times sum_h in H_tp_gth + \n sum_l in L^+ tildeI_l times y_l + \n sum_s in S^+ tildeI_s times z_s + sum_s in S t in T VCS times N_t times sum_h in H_t (c_sth + dc_sth) + \n sum_d in D t in T VOLL_d times N_t times sum_h in H_t p_dth^LS + \n PT^rps times sum_w in W pt_w^rps + \n PT^emis times sum_w in W em_w^emis \nendaligned","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"Gamma = Bigl x_g y_l z_s f_lh p_gth p_dth^LS c_sth dc_sth soc_sth pt^rps pw_gw pwi_gww em^emis_w a_gt b_gt Bigr","category":"page"},{"location":"GTEP/#Constraints","page":"GTEP","title":"Constraints","text":"","category":"section"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(2) Generator investment budget:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in G_+ tildeI_g times x_g le IBG","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(3) Transmission line investment budget:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_l in L_+ tildeI_l times y_l le IBL","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(4) Storage investment budget:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_s in S_+ tildeI_s times z_s le IBS","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(5) Power balance:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in G_i P_gth + sum_s in S_i (dc_sth - c_sth) - sum_l in LS_i f_lth \n+ sum_l in LR_i f_lth = sum_d in D_i (P_dth - P_dth^LS) forall i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(6) Transmission power flow limit for existing transmission lines:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"- F_l^max le f_glth le F_l^max forall g in G l in L^E h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(7) Transmission power flow limit for new installed transmission lines:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"- y_l times F_l^max le f_glth le y_l times F_l^max forall g in G l in L^+ h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(8) Maximum capacity limits for existing power generation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le p_gth le P_g^max forall g in G_E h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(9) Maximum capacity limits for installed power generation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le p_gth le P_g^max times x_g forall g in G_+ h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(10) Load shedding limit:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le p_gth^LS le P_gth forall d in D_i i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(11) Renewables generation availability for the existing plants:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"p_gh le AFRE_gthi times P_g^max forall g in G_E cap G_i cap (G^PV cup G^W) i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(12) Renewables generation availability for new installed plants:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"p_gh le AFRE_gthi times P_g^max times x_g forall g in G_+ cap G_i cap (G^PV cup G^W) i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(13) Storage charging rate limit for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracc_sthSC_s le SCAP_s forall h in H_t t in T s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(14) Storage discharging rate limit for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracdc_sthSD_s le SCAP_s forall h in H_t t in T s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(15) Storage charging rate limit for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracc_sthSC_s le z_s times SCAP_s forall h in H_t t in T s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(16) Storage discharging rate limit for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracdc_sthSD_s le z_s times SCAP_s forall h in H_t t in T s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(17) Sate of charge limit for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le soc_sth le SECAP_s forall h in H_t t in T s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(18) Sate of charge limit for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le soc_sth le z_s times SECAP_s forall h in H_t t in T s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(19) Storage operation constraints:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"soc_sth = soc_sth-1 + epsilon_ch times c_sth - fracdc_sthepsilon_dis forall h in H_t t in T s in S","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(20) Daily 50% of storage level balancing for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"soc_s1 = soc_send = 05 times SCAP_s s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(21) Daily 50% of storage level balancing for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"soc_st1 = soc_stend = 05 times z_s SCAP_s s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(22) Resource adequacy:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in G_E (CC_g times P_g^max) + sum_g in G_+ (CC_g times P_g^max times x_g) \n+ sum_s in S^E(CC_s times SCAP_s) + sum_s in S^E(CC_s times SCAP_s times z_s) ge (1 + RM) times PK","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(23) RPS policy - State total renewable energy generation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"pw_gw = sum_t in T N_t times sum_h in H_t p+gth forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(24) RPS policy - State renewable credits export limitation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"pw_gw ge sum_w in WER_w pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(25) RPS policy - State renewable credits import limitation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"pw_gw ge pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W w in WIR_w","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(26) RPS policy - Renewable credits trading meets state RPS requirements:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"beginaligned\nsum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WIR_w pwi_gww\n- sum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WER_w pwi_gww + pt_w^rps \nge sum_t in T N_t times sum_i in I_wh in H_t sum_d in D_i p_dth times RPS_w\nw in W\nendaligned","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(27) Cap & Trade - State carbon allowance cap:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in (bigcup_i in I_w G_i) cap G^F a+gt - em_w^emis le ALW_tw w in W t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(28) Cap & Trade - Balance between allowances and emissions:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"N_t sum_h in H_t EF_g times p_gth = a_gt + b_gt-1 = b_gt g in (bigcup_i in I_w G_i) cap G_F w in W t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(29) Cap & Trade - No cross-year banking:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"b_g1 = b_gend = 0 g in G_F","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(30) Binary variables:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"x_g = 01 forall g in G_+\ny_l = 01 forall l in L_+\nz_s = 01 forall s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(31) Nonnegative variable:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"a_gt b_gt p_gth p_dth^LS c_sth soc_sth pt^rps pw_gw pwi_gww em^emis \nge 0","category":"page"},{"location":"PCM/#Introduction","page":"PCM","title":"Introduction","text":"","category":"section"},{"location":"PCM/#Objective-Function","page":"PCM","title":"Objective Function","text":"","category":"section"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(1) Minimize total system cost:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"beginaligned\n min_Gamma quad\n sum_g in G t in TVCG_g times N_t times sum_h in Hp_gh + \n sum_s in S t in T VCS times sum_h in H (c_sh + dc_sh) + \n sum_d in D t in T VOLL_d times sum_h in H p_dh^LS + \n sum_g in G^F t in T CP_g times sum_h in H p_gh + \n sum_w in W h in H PT^rps times pt_wh^rps + \n sum_t in T sum_w in W h in H PT^emis times em_wh^emis\nendaligned","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"Gamma = Bigl a_gt b_gt f_lh p_gh p_dh^LS c_sh dc_sh soc_sh pt_h^rps em^emis_h r_gh^G r_gh^S Bigr","category":"page"},{"location":"PCM/#Constraints","page":"PCM","title":"Constraints","text":"","category":"section"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(2) Power balance:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"sum_g in G_i P_gh + sum_s in S_i (dc_sh - c_sh) - sum_l in LS_i f_lh \n= sum_d in D_i (P_dh - P_dh^LS) forall i in I h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(3) Transmission:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"- F_l^max le f_lh le F_l^max forall l in L h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(4) Operation:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"P_g^min le p_gh + r_gh^G le (1 - FOR_g) times P_g^max forall g in G","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(5) Spinning reserve limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"r_gh^G le RM_g^SPIN times (1 - FOR_g) times P_g^max forall g in G^F","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(6) Ramp limits - 1:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(p_gh + r_gh^G) - p_g h-1 le RU_g times (1 - FOR_g) times P_g^max forall g in G^F h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(7) Ramp limits - 2:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(p_gh + r_gh^G) - p_g h-1 ge -RU_g times (1 - FOR_g) times P_g^max forall g in G^F h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(8) Load shedding limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"0 le p_dh^LS le P_d forall d in D","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(9) Renewables generation availability:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"p_gh le AFRE_ghi times P_g^max forall h in H g in G_PV cup G^W) i in I","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(10) Storage charging rate limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"fracc_shSC_s le SCAP_s forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(11) Storage discharging rate limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"fracdc_shSD_s le SCAP_s forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(12) Storage operation limit - 1:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"0 le soc_sh le SECAP_s forall h in H s in S","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(13) Storage operation limit - 2:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"dc_sh + r_sh^S le SD_s times SCAP_s forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(14) Storage operation limit - 3:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"soc_sh = soc_sh-1 + epsilon_ch times c_sth - fracdc_sthepsilon_dis forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(15) RPS policy - State renewable credits export limitation:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"pw_gw ge sum_w in WER_w pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(16) RPS policy - State renewable credits import limitation:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"pw_gw ge pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W w in WIR_w","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(17) RPS policy - Renewable credits trading meets state RPS requirements:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"beginaligned\nsum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WIR_w pwi_gww\n- sum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WER_w pwi_gww + sum_w in W h in H pt_wh^rps \nge sum_i in I_wh in H sum_d in D_i p_dh times RPS_w\nw in W\nendaligned","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(18) Cap & Trade - State carbon allowance cap:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"sum_g in (bigcup_i in I_w G_i) cap G^F a+gt - sum_t in T N_t em_wh^emis le ALW_tw w in W","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(19) Cap & Trade - Balance between allowances and emissions:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"sum_h in H EF_g times p_gh = a_gt + b_gt-1 = b_gt g in (bigcup_i in I_w G_i) cap G_F w in W t in T","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(20) Cap & Trade - No cross-year banking:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"b_g1 = b_gend = 0 g in G_F","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(21) Nonnegative variable:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"a_gt b_gt p_gh p_dh^LS c_sh soc_sh pt^rps pw_gw pwi_gww em^emis \nge 0","category":"page"},{"location":"installation/","page":"Installation","title":"Installation","text":"CurrentModule = HOPE","category":"page"},{"location":"installation/#Installation","page":"Installation","title":"Installation","text":"","category":"section"},{"location":"installation/#1.-Install-Julia","page":"Installation","title":"1. Install Julia","text":"","category":"section"},{"location":"installation/","page":"Installation","title":"Installation","text":"Install Julia language. A short video tutorial on how to download and install Julia is provided here.","category":"page"},{"location":"installation/#2.-Download-HOPE-repository","page":"Installation","title":"2. Download HOPE repository","text":"","category":"section"},{"location":"installation/","page":"Installation","title":"Installation","text":"Clone or download the HOPE repository to your local directory - click the green \"Code\" button on the HOPE main page and choose \"Download ZIP\" (remember to change the folder name to HOPE after you decompress the zip file). You need to save the HOPE project in your home directory like: /yourpath/home/HOPE. (Image: image)","category":"page"},{"location":"installation/#3.-Solver-Packages","page":"Installation","title":"3. Solver Packages","text":"","category":"section"},{"location":"installation/","page":"Installation","title":"Installation","text":"The open-source solver packages (e.g., Cbc, GLPK, Clp, etc.) will be automatically installed in step 2. While the commercial solver packages (e.g., Groubi and CPLEX) should be installed by users (if needed) by following their instructions. ","category":"page"},{"location":"installation/","page":"Installation","title":"Installation","text":"pkg> add https://github.com/swang22/HOPE.jl","category":"page"},{"location":"reference/","page":"-","title":"-","text":"CurrentModule = HOPE","category":"page"},{"location":"reference/","page":"-","title":"-","text":"","category":"page"},{"location":"reference/","page":"-","title":"-","text":"Modules = [HOPE]","category":"page"},{"location":"#HOPE-Documentation","page":"Introduction","title":"HOPE Documentation","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"CurrentModule = HOPE","category":"page"},{"location":"#Overview","page":"Introduction","title":"Overview","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"The Holistic Optimization Program for Electricity (HOPE) model is a transparent and open-source tool for evaluating electric sector transition pathways and policy scenarios regarding power system planning, system operation, optimal power flow, and market designs. It is a highly configurable and modulized tool coded in the Julia language and optimization package JuMP. The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"GTEP mode: a generation & transmission expansion planning model\nPCM mode: a production cost model\nOPF mode: (under development): an optimal power flow model\nDART mode: (under development): a bilevel market model for simulating day-head and real-time markets","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"Users can select the proper mode of HOPE based on their research needs. Each mode is modeled as linear or mixed-integer linear programming and can be solved with open-source (e.g., Cbc, GLPK, Clp, etc.) or commercial (e.g., Groubi and CPLEX) solver packages.","category":"page"},{"location":"#Contributors","page":"Introduction","title":"Contributors","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"The HOPE model was originally developed by a team of researchers in Prof. Benjamin F. Hobbs's group at Johns Hopkins University. The main developers of the current HOPE version include Dr. Shen Wang, Dr. Mahdi Mehrtash, and Zoe Song.","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"CurrentModule = HOPE","category":"page"},{"location":"run_case/#Run-a-Case-in-HOPE","page":"Run a case","title":"Run a Case in HOPE","text":"","category":"section"},{"location":"run_case/#Using-VScode-to-Run-a-Case-(Recommended)","page":"Run a case","title":"Using VScode to Run a Case (Recommended)","text":"","category":"section"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"Install Visual Studio Code: Download VScode and install it. A short video tutorial on how to install VScode and add Julia to it can be found here.","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(1) Open the VScode, click the 'File' tab, select 'Open Folder...', and navigate to your home working directory:/yourpath/home (The home directory in the examples below is named Maryland-Electric-Sector-Transition). ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(2) In the VScode TERMINAL, type Julia and press the \"Enter\" button. Julia will be opened as below:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory) or activate yourpath/home/HOPE (if you are not in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(4) Type instantiate in the (HOPE) pkg prompt (make sure you are in your home directory, not the home/HOPE directory!).","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(6) If there is no error in the above processes, the HOPE model has been successfully installed! Then, press Backspace button to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope(\"HOPE/ModelCases/MD_Excel_case/\"), you will see the HOPE is running:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6. ","category":"page"},{"location":"run_case/#Using-System-Terminal-to-Run-a-Case","page":"Run a case","title":"Using System Terminal to Run a Case","text":"","category":"section"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"You can use a system terminal either with a \"Windows system\" or a \"Mac system\" to run a test case. See details below.","category":"page"},{"location":"run_case/#Windows-users","page":"Run a case","title":"Windows users","text":"","category":"section"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(1) Open Command Prompt from Windows Start and navigate to your home path:/yourpath/home.","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(2) Type julia. Julia will be opened as below:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(4) Type instantiate in the (HOPE) pkg prompt. ( After the HOPE is successfully installed, you can skip this step)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(6) If there is no error in the above processes, the HOPE model has been successfully installed. Then, click Backspace to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope(\"HOPE/ModelCases/MD_Excel_case/\"), you will see the HOPE is running:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6. ","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"CurrentModule = HOPE","category":"page"},{"location":"notation/#Notation","page":"Notation","title":"Notation","text":"","category":"section"},{"location":"notation/#Sets-and-Indices","page":"Notation","title":"Sets and Indices","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\nD Set of demand, index d\nG Set of all types of generating units, index g\nH Set of hours, index h\nK Set of technology types, index k\nT Set of time periods (e.g., representative days of seasons), index t\nS Set of storage units, index s\nIJ Set of zones, index ij\nL Set of transmission corridors, index l\nW Set of states, index ww","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/#Subsets","page":"Notation","title":"Subsets","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\nD_i Set of demand connected to zone i, a subset of D\nG^PV, G^W, G^F Set of solar, wind, and dispatchable generators, respectively, subsets of G\nG^RPS Set of generators could provide RPS credits, subsets of G\nG^L_l Set of generators linked to line i, subset of G\nG_i Set of generating units connected to zone i, subset of G\nG^EG^+ Set of existing/candidate generation units, index g, subset of G\nH_t Set of hours in time period (day) t, index h, subset of H\nS^ES^+ Set of existing/candidate storage units, subset of S\nS_i Set of storage units connected to zone i, subset of S\nL^EL^+ Set of existing/candidate transmission corridors\nLS_lLR_l Set of sending/receiving corridors for zone i, subset of L\nWIR_w Set of states that state w can import renewable credits from (includes w itself), subset of W\nWER_w Set of states that state w can export renewable credits to (excludes w itself), subset of W","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/#Parameters","page":"Notation","title":"Parameters","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\nALW_tw Total carbon allowance in time period t in state w, ton\nAFRE_ghi Availability factor of renewable energy source g in hour h in zone i, g in G^PV bigcup G^W\nCC_gs Capacity credit of resource gs, unitless\nCP_g Carbon price of generation g in G^F, M/t\nEF_g Carbon emission factor of generator g, t/MWh\nELMT_w Carbon emission limits at state w t\nF^max_l Maximum capacity of transmission corridor/line l, MW\ntildeI_g Investment cost of candidate generator g, M$\ntildeI_l Investment cost of transmission line l, M$\ntildeI_s Investment cost of storage unit s, M$\nIBG Total investment budget for generators\nIBL Total investment budget for transmission lines\nIBS Total investment budget for storages\nN_t Number of time periods (days) represented by time period (day) t per year, /sum{t /in T} N{t}\nNI_ih Net interchange in zone i in hour $h, MWh\nP_dh Active power demand, MW\nPK Peak power demand, MW\nPT^rps RPS volitation penalty, /MWh\nPT^emis Carbon emission volitation penalty, /t\nP_g^minP_g^max Minimum/Maximum power generation of unit g, MW\nRPS_w Renewable portfolio standard in state w, %, unitless\nRM Planning reserve margin, unitless\nSCAP_s Maximum capacity of storage unit s, MW\nSECAP_s Maximum energy capacity of storage unit s, MWh\nSC_sSD_s The maximum rates of charging/discharging, unitless\nVCG_g Variable cost of generation unit g, / MWh\nVCS_g Variable (degradation) cost of storage unit s, / MWh\nVOLL_d Value of loss of load d, /MWh\nepsilon_ch Charging efficiency of storage unit s, unitless\nepsilon_dis Discharging efficiency of storage unit s, unitless","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/#Variables","page":"Notation","title":"Variables","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\na_gt Bidding carbon allowance of unit g in time period t, ton\nb_gt Banking of allowance of g in time period t, ton\np_gth Active power generation of unit g in time period t hour h, MW\npw_gw Total renewable generation of unit g in state w, MWh\np^LS_dth Load shedding of demand d in time period t in hour h, MW\npt^rps_w Amount of active power violated RPS policy in state w, MW\npwi_gww State w imported renewable credits of from state w annually, MWh\nf_lth Active power of generator g through transmission corridor/line l in time period t and hour h, MW\nem^emis_w Carbon emission violated emission limit in state w, ton\nx_g Decision variable for candidate generator g, binary\ny_l Decision variable for candidate line l, binary\nz_s Decision variable for candidate storage s, binary\nsoc_sth State of charge level of storage s in time period t in hour h, MWh\nc_sth Charging power of storage s from grid in time period t in hour h, MW\ndc_sth Discharging power of storage s from grid in time period t in hour h, MW","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"}] +[{"location":"model_introduction/","page":"Model Introduction","title":"Model Introduction","text":"CurrentModule = HOPE","category":"page"},{"location":"model_introduction/#Model-Overview","page":"Model Introduction","title":"Model Overview","text":"","category":"section"},{"location":"model_introduction/","page":"Model Introduction","title":"Model Introduction","text":"The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:","category":"page"},{"location":"model_introduction/","page":"Model Introduction","title":"Model Introduction","text":"GTEP mode: a generation & transmission expansion planning model\nPCM mode: a production cost model\nOPF mode: (under development): an optimal power flow model\nDART mode: (under development): a bilevel market model for simulating day-head and real-time markets","category":"page"},{"location":"GTEP/#Overview","page":"GTEP","title":"Overview","text":"","category":"section"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"The generation and transmission expansion planning (GTEP) model is for investment decision analysis under various policies and energy transition scenarios. This model is a Mixed-Integer Linear Programming (MILP) Problem.","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"The objective of this model is to minimize total system costs, including fixed investment costs, variable operation costs, and penalties for non-compliance with policies. The techno-economic and environmental constraints of this model are budget constraints, power balance, transmission transfer limits, generator operation constraints, storage operation constraints, resource adequacy requirements, and policy constraints (i.e., renewable portfolio standards (RPS) and carbon emission limitations). The decision variables of this model includes integer decision variables for investment in resources and continuous decision variables for operations in representative days.","category":"page"},{"location":"GTEP/#Problem-Formulation","page":"GTEP","title":"Problem Formulation","text":"","category":"section"},{"location":"GTEP/#Objective-function","page":"GTEP","title":"Objective function","text":"","category":"section"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(1) Minimize total system cost:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"beginaligned\n min_Gamma quad\n sum_g in G^+ tildeI_g times x_g + sum_g in G t in TVCG_g times N_t times sum_h in H_tp_gth + \n sum_l in L^+ tildeI_l times y_l + \n sum_s in S^+ tildeI_s times z_s + sum_s in S t in T VCS times N_t times sum_h in H_t (c_sth + dc_sth) + \n sum_d in D t in T VOLL_d times N_t times sum_h in H_t p_dth^LS + \n PT^rps times sum_w in W pt_w^rps + \n PT^emis times sum_w in W em_w^emis \nendaligned","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"Gamma = Bigl x_g y_l z_s f_lh p_gth p_dth^LS c_sth dc_sth soc_sth pt^rps pw_gw pwi_gww em^emis_w a_gt b_gt Bigr","category":"page"},{"location":"GTEP/#Constraints","page":"GTEP","title":"Constraints","text":"","category":"section"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(2) Generator investment budget:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in G_+ tildeI_g times x_g le IBG","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(3) Transmission line investment budget:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_l in L_+ tildeI_l times y_l le IBL","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(4) Storage investment budget:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_s in S_+ tildeI_s times z_s le IBS","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(5) Power balance:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in G_i P_gth + sum_s in S_i (dc_sth - c_sth) - sum_l in LS_i f_lth \n+ sum_l in LR_i f_lth = sum_d in D_i (P_dth - P_dth^LS) forall i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(6) Transmission power flow limit for existing transmission lines:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"- F_l^max le f_glth le F_l^max forall g in G l in L^E h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(7) Transmission power flow limit for new installed transmission lines:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"- y_l times F_l^max le f_glth le y_l times F_l^max forall g in G l in L^+ h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(8) Maximum capacity limits for existing power generation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le p_gth le P_g^max forall g in G_E h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(9) Maximum capacity limits for installed power generation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le p_gth le P_g^max times x_g forall g in G_+ h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(10) Load shedding limit:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le p_gth^LS le P_gth forall d in D_i i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(11) Renewables generation availability for the existing plants:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"p_gh le AFRE_gthi times P_g^max forall g in G_E cap G_i cap (G^PV cup G^W) i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(12) Renewables generation availability for new installed plants:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"p_gh le AFRE_gthi times P_g^max times x_g forall g in G_+ cap G_i cap (G^PV cup G^W) i in I h in H_t t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(13) Storage charging rate limit for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracc_sthSC_s le SCAP_s forall h in H_t t in T s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(14) Storage discharging rate limit for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracdc_sthSD_s le SCAP_s forall h in H_t t in T s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(15) Storage charging rate limit for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracc_sthSC_s le z_s times SCAP_s forall h in H_t t in T s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(16) Storage discharging rate limit for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"fracdc_sthSD_s le z_s times SCAP_s forall h in H_t t in T s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(17) Sate of charge limit for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le soc_sth le SECAP_s forall h in H_t t in T s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(18) Sate of charge limit for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"0 le soc_sth le z_s times SECAP_s forall h in H_t t in T s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(19) Storage operation constraints:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"soc_sth = soc_sth-1 + epsilon_ch times c_sth - fracdc_sthepsilon_dis forall h in H_t t in T s in S","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(20) Daily 50% of storage level balancing for existing units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"soc_s1 = soc_send = 05 times SCAP_s s in S_E","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(21) Daily 50% of storage level balancing for new installed units:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"soc_st1 = soc_stend = 05 times z_s SCAP_s s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(22) Resource adequacy:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in G_E (CC_g times P_g^max) + sum_g in G_+ (CC_g times P_g^max times x_g) \n+ sum_s in S^E(CC_s times SCAP_s) + sum_s in S^E(CC_s times SCAP_s times z_s) ge (1 + RM) times PK","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(23) RPS policy - State total renewable energy generation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"pw_gw = sum_t in T N_t times sum_h in H_t p+gth forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(24) RPS policy - State renewable credits export limitation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"pw_gw ge sum_w in WER_w pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(25) RPS policy - State renewable credits import limitation:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"pw_gw ge pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W w in WIR_w","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(26) RPS policy - Renewable credits trading meets state RPS requirements:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"beginaligned\nsum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WIR_w pwi_gww\n- sum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WER_w pwi_gww + pt_w^rps \nge sum_t in T N_t times sum_i in I_wh in H_t sum_d in D_i p_dth times RPS_w\nw in W\nendaligned","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(27) Cap & Trade - State carbon allowance cap:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"sum_g in (bigcup_i in I_w G_i) cap G^F a+gt - em_w^emis le ALW_tw w in W t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(28) Cap & Trade - Balance between allowances and emissions:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"N_t sum_h in H_t EF_g times p_gth = a_gt + b_gt-1 = b_gt g in (bigcup_i in I_w G_i) cap G_F w in W t in T","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(29) Cap & Trade - No cross-year banking:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"b_g1 = b_gend = 0 g in G_F","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(30) Binary variables:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"x_g = 01 forall g in G_+\ny_l = 01 forall l in L_+\nz_s = 01 forall s in S_+","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"(31) Nonnegative variable:","category":"page"},{"location":"GTEP/","page":"GTEP","title":"GTEP","text":"a_gt b_gt p_gth p_dth^LS c_sth soc_sth pt^rps pw_gw pwi_gww em^emis \nge 0","category":"page"},{"location":"PCM/#Overview","page":"PCM","title":"Overview","text":"","category":"section"},{"location":"PCM/","page":"PCM","title":"PCM","text":"The production cost model (PCM) is for system operation analysis under various policies and energy transition scenarios. This model is a Linear Programming Problem.","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"The objective of this model is to minimize the system's (given by the planning model) total cost, including variable operation costs and penalties for non-compliance with policies. The constraints of this model are power balance, transmission transfer limit, generator operation constraints, storage operation constraints, resource adequacy requirements, and policy constraints (i.e., renewable portfolio standards (RPS) and carbon emission limitations).  The continuous decision variables of the PCM model are hourly operations of resources for a target year.","category":"page"},{"location":"PCM/#Problem-Formulation","page":"PCM","title":"Problem Formulation","text":"","category":"section"},{"location":"PCM/#Objective-function","page":"PCM","title":"Objective function","text":"","category":"section"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(1) Minimize total system cost:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"beginaligned\n min_Gamma quad\n sum_g in G t in TVCG_g times N_t times sum_h in Hp_gh + \n sum_s in S t in T VCS times sum_h in H (c_sh + dc_sh) + \n sum_d in D t in T VOLL_d times sum_h in H p_dh^LS + \n sum_g in G^F t in T CP_g times sum_h in H p_gh + \n sum_w in W h in H PT^rps times pt_wh^rps + \n sum_t in T sum_w in W h in H PT^emis times em_wh^emis\nendaligned","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"Gamma = Bigl a_gt b_gt f_lh p_gh p_dh^LS c_sh dc_sh soc_sh pt_h^rps em^emis_h r_gh^G r_gh^S Bigr","category":"page"},{"location":"PCM/#Constraints","page":"PCM","title":"Constraints","text":"","category":"section"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(2) Power balance:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"sum_g in G_i P_gh + sum_s in S_i (dc_sh - c_sh) - sum_l in LS_i f_lh \n= sum_d in D_i (P_dh - P_dh^LS) forall i in I h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(3) Transmission:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"- F_l^max le f_lh le F_l^max forall l in L h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(4) Operation:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"P_g^min le p_gh + r_gh^G le (1 - FOR_g) times P_g^max forall g in G","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(5) Spinning reserve limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"r_gh^G le RM_g^SPIN times (1 - FOR_g) times P_g^max forall g in G^F","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(6) Ramp limits - 1:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(p_gh + r_gh^G) - p_g h-1 le RU_g times (1 - FOR_g) times P_g^max forall g in G^F h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(7) Ramp limits - 2:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(p_gh + r_gh^G) - p_g h-1 ge -RU_g times (1 - FOR_g) times P_g^max forall g in G^F h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(8) Load shedding limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"0 le p_dh^LS le P_d forall d in D","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(9) Renewables generation availability:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"p_gh le AFRE_ghi times P_g^max forall h in H g in G_PV cup G^W) i in I","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(10) Storage charging rate limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"fracc_shSC_s le SCAP_s forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(11) Storage discharging rate limit:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"fracdc_shSD_s le SCAP_s forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(12) Storage operation limit - 1:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"0 le soc_sh le SECAP_s forall h in H s in S","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(13) Storage operation limit - 2:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"dc_sh + r_sh^S le SD_s times SCAP_s forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(14) Storage operation limit - 3:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"soc_sh = soc_sh-1 + epsilon_ch times c_sth - fracdc_sthepsilon_dis forall h in H","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(15) RPS policy - State renewable credits export limitation:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"pw_gw ge sum_w in WER_w pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(16) RPS policy - State renewable credits import limitation:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"pw_gw ge pwi_gww forall g in (bigcup_i in I_w G_i) cap (G^RPS) w in W w in WIR_w","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(17) RPS policy - Renewable credits trading meets state RPS requirements:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"beginaligned\nsum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WIR_w pwi_gww\n- sum_g in (bigcup_i in I_w G_i) cap (G^RPS) w in WER_w pwi_gww + sum_w in W h in H pt_wh^rps \nge sum_i in I_wh in H sum_d in D_i p_dh times RPS_w\nw in W\nendaligned","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(18) Cap & Trade - State carbon allowance cap:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"sum_g in (bigcup_i in I_w G_i) cap G^F a+gt - sum_t in T N_t em_wh^emis le ALW_tw w in W","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(19) Cap & Trade - Balance between allowances and emissions:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"sum_h in H EF_g times p_gh = a_gt + b_gt-1 = b_gt g in (bigcup_i in I_w G_i) cap G_F w in W t in T","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(20) Cap & Trade - No cross-year banking:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"b_g1 = b_gend = 0 g in G_F","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"(21) Nonnegative variable:","category":"page"},{"location":"PCM/","page":"PCM","title":"PCM","text":"a_gt b_gt p_gh p_dh^LS c_sh soc_sh pt^rps pw_gw pwi_gww em^emis \nge 0","category":"page"},{"location":"installation/","page":"Installation","title":"Installation","text":"CurrentModule = HOPE","category":"page"},{"location":"installation/#Installation","page":"Installation","title":"Installation","text":"","category":"section"},{"location":"installation/#1.-Install-Julia","page":"Installation","title":"1. Install Julia","text":"","category":"section"},{"location":"installation/","page":"Installation","title":"Installation","text":"Install Julia language. A short video tutorial on how to download and install Julia is provided here.","category":"page"},{"location":"installation/#2.-Download-HOPE-repository","page":"Installation","title":"2. Download HOPE repository","text":"","category":"section"},{"location":"installation/","page":"Installation","title":"Installation","text":"Clone or download the HOPE repository to your local directory - click the green \"Code\" button on the HOPE main page and choose \"Download ZIP\" (remember to change the folder name to HOPE after you decompress the zip file). You need to save the HOPE project in your home directory like: /yourpath/home/HOPE. (Image: image)","category":"page"},{"location":"installation/#3.-Solver-Packages","page":"Installation","title":"3. Solver Packages","text":"","category":"section"},{"location":"installation/","page":"Installation","title":"Installation","text":"The open-source solver packages (e.g., Cbc, GLPK, Clp, etc.) will be automatically installed in step 2. While the commercial solver packages (e.g., Groubi and CPLEX) should be installed by users (if needed) by following their instructions. ","category":"page"},{"location":"installation/","page":"Installation","title":"Installation","text":"pkg> add https://github.com/swang22/HOPE.jl","category":"page"},{"location":"reference/","page":"-","title":"-","text":"CurrentModule = HOPE","category":"page"},{"location":"reference/","page":"-","title":"-","text":"","category":"page"},{"location":"reference/","page":"-","title":"-","text":"Modules = [HOPE]","category":"page"},{"location":"#HOPE-Documentation","page":"Introduction","title":"HOPE Documentation","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"CurrentModule = HOPE","category":"page"},{"location":"#Overview","page":"Introduction","title":"Overview","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"The Holistic Optimization Program for Electricity (HOPE) model is a transparent and open-source tool for evaluating electric sector transition pathways and policy scenarios regarding power system planning, system operation, optimal power flow, and market designs. It is a highly configurable and modulized tool coded in the Julia language and optimization package JuMP. The HOPE consists of multiple modes for modeling optimization problems of modern power systems and electricity markets, including:","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"GTEP mode: a generation & transmission expansion planning model\nPCM mode: a production cost model\nOPF mode: (under development): an optimal power flow model\nDART mode: (under development): a bilevel market model for simulating day-head and real-time markets","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"Users can select the proper mode of HOPE based on their research needs. Each mode is modeled as linear or mixed-integer linear programming and can be solved with open-source (e.g., Cbc, GLPK, Clp, etc.) or commercial (e.g., Groubi and CPLEX) solver packages.","category":"page"},{"location":"#Contributors","page":"Introduction","title":"Contributors","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"The HOPE model was originally developed by a team of researchers in Prof. Benjamin F. Hobbs's group at Johns Hopkins University. The main developers of the current HOPE version include Dr. Shen Wang, Dr. Mahdi Mehrtash, and Zoe Song.","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"CurrentModule = HOPE","category":"page"},{"location":"run_case/#Run-a-Case-in-HOPE","page":"Run a case","title":"Run a Case in HOPE","text":"","category":"section"},{"location":"run_case/#Using-VScode-to-Run-a-Case-(Recommended)","page":"Run a case","title":"Using VScode to Run a Case (Recommended)","text":"","category":"section"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"Install Visual Studio Code: Download VScode and install it. A short video tutorial on how to install VScode and add Julia to it can be found here.","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(1) Open the VScode, click the 'File' tab, select 'Open Folder...', and navigate to your home working directory:/yourpath/home (The home directory in the examples below is named Maryland-Electric-Sector-Transition). ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(2) In the VScode TERMINAL, type Julia and press the \"Enter\" button. Julia will be opened as below:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory) or activate yourpath/home/HOPE (if you are not in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(4) Type instantiate in the (HOPE) pkg prompt (make sure you are in your home directory, not the home/HOPE directory!).","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(6) If there is no error in the above processes, the HOPE model has been successfully installed! Then, press Backspace button to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope(\"HOPE/ModelCases/MD_Excel_case/\"), you will see the HOPE is running:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6. ","category":"page"},{"location":"run_case/#Using-System-Terminal-to-Run-a-Case","page":"Run a case","title":"Using System Terminal to Run a Case","text":"","category":"section"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"You can use a system terminal either with a \"Windows system\" or a \"Mac system\" to run a test case. See details below.","category":"page"},{"location":"run_case/#Windows-users","page":"Run a case","title":"Windows users","text":"","category":"section"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(1) Open Command Prompt from Windows Start and navigate to your home path:/yourpath/home.","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(2) Type julia. Julia will be opened as below:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(3) Type ] into the Julia package mode, and type activate HOPE (if you are in your home directory), you will see prompt (@v1.8) pkg> changing to (HOPE) pkg>, which means the HOPE project is activated successfully. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(4) Type instantiate in the (HOPE) pkg prompt. ( After the HOPE is successfully installed, you can skip this step)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(5) Type st to check that the dependencies (packages that HOPE needs) have been installed. Type up to update the version of dependencies (packages). (This step may take some time when you install HOPE for the first time. After the HOPE is successfully installed, you can skip this step)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(6) If there is no error in the above processes, the HOPE model has been successfully installed. Then, click Backspace to return to the Juila prompt. To run an example case (e.g., default Maryland 2035 case in PCM mode), type using HOPE, and type HOPE.run_hope(\"HOPE/ModelCases/MD_Excel_case/\"), you will see the HOPE is running:","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"The results will be saved in yourpath/home/HOPE/ModelCases/MD_Excel_case/output. ","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(Image: image)","category":"page"},{"location":"run_case/","page":"Run a case","title":"Run a case","text":"(7) For your future new runs, you can skip steps 4 and 5, and just follow steps 1, 2, 3, 6. ","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"CurrentModule = HOPE","category":"page"},{"location":"notation/#Notation","page":"Notation","title":"Notation","text":"","category":"section"},{"location":"notation/#Sets-and-Indices","page":"Notation","title":"Sets and Indices","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\nD Set of demand, index d\nG Set of all types of generating units, index g\nH Set of hours, index h\nK Set of technology types, index k\nT Set of time periods (e.g., representative days of seasons), index t\nS Set of storage units, index s\nIJ Set of zones, index ij\nL Set of transmission corridors, index l\nW Set of states, index ww","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/#Subsets","page":"Notation","title":"Subsets","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\nD_i Set of demand connected to zone i, a subset of D\nG^PV, G^W, G^F Set of solar, wind, and dispatchable generators, respectively, subsets of G\nG^RPS Set of generators could provide RPS credits, subsets of G\nG^L_l Set of generators linked to line i, subset of G\nG_i Set of generating units connected to zone i, subset of G\nG^EG^+ Set of existing/candidate generation units, index g, subset of G\nH_t Set of hours in time period (day) t, index h, subset of H\nS^ES^+ Set of existing/candidate storage units, subset of S\nS_i Set of storage units connected to zone i, subset of S\nL^EL^+ Set of existing/candidate transmission corridors\nLS_lLR_l Set of sending/receiving corridors for zone i, subset of L\nWIR_w Set of states that state w can import renewable credits from (includes w itself), subset of W\nWER_w Set of states that state w can export renewable credits to (excludes w itself), subset of W","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/#Parameters","page":"Notation","title":"Parameters","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\nALW_tw Total carbon allowance in time period t in state w, ton\nAFRE_ghi Availability factor of renewable energy source g in hour h in zone i, g in G^PV bigcup G^W\nCC_gs Capacity credit of resource gs, unitless\nCP_g Carbon price of generation g in G^F, M/t\nEF_g Carbon emission factor of generator g, t/MWh\nELMT_w Carbon emission limits at state w t\nF^max_l Maximum capacity of transmission corridor/line l, MW\ntildeI_g Investment cost of candidate generator g, M$\ntildeI_l Investment cost of transmission line l, M$\ntildeI_s Investment cost of storage unit s, M$\nIBG Total investment budget for generators\nIBL Total investment budget for transmission lines\nIBS Total investment budget for storages\nN_t Number of time periods (days) represented by time period (day) t per year, /sum{t /in T} N{t}\nNI_ih Net interchange in zone i in hour $h, MWh\nP_dh Active power demand, MW\nPK Peak power demand, MW\nPT^rps RPS volitation penalty, /MWh\nPT^emis Carbon emission volitation penalty, /t\nP_g^minP_g^max Minimum/Maximum power generation of unit g, MW\nRPS_w Renewable portfolio standard in state w, %, unitless\nRM Planning reserve margin, unitless\nSCAP_s Maximum capacity of storage unit s, MW\nSECAP_s Maximum energy capacity of storage unit s, MWh\nSC_sSD_s The maximum rates of charging/discharging, unitless\nVCG_g Variable cost of generation unit g, / MWh\nVCS_g Variable (degradation) cost of storage unit s, / MWh\nVOLL_d Value of loss of load d, /MWh\nepsilon_ch Charging efficiency of storage unit s, unitless\nepsilon_dis Discharging efficiency of storage unit s, unitless","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/#Variables","page":"Notation","title":"Variables","text":"","category":"section"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"Notation Description\na_gt Bidding carbon allowance of unit g in time period t, ton\nb_gt Banking of allowance of g in time period t, ton\np_gth Active power generation of unit g in time period t hour h, MW\npw_gw Total renewable generation of unit g in state w, MWh\np^LS_dth Load shedding of demand d in time period t in hour h, MW\npt^rps_w Amount of active power violated RPS policy in state w, MW\npwi_gww State w imported renewable credits of from state w annually, MWh\nf_lth Active power of generator g through transmission corridor/line l in time period t and hour h, MW\nem^emis_w Carbon emission violated emission limit in state w, ton\nx_g Decision variable for candidate generator g, binary\ny_l Decision variable for candidate line l, binary\nz_s Decision variable for candidate storage s, binary\nsoc_sth State of charge level of storage s in time period t in hour h, MWh\nc_sth Charging power of storage s from grid in time period t in hour h, MW\ndc_sth Discharging power of storage s from grid in time period t in hour h, MW","category":"page"},{"location":"notation/","page":"Notation","title":"Notation","text":"","category":"page"}] }