-
Notifications
You must be signed in to change notification settings - Fork 3
/
besos_parametric_accis_functions_imported_2.py
143 lines (116 loc) · 4.19 KB
/
besos_parametric_accis_functions_imported_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
import pandas as pd
from besos import eppy_funcs as ef
from besos.evaluator import EvaluatorEP
from besos.parameters import Parameter, GenericSelector
from besos.problem import EPProblem
from besos.objectives import MeterReader
import accim.sim.accis_single_idf_funcs as accis
import accim.parametric_and_optimisation.funcs_for_besos.param_accis as bf
building = ef.get_building('TestModel.idf')
accis.addAccis(
idf=building,
ScriptType='vrf_mm',
SupplyAirTempInputMethod='temperature difference',
Output_keep_existing=False,
Output_type='standard',
Output_freqs=['hourly'],
# EnergyPlus_version='9.4',
TempCtrl='temperature',
# Output_gen_dataframe=True,
)
# gv = [i for i in building.idfobjects['EnergyManagementSystem:GlobalVariable']]
building.newidfobject(
key='OUTPUT:METER',
Key_Name='Electricity:Facility',
Reporting_Frequency='RunPeriod'
)
building.newidfobject(
key='OUTPUT:METER',
Key_Name='Electricity:HVAC',
Reporting_Frequency='RunPeriod'
)
# available_outputs = print_available_outputs_mod(building)
comfstand_range = [1, 2, 3]
cat_range = [1, 2, 3]
comfmod_range = [3]
samples = pd.DataFrame(columns=['ComfStand', 'CAT', 'ComfMod'])
index_val = 0
for i in comfstand_range:
# samples.loc[index_val, 'ComfStand'] = i
for j in cat_range:
# samples.loc[index_val, 'CAT'] = j
for k in comfmod_range:
samples.loc[index_val, 'ComfMod'] = k
samples.loc[index_val, 'ComfStand'] = i
samples.loc[index_val, 'CAT'] = j
index_val = index_val + 1
samples_filtered = bf.drop_invalid_param_combinations(samples)
##
parameters = [
Parameter(
name='ComfStand',
# selector=GenericSelector(set=change_adaptive_coeff),
selector=GenericSelector(set=bf.modify_ComfStand),
# value_descriptors=CategoryParameter(options=comfstand_range)
),
Parameter(
name='CAT',
# selector=GenericSelector(set=change_PMV_setpoints),
selector=GenericSelector(set=bf.modify_CAT),
# value_descriptors=CategoryParameter(options=cat_range)
),
Parameter(
name='ComfMod',
# selector=GenericSelector(set=change_PMV_setpoints),
selector=GenericSelector(set=bf.modify_ComfMod),
# value_descriptors=CategoryParameter(options=comfmod_range)
),
]
# Objectives
# objs_comfhours = []
# for i in range(len(available_outputs.variablereaderlist)):
# if 'hour' in available_outputs.variablereaderlist[i][1].lower():
# objs_comfhours.append(
# VariableReader(
# key_value=available_outputs.variablereaderlist[i][0],
# variable_name=available_outputs.variablereaderlist[i][1],
# frequency=available_outputs.variablereaderlist[i][2],
# name=available_outputs.variablereaderlist[i][1]
# )
# )
#
objectives = [
MeterReader("Electricity:Facility", name="Total Electricity Usage"),
MeterReader("Electricity:HVAC", name="HVAC Electricity Usage"),
# VariableReader(
# key_value='Whole Building',
# variable_name='Facility Total HVAC Electricity Demand Rate',
# frequency='Hourly',
# name='HVAC Electricity usage'
# )
]
problem = EPProblem(
inputs=parameters,
# outputs=objectives+objs_comfhours
outputs=objectives
)
evaluator = EvaluatorEP(
problem=problem,
building=building,
out_dir='WIP_testing_accim_predef'
)
outputs = evaluator.df_apply(
samples_filtered,
keep_input=True,
keep_dirs=True,
# out_dir='outdir',
processes=5
)
# outputs_mod = outputs
# outputs_mod['energy ratio'] = outputs_mod['HVAC Electricity Usage'] / outputs_mod['Total Electricity Usage']
# generated_buildings = [evaluator.generate_building(df=samples_short, index=i, file_name=f'short_sample_row_{i}') for i in range(5)]
# evaluator.generate_building(df=samples, index=0, file_name='num_0')
# evaluator.generate_building(df=samples, index=1, file_name='num_1')
# evaluator.generate_building(df=samples, index=2, file_name='num_2')
# evaluator.generate_building(df=samples_short, index=3, file_name='num_3')
# evaluator.generate_building(df=samples_short, index=4, file_name='num_4')