You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Clean up documentation for input files
* Update settings documentation
* Further adjustments
* Add horizontal lines to break up page
* Add extra details to close issues
* Remove incorrect parameter
Copy file name to clipboardExpand all lines: docs/inputs/agents.rst
+31-59Lines changed: 31 additions & 59 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,14 +4,8 @@
4
4
Agents
5
5
======
6
6
7
-
In MUSE, an agent-based formulation was originally introduced for the residential and
8
-
commercial building sectors (`Sachs et al. (2019) <https://doi.org/10.1016/j.energy.2019.01.161>`_). Agents are defined using a CSV file, with
9
-
one agent per row, using a format meant specifically for retrofit
10
-
and new-capacity agent pairs. This CSV file can be read using
11
-
:py:func:`~muse.readers.csv.read_agent_parameters`. The data is also
12
-
interpreted to some degree in the factory functions
13
-
:py:func:`~muse.agent.create_retrofit_agent` and
14
-
:py:func:`~muse.agent.create_newcapa_agent`.
7
+
Agents are defined using a CSV file, with
8
+
one agent per row, using a format meant specifically for retrofit and new-capacity agent pairs.
15
9
16
10
For instance, we have the following CSV table:
17
11
@@ -29,38 +23,36 @@ The columns have the following meaning:
29
23
30
24
.. _name:
31
25
32
-
Name
26
+
``Name``
33
27
Name shared by a retrofit and new-capacity agent pair.
34
28
35
-
Type
36
-
One of "New" or "Retrofit". "New" and "Retrofit" agents make up a pair with a given
29
+
``Type``
30
+
One of **New** or **Retrofit**. **New** and **Retrofit** agents make up a pair with a given
37
31
:ref:`name <Name>`. The demand is split into two, with one part coming from
38
32
decommissioned assets, and the other coming from everything else. "Retrofit" agents
39
33
invest only to make up for decommissioned assets. They are often limited in the
40
-
technologies they can consider (by :ref:`SearchRule <SearchRule>`). "New" agents
34
+
technologies they can consider (by :ref:`SearchRule <SearchRule>`). **New** agents
41
35
invest on the rest of the demand, and can often consider more general sets of
42
-
technologies. If only "New" agents are included, they will also invest to make up for
36
+
technologies. If only **New** agents are included, they will also invest to make up for
43
37
decommissioned assets, but the end mix might be different than using a specialised
44
-
"Retrofit" agent for that.
45
-
*Note: Retrofit agents will be deprecated in a future release.*
38
+
**Retrofit** agent for that.
39
+
**Note: Retrofit agents will be deprecated in a future release.**
46
40
47
-
AgentShare
41
+
``AgentShare``
48
42
Name used to assign a fraction of existing capacity to the agent in the :ref:`inputs-technodata` file.
49
43
If using "New" and "Retrofit" agents, you should create a column with the name of each "Retrofit" agent share (e.g. "Agent1Retro", "Agent2Retro" etc.) in the :ref:`inputs-technodata` file,
50
44
with values summing to 1 for each technology.
51
45
If only using "New" agents, you should create a column with the name of each "New" agent share in the :ref:`inputs-technodata` file,
52
46
with values summing to 1 for each technology.
53
47
See documentation for the :ref:`inputs-technodata` file for more details.
54
48
55
-
RegionName
49
+
``RegionName``
56
50
Region where an agent operates.
57
51
58
52
.. py:currentmodule:: muse.objectives
59
53
60
-
.. _Objective1:
61
-
62
-
Objective1
63
-
First objective that an agent will try and maximize or minimize during investment.
54
+
``Objective1``
55
+
Objective that an agent will try and maximize or minimize during investment.
64
56
This objective should be one registered with
65
57
:py:func:`@register_objective <register_objective>`. The following objectives are
66
58
available with MUSE:
@@ -104,50 +96,27 @@ Objective1
104
96
:ref:`Objsort1 <Objsort1>`. Multiple objectives are combined using the
105
97
:ref:`DecisionMethod <DecisionMethod>`
106
98
107
-
.. _Objective2:
108
-
109
-
Objective2 (optional)
110
-
Second objective. See :ref:`Objective1 <Objective1>`.
111
-
112
-
.. _Objective3:
113
-
114
-
Objective3 (optional)
115
-
Third objective. See :ref:`Objective1 <Objective1>`.
116
99
117
-
.. _ObjData1:
100
+
``ObjData1``
101
+
A weight associated with the objective.
102
+
Whether it is used will depend in large part on the :ref:`decision method <DecisionMethod>`.
118
103
119
-
ObjData1
120
-
A weight associated with the :ref:`first objective <Objective1>`. Whether it is used
121
-
will depend in large part on the :ref:`decision method <DecisionMethod>`.
122
104
123
-
ObjData2 (optional)
124
-
A weight associated with the :ref:`second objective <Objective2>`. See :ref:`ObjData1
125
-
<ObjData1>`.
105
+
``Objsort1``
106
+
Determines whether the objective is maximized or minimized.
107
+
This should be set to "True" for minimization and "False" for maximisation.
126
108
127
-
ObjData3 (optional)
128
-
A weight associated with the :ref:`third objective <Objective3>`. See :ref:`ObjData1
129
-
<ObjData1>`.
109
+
Additional objectives
110
+
For certain decision methods you can use more than one objective.
111
+
In this case, additional objectives can be specified with additional columns (e.g. ``Objective2``, ``ObjData2``, ``Objsort2`` etc.)
112
+
For example, when using the weighted sum decision method, the ``ObjDataX`` column for each objective defines the weight of the objective in the weighted sum calculation.
130
113
131
-
.. _Objsort1:
132
-
133
-
Objsort1
134
-
Sets whether :ref:`first objective <Objective1>` is maximized or minimized. For both
135
-
"adhoc" and "scipy" solvers this should be set to "True" for minimization and
136
-
"False" for maximisation.
137
-
138
-
Objsort2 (optional)
139
-
Objsort parameter for :ref:`second objective <Objective2>`. See :ref:`Objsort1
140
-
<Objsort1>`.
141
-
142
-
Objsort3 (optional)
143
-
Objsort parameter for :ref:`third objective <Objective3>`. See :ref:`Objsort1
144
-
<Objsort1>`.
145
114
146
115
.. py:currentmodule:: muse.filters
147
116
148
117
.. _SearchRule:
149
118
150
-
SearchRule
119
+
``SearchRule``
151
120
The search rule allows users to par down the search space of technologies to those an
152
121
agent is likely to consider.
153
122
The search rule is any function with a given signature, and registered with MUSE via
@@ -186,7 +155,7 @@ SearchRule
186
155
187
156
.. _DecisionMethod:
188
157
189
-
DecisionMethod
158
+
``DecisionMethod``
190
159
Decision methods reduce multiple objectives into a single scalar objective per
191
160
replacement technology. They allow combining several objectives into a single metric
192
161
through which replacement technologies can be ranked.
@@ -217,18 +186,21 @@ DecisionMethod
217
186
The functions allow for any number of objectives. However, the format described here
218
187
allows only for three.
219
188
220
-
Quantity
189
+
``Quantity``
221
190
Represents the fraction of new demand that is assigned to the agent
222
191
(e.g. if 0.2, 20% of new demand in each year will be assigned to the agent).
223
192
Must sum to 1 across all "New" agents.
224
193
When using both "Retrofit" agents and "New" agents, this only applies to the "New" agents.
225
194
226
-
MaturityThreshold (optional)
195
+
Additional optional columns
196
+
Certain columns may also be required when using certain search rules. These are:
197
+
198
+
``MaturityThreshold``
227
199
Only applies when using the :py:func:`maturity <muse.filters.maturity>` search rule.
228
200
Allows agents to only consider technologies that have achieved a certain market share
229
201
(e.g. if 0.5, the agent will only invest in technologies that have a current market share of 50% or more).
230
202
231
-
SpendLimit (optional)
203
+
``SpendLimit``
232
204
Only applies when using the :py:func:`spend_limit <muse.filters.spend_limit>` search rule.
233
205
Allows agents to only consider technologies with a unit capital cost (`cap_par`) lower than the spend limit.
234
206
(e.g. if 10, the agent will only invest in technologies with a `cap_par` of 10 or lower, as listed in the :ref:`inputs-technodata` file).
the internal name used for a commodity inside the model (e.g. "heat" or "elec").
20
19
Any references to commodities in other files must use these names.
21
20
22
-
Description
21
+
``Description`` (optional)
23
22
an extended name/description of a commodity (e.g. "Heating" or "Electricity").
24
23
25
-
CommodityType
26
-
defines the type of a commodity (i.e. Energy, Service, Material, or Environmental).
24
+
``CommodityType``
25
+
defines the type of a commodity:
27
26
28
-
The "energy" type includes energy commodities, such as biomass, electricity, gasoline, and hydrogen,
27
+
The **energy** type includes energy commodities, such as biomass, electricity, gasoline, and hydrogen,
29
28
which are either extracted, transformed from one to another, or used in the energy system.
30
29
31
-
The "service" type includes commodities such as space heating or hot water which correspond to selected
30
+
The **service** type includes commodities such as space heating or hot water which correspond to selected
32
31
people's needs, and whose fulfillment requires energy uses.
33
32
34
-
The "material" type represent non-energy inputs for energy technologies, such as limestone or oxygen.
33
+
The **material** type represent non-energy inputs for energy technologies, such as limestone or oxygen.
35
34
36
-
The "environmental" type refers to non-energy commodities whichare used to quantify an impact on the environment,
35
+
The **environmental** type refers to non-energy commodities whichare used to quantify an impact on the environment,
37
36
such as greenhouse gases or CO2. They can be subjected to different types of environmental fees or taxes.
38
37
39
-
Unit (optional)
38
+
``Unit`` (optional)
40
39
is the unit used to represent quantities of the commodity (e.g "PJ").
41
-
This parameter does not need to be included, as it isn't used in the model, but care should be taken to ensure that units are consistent across all input files.
40
+
This parameter does not need to be included, as it isn't used in the model, but is
41
+
highly recommended for documentation purposes.
42
+
In any case, care should be taken to ensure that units are consistent across all input files.
43
+
44
+
Additional optional columns
45
+
Users can provide additional columns for extra information about the commodity (e.g. ``heat_rate``).
46
+
These will be ignored by the model, but can be useful for documentation purposes.
This is the sector name in which these parameters apply to.
74
74
75
-
FunctionType
75
+
``FunctionType``
76
76
This is the function type you would like to MUSE to use. MUSE allows these to be:
77
77
78
78
- Exponential
@@ -85,13 +85,13 @@ FunctionType
85
85
86
86
Your own functions can be created using the `@register_regression` hook, from the `regressions.py` file.
87
87
88
-
Coeff
88
+
``Coeff``
89
89
This is the coefficient for the respective function type. These are explicitly defined within the `regressions.py` file, as they differ between functions.
90
90
91
-
RegionName
91
+
``RegionName``
92
92
This is the region in which these parameters apply to.
93
93
94
-
Energy service (electricity, gas, heat, CO2f)
94
+
Commodities (one column per commodity)
95
95
Here you can specify the coefficients for the expected demand for the respective commodity.
96
96
97
97
@@ -112,11 +112,11 @@ An example file is shown below:
112
112
5,R1,0,0,0.014145,0,0
113
113
6,R1,0,0,0.085783,0,0
114
114
115
-
SN
115
+
``SN``
116
116
This is the timeslice index.
117
117
118
-
RegionName
118
+
``RegionName``
119
119
This is the region in question for this data.
120
120
121
-
Energy service (electricity, gas, heat, CO2f, wind)
121
+
Commodities (one column per commodity)
122
122
Here you specify the proportion of each energy service for each timeslice.
0 commit comments