def test_pre_post_parameters(consumption_history_1, gsod_722880_2012_2014_weather_source): meter_yaml = """ !obj:eemeter.meter.PrePostMeter { splittable_args: ["consumption_history"], meter: !obj:eemeter.meter.TemperatureSensitivityParameterOptimizationMeter { fuel_unit_str: "kWh", fuel_type: "electricity", temperature_unit_str: "degF", model: !obj:eemeter.models.DoubleBalancePointModel { x0: [1.,1.,1.,60.,7.], bounds: [[0,200],[0,200],[0,2000],[55,65],[2,12]], } }, } """ meter = load(meter_yaml) result = meter.evaluate(consumption_history=consumption_history_1, weather_source=gsod_722880_2012_2014_weather_source, retrofit_start_date=datetime(2013,9,25), retrofit_end_date=datetime(2013,9,25)) assert arrays_similar(result["temp_sensitivity_params_pre"], [0.016883,0.042749,6.013131,65,3.3]) assert arrays_similar(result["temp_sensitivity_params_post"], [0.059923,0.001983,11.129708,55,2]) assert isinstance(result["consumption_history_pre"],ConsumptionHistory) assert isinstance(result["consumption_history_post"],ConsumptionHistory)
def test_weather_normalization(consumption_history_1, gsod_722880_2012_2014_weather_source, tmy3_722880_weather_source): meter_yaml = """ !obj:eemeter.meter.SequentialMeter { sequence: [ !obj:eemeter.meter.TemperatureSensitivityParameterOptimizationMeter { fuel_unit_str: "kWh", fuel_type: "electricity", temperature_unit_str: "degF", model: !obj:eemeter.models.DoubleBalancePointModel &model { x0: [1.,1.,1.,60.,7.], bounds: [[0,200],[0,200],[0,2000],[55,65],[2,12]], } }, !obj:eemeter.meter.AnnualizedUsageMeter { temperature_unit_str: "degF", model: *model } ] } """ meter = load(meter_yaml) result = meter.evaluate(consumption_history=consumption_history_1, weather_source=gsod_722880_2012_2014_weather_source, weather_normal_source=tmy3_722880_weather_source) assert arrays_similar(result['temp_sensitivity_params'], [0.013456,0.029507,8.341199,65,3.8]) assert abs(result['annualized_usage'] - 3087.8412641) < EPSILON
def test_annualized_gross_savings_metric(consumption_history_1, gsod_722880_2012_2014_weather_source, tmy3_722880_weather_source): meter_yaml = """ !obj:eemeter.meter.SequentialMeter { sequence: [ !obj:eemeter.meter.PrePostMeter { splittable_args: ["consumption_history"], meter: !obj:eemeter.meter.TemperatureSensitivityParameterOptimizationMeter { fuel_unit_str: "kWh", fuel_type: "electricity", temperature_unit_str: "degF", model: !obj:eemeter.models.DoubleBalancePointModel &model { x0: [1.,1.,1.,60.,7.], bounds: [[0,200],[0,200],[0,2000],[55,65],[2,12]], } }, }, !obj:eemeter.meter.AnnualizedGrossSavingsMeter { fuel_type: "electricity", temperature_unit_str: "degF", model: *model, } ] } """ meter = load(meter_yaml) result = meter.evaluate(consumption_history=consumption_history_1, weather_source=gsod_722880_2012_2014_weather_source, weather_normal_source=tmy3_722880_weather_source, retrofit_start_date=datetime(2013,9,25), retrofit_end_date=datetime(2013,9,25)) assert arrays_similar(result["temp_sensitivity_params_pre"], [0.016883,0.042749,6.013131,65,3.3]) assert arrays_similar(result["temp_sensitivity_params_post"], [0.059923,0.001983,11.129708,55,2]) assert abs(result["annualized_gross_savings"] - -1822.821986) < EPSILON
def test_temperature_sensitivity_parameter_optimization( consumption_history_1,gsod_722880_2012_2014_weather_source): meter_yaml = """ !obj:eemeter.meter.TemperatureSensitivityParameterOptimizationMeter { fuel_unit_str: "kWh", fuel_type: "electricity", temperature_unit_str: "degF", model: !obj:eemeter.models.DoubleBalancePointModel { x0: [1.,1.,1.,60.,7.], bounds: [[0,200],[0,200],[0,2000],[55,65],[2,12]], } } """ meter = load(meter_yaml) result = meter.evaluate(consumption_history=consumption_history_1, weather_source=gsod_722880_2012_2014_weather_source) assert arrays_similar(result['temp_sensitivity_params'], [0.013456,0.029507,8.341199,65,3.8])
def test_generator_with_base_load(periods_one_year,gsod_722880_2012_2014_weather_source): gen = ConsumptionGenerator("electricity", "J", "degF", 65, 1, 75, 1, 1) consumptions = gen.generate(gsod_722880_2012_2014_weather_source, periods_one_year) consumption_joules = [c.to("J") for c in consumptions] assert len(consumptions) == len(periods_one_year) == 12 assert arrays_similar(consumption_joules,[276.8, 308.2, 322.5, 183.8, 139.2, 101.7, 223.0, 469.3, 420.2, 212.9, 189.7, 382.1])
def test_generator_no_base_load(periods_one_year,gsod_722880_2012_2014_weather_source): gen = ConsumptionGenerator("electricity", "J", "degF", 65, 1, 75, 1, 0) consumptions = gen.generate(gsod_722880_2012_2014_weather_source, periods_one_year) consumption_joules = [c.to("J") for c in consumptions] assert len(consumptions) == len(periods_one_year) == 12 assert arrays_similar(consumption_joules,[245.8, 279.2, 291.5, 153.8, 108.2, 71.7, 192.0, 438.3, 390.2, 181.9, 159.7, 351.1])
def test_arrays_similar(): assert arrays_similar([], []) assert not arrays_similar([1], []) assert not arrays_similar([1], [1, 2]) assert arrays_similar([1, 2], [1, 2])