openstudio-load-flexibility-measures 0.9.0 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/LICENSE.md +1 -1
- data/README.md +1 -0
- data/lib/measures/PeakPeriodSchedulesShift/LICENSE.md +13 -0
- data/lib/measures/PeakPeriodSchedulesShift/README.md +140 -0
- data/lib/measures/PeakPeriodSchedulesShift/README.md.erb +106 -0
- data/lib/measures/PeakPeriodSchedulesShift/docs/measures-overview.png +0 -0
- data/lib/measures/PeakPeriodSchedulesShift/docs/other-examples1.png +0 -0
- data/lib/measures/PeakPeriodSchedulesShift/docs/other-examples2.png +0 -0
- data/lib/measures/PeakPeriodSchedulesShift/docs/other-examples3.png +0 -0
- data/lib/measures/PeakPeriodSchedulesShift/measure.rb +441 -0
- data/lib/measures/PeakPeriodSchedulesShift/measure.xml +230 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/PeakPeriodSchedulesShift_Test.rb +603 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/base-schedules-detailed-occupancy-stochastic.osm +8306 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/base.osm +15647 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/files/schedules20230418-20180-18nykxu.csv +8761 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/files/unmodified_schedules.csv +8761 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/test_smooth_schedules.osm +23698 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/test_stochastic_schedules.osm +8985 -0
- data/lib/measures/PeakPeriodSchedulesShift/tests/test_stochastic_schedules_no_stacking.osm +8306 -0
- data/lib/measures/ShiftScheduleByType/LICENSE.md +1 -1
- data/lib/measures/ShiftScheduleByType/measure.xml +23 -23
- data/lib/measures/add_central_ice_storage/LICENSE.md +1 -1
- data/lib/measures/add_central_ice_storage/measure.xml +3 -3
- data/lib/measures/add_hpwh/LICENSE.md +1 -1
- data/lib/measures/add_hpwh/measure.rb +19 -19
- data/lib/measures/add_hpwh/measure.xml +4 -4
- data/lib/measures/add_packaged_ice_storage/LICENSE.md +1 -1
- data/lib/measures/add_packaged_ice_storage/measure.xml +3 -3
- data/lib/openstudio/load_flexibility_measures/version.rb +1 -1
- data/openstudio-load-flexibility-measures.gemspec +2 -3
- metadata +23 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b827295300d90067bd7a9664a6fa935f432896caf922871fb2d1638efd8e5f69
|
4
|
+
data.tar.gz: 319fbb0cd35c79b8ff9911322e651dc6db7502c6f1b7a4d479865da8e029d123
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd8f8b850c7aaa337ea306e9992123e2f2fe000156e269105674f3d9a97eadb5d3f3af8e572d9a8e5c14703a6b32506d1c9f3d96498749761b274ccfa1837219
|
7
|
+
data.tar.gz: edc05b3d56f4fe2accfff8320ea7974f50ed3db03d1d8389dbeb04f5b1f1292716623e23f2f08c5eb1ae7a2f74194727e57eb00ed21a1df98ce0039e319c30c7
|
data/CHANGELOG.md
CHANGED
data/LICENSE.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
OpenStudio(R), Copyright (c) 2008,
|
1
|
+
OpenStudio(R), Copyright (c) 2008, 2024 Alliance for Sustainable Energy, LLC.
|
2
2
|
|
3
3
|
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
4
4
|
|
data/README.md
CHANGED
@@ -31,6 +31,7 @@ Detailed instructions for usage are included in each measure's respective README
|
|
31
31
|
|
32
32
|
|OpenStudio Load Flexibility Measures Gem|OpenStudio|Ruby|
|
33
33
|
|:--------------:|:----------:|:--------:|
|
34
|
+
| 0.10.0| 3.9 | 3.2.2 |
|
34
35
|
| 0.9.0| 3.8 | 3.2.2 |
|
35
36
|
| 0.8.0| 3.7 | 2.7 |
|
36
37
|
| 0.7.0| 3.6 | 2.7 |
|
@@ -0,0 +1,13 @@
|
|
1
|
+
OpenStudio(R), Copyright (c) 2008, 2024 Alliance for Sustainable Energy, LLC.
|
2
|
+
|
3
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
4
|
+
|
5
|
+
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
6
|
+
|
7
|
+
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
8
|
+
|
9
|
+
3. Redistribution of this software, without modification, must refer to the software by the same designation. Redistribution of a modified version of this software (i) may not refer to the modified version by the same designation, or by any confusingly similar designation, and (ii) must refer to the underlying software originally provided by Alliance as “OpenStudio®”. Except to comply with the foregoing, the term “OpenStudio®”, or any confusingly similar designation may not be used to refer to any modified version of this software or any modified version of the underlying software originally provided by Alliance without the prior written consent of Alliance.
|
10
|
+
|
11
|
+
4. The name of the copyright holder(s), any contributors, the United States Government, the United States Department of Energy, or any of their employees may not be used to endorse or promote products derived from this software without specific prior written permission from the respective party.
|
12
|
+
|
13
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND ANY CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S), ANY CONTRIBUTORS, THE UNITED STATES GOVERNMENT, OR THE UNITED STATES DEPARTMENT OF ENERGY, NOR ANY OF THEIR EMPLOYEES, BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@@ -0,0 +1,140 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
###### (Automatically generated documentation)
|
4
|
+
|
5
|
+
# PeakPeriodSchedulesShift
|
6
|
+
|
7
|
+
## Description
|
8
|
+
Shifts select weekday (or weekday/weekend) schedules out of a peak period.
|
9
|
+
|
10
|
+
## Modeler Description
|
11
|
+
Enter a peak period window, a delay value, and any applicable ScheduleRuleset or ScheduleFile schedules. Shift all schedule values falling within the peak period to after the end (offset by delay) of the peak period. Optionally prevent stacking of schedule values by only allowing shifts to all-zero periods. Optionally apply schedule shifts to weekend days.
|
12
|
+
|
13
|
+
## Measure Type
|
14
|
+
ModelMeasure
|
15
|
+
|
16
|
+
## Taxonomy
|
17
|
+
Whole Building.Whole Building Schedules
|
18
|
+
|
19
|
+
___
|
20
|
+
## Table of Contents
|
21
|
+
- [Measure Overview](#measure-overview)<br/>
|
22
|
+
- [Other Examples](#other-examples)<br/>
|
23
|
+
- [Automatically Generated Argument List](#arguments)<br/>
|
24
|
+
|
25
|
+
## Measure Overview
|
26
|
+
|
27
|
+
The intent of this measure is to give the user the ability to shift schedules, thereby giving some control over the timing of energy use.
|
28
|
+
A daily peak period is defined using a start and end hour of the day.
|
29
|
+
This represents a peak demand window for which customers, e.g., might be penalized for running home appliances.
|
30
|
+
Schedule values falling within the peak period are then shifted back in time, to start at the end of the peak period.
|
31
|
+
An optional delay value can be specified to control how many hours after the peak period final hour the load shift should begin.
|
32
|
+
By default, only schedule values occuring during weekdays can be shifted.
|
33
|
+
However, an optional argument can be supplied to additionally enable schedule shifts for weekend days.
|
34
|
+
Users also have the ability to disallow overlapping of shifted schedules onto any existing events.
|
35
|
+
By default, however, schedules are shifted to periods that already have non-zero schedule values.
|
36
|
+
In terms of specifying which schedules may be shifted, the user may provide comma-separated lists of schedule names for both ScheduleRuleset and ScheduleFile object types.
|
37
|
+
Any schedule whose name is not listed is not available to receive any schedule shifts.
|
38
|
+
|
39
|
+
The following illustrates a simple shift that has been applied to a refrigerator schedule.
|
40
|
+
The first 5 weekdays of the year show the appliance load shifted back to start at the end of the peak period.
|
41
|
+
The peak period does not apply to weekends, and so the final 2 weekend days does not show any shifted schedules.
|
42
|
+
|
43
|
+
![Overview](./docs/measures-overview.png?raw=true)
|
44
|
+
|
45
|
+
It's important to note that although this measure has been written generically to support any schedules of either the ScheduleRuleset of ScheduleFile type, it has only been tested in the context of residential workflows (i.e, ResStock).
|
46
|
+
Users applying this measure in other (untested) workflows should use caution.
|
47
|
+
|
48
|
+
## Other Examples
|
49
|
+
|
50
|
+
Below are additional examples illustrating various scenarios for changing values supplied to measure arguments.
|
51
|
+
|
52
|
+
### Shorter peak period
|
53
|
+
|
54
|
+
*Peak Period*: 5pm - 7pm |
|
55
|
+
*Delay*: None |
|
56
|
+
*Weekdays Only*: Yes
|
57
|
+
|
58
|
+
![Shorter Peak Period](./docs/other-examples1.png?raw=true)
|
59
|
+
|
60
|
+
### Non-zero delay value
|
61
|
+
|
62
|
+
*Peak Period*: 3pm - 7pm |
|
63
|
+
*Delay*: 1hr |
|
64
|
+
*Weekdays Only*: Yes
|
65
|
+
|
66
|
+
![Nonzero Delay Value](./docs/other-examples2.png?raw=true)
|
67
|
+
|
68
|
+
### Applied to weekends
|
69
|
+
|
70
|
+
*Peak Period*: 3pm - 7pm |
|
71
|
+
*Delay*: None |
|
72
|
+
*Weekdays Only*: No
|
73
|
+
|
74
|
+
![Applied To Weekends](./docs/other-examples3.png?raw=true)
|
75
|
+
|
76
|
+
___
|
77
|
+
|
78
|
+
*(Automatically generated argument information follows)*
|
79
|
+
|
80
|
+
## Arguments
|
81
|
+
|
82
|
+
|
83
|
+
### Schedules: Peak Period
|
84
|
+
Specifies the peak period. Enter a time like "15 - 18" (start hour can be 0 through 23 and end hour can be 1 through 24).
|
85
|
+
**Name:** schedules_peak_period,
|
86
|
+
**Type:** String,
|
87
|
+
**Units:** ,
|
88
|
+
**Required:** true,
|
89
|
+
**Model Dependent:** false
|
90
|
+
|
91
|
+
|
92
|
+
### Schedules: Peak Period Delay
|
93
|
+
The number of hours after peak period end.
|
94
|
+
**Name:** schedules_peak_period_delay,
|
95
|
+
**Type:** Integer,
|
96
|
+
**Units:** hr,
|
97
|
+
**Required:** true,
|
98
|
+
**Model Dependent:** false
|
99
|
+
|
100
|
+
|
101
|
+
### Schedules: Peak Period Allow Stacking
|
102
|
+
Whether schedules can be shifted to periods that already have non-zero schedule values. Defaults to true. Note that the schedule type limits upper value is increased to 2.0 when allowing stacked schedule values.
|
103
|
+
**Name:** schedules_peak_period_allow_stacking,
|
104
|
+
**Type:** Boolean,
|
105
|
+
**Units:** ,
|
106
|
+
**Required:** false,
|
107
|
+
**Model Dependent:** false
|
108
|
+
|
109
|
+
|
110
|
+
### Schedules: Peak Period Weekdays Only
|
111
|
+
Whether schedules can be shifted for weekdays only, or weekends as well. Defaults to true.
|
112
|
+
**Name:** schedules_peak_period_weekdays_only,
|
113
|
+
**Type:** Boolean,
|
114
|
+
**Units:** ,
|
115
|
+
**Required:** false,
|
116
|
+
**Model Dependent:** false
|
117
|
+
|
118
|
+
|
119
|
+
### Schedules: Peak Period Schedule Rulesets Names
|
120
|
+
Comma-separated list of Schedule:Ruleset object names corresponding to schedules to shift during the specified peak period.
|
121
|
+
**Name:** schedules_peak_period_schedule_rulesets_names,
|
122
|
+
**Type:** String,
|
123
|
+
**Units:** ,
|
124
|
+
**Required:** false,
|
125
|
+
**Model Dependent:** false
|
126
|
+
|
127
|
+
|
128
|
+
### Schedules: Peak Period Schedule Files Column Names
|
129
|
+
Comma-separated list of column names, referenced by Schedule:File objects, corresponding to schedules to shift during the specified peak period.
|
130
|
+
**Name:** schedules_peak_period_schedule_files_column_names,
|
131
|
+
**Type:** String,
|
132
|
+
**Units:** ,
|
133
|
+
**Required:** false,
|
134
|
+
**Model Dependent:** false
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
|
140
|
+
|
@@ -0,0 +1,106 @@
|
|
1
|
+
<%#= README.md.erb is used to auto-generate README.md. %>
|
2
|
+
<%#= To manually maintain README.md throw away README.md.erb and manually edit README.md %>
|
3
|
+
###### (Automatically generated documentation)
|
4
|
+
|
5
|
+
# <%= name %>
|
6
|
+
|
7
|
+
## Description
|
8
|
+
<%= description %>
|
9
|
+
|
10
|
+
## Modeler Description
|
11
|
+
<%= modelerDescription %>
|
12
|
+
|
13
|
+
## Measure Type
|
14
|
+
<%= measureType %>
|
15
|
+
|
16
|
+
## Taxonomy
|
17
|
+
<%= taxonomy %>
|
18
|
+
|
19
|
+
___
|
20
|
+
## Table of Contents
|
21
|
+
- [Measure Overview](#measure-overview)<br/>
|
22
|
+
- [Other Examples](#other-examples)<br/>
|
23
|
+
- [Automatically Generated Argument List](#arguments)<br/>
|
24
|
+
|
25
|
+
## Measure Overview
|
26
|
+
|
27
|
+
The intent of this measure is to give the user the ability to shift schedules, thereby giving some control over the timing of energy use.
|
28
|
+
A daily peak period is defined using a start and end hour of the day.
|
29
|
+
This represents a peak demand window for which customers, e.g., might be penalized for running home appliances.
|
30
|
+
Schedule values falling within the peak period are then shifted back in time, to start at the end of the peak period.
|
31
|
+
An optional delay value can be specified to control how many hours after the peak period final hour the load shift should begin.
|
32
|
+
By default, only schedule values occuring during weekdays can be shifted.
|
33
|
+
However, an optional argument can be supplied to additionally enable schedule shifts for weekend days.
|
34
|
+
Users also have the ability to disallow overlapping of shifted schedules onto any existing events.
|
35
|
+
By default, however, schedules are shifted to periods that already have non-zero schedule values.
|
36
|
+
In terms of specifying which schedules may be shifted, the user may provide comma-separated lists of schedule names for both ScheduleRuleset and ScheduleFile object types.
|
37
|
+
Any schedule whose name is not listed is not available to receive any schedule shifts.
|
38
|
+
|
39
|
+
The following illustrates a simple shift that has been applied to a refrigerator schedule.
|
40
|
+
The first 5 weekdays of the year show the appliance load shifted back to start at the end of the peak period.
|
41
|
+
The peak period does not apply to weekends, and so the final 2 weekend days does not show any shifted schedules.
|
42
|
+
|
43
|
+
![Overview](./docs/measures-overview.png?raw=true)
|
44
|
+
|
45
|
+
It's important to note that although this measure has been written generically to support any schedules of either the ScheduleRuleset of ScheduleFile type, it has only been tested in the context of residential workflows (i.e, ResStock).
|
46
|
+
Users applying this measure in other (untested) workflows should use caution.
|
47
|
+
|
48
|
+
## Other Examples
|
49
|
+
|
50
|
+
Below are additional examples illustrating various scenarios for changing values supplied to measure arguments.
|
51
|
+
|
52
|
+
### Shorter peak period
|
53
|
+
|
54
|
+
*Peak Period*: 5pm - 7pm |
|
55
|
+
*Delay*: None |
|
56
|
+
*Weekdays Only*: Yes
|
57
|
+
|
58
|
+
![Shorter Peak Period](./docs/other-examples1.png?raw=true)
|
59
|
+
|
60
|
+
### Non-zero delay value
|
61
|
+
|
62
|
+
*Peak Period*: 3pm - 7pm |
|
63
|
+
*Delay*: 1hr |
|
64
|
+
*Weekdays Only*: Yes
|
65
|
+
|
66
|
+
![Nonzero Delay Value](./docs/other-examples2.png?raw=true)
|
67
|
+
|
68
|
+
### Applied to weekends
|
69
|
+
|
70
|
+
*Peak Period*: 3pm - 7pm |
|
71
|
+
*Delay*: None |
|
72
|
+
*Weekdays Only*: No
|
73
|
+
|
74
|
+
![Applied To Weekends](./docs/other-examples3.png?raw=true)
|
75
|
+
|
76
|
+
___
|
77
|
+
|
78
|
+
*(Automatically generated argument information follows)*
|
79
|
+
|
80
|
+
## Arguments
|
81
|
+
|
82
|
+
<% arguments.each do |argument| %>
|
83
|
+
### <%= argument[:display_name] %>
|
84
|
+
<%= argument[:description] %>
|
85
|
+
**Name:** <%= argument[:name] %>,
|
86
|
+
**Type:** <%= argument[:type] %>,
|
87
|
+
**Units:** <%= argument[:units] %>,
|
88
|
+
**Required:** <%= argument[:required] %>,
|
89
|
+
**Model Dependent:** <%= argument[:model_dependent] %>
|
90
|
+
<% if argument[:type] == "Choice" && !argument[:model_dependent]%>
|
91
|
+
**Choice Display Names** <%= argument[:choice_display_names] %>
|
92
|
+
<% end %>
|
93
|
+
<% end %>
|
94
|
+
|
95
|
+
<% if arguments.size == 0 %>
|
96
|
+
<%= "This measure does not have any user arguments" %>
|
97
|
+
<% end %>
|
98
|
+
|
99
|
+
<% if outputs.size > 0 %>
|
100
|
+
## Outputs
|
101
|
+
<% output_names = [] %>
|
102
|
+
<% outputs.each do |output| %>
|
103
|
+
<% output_names << output[:display_name] %>
|
104
|
+
<% end %>
|
105
|
+
<%= output_names.join(", ") %>
|
106
|
+
<% end %>
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|