예제 #1
0
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)
예제 #2
0
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
예제 #3
0
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
예제 #4
0
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])
예제 #5
0
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])
예제 #6
0
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])
예제 #7
0
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])