Esempio n. 1
0
def test_clone_at_timestamp():
    md = ModelData(testdata)
    cloned_md = md.clone_at_timestamp(2.0)

    comparison_md = md.clone()
    comparison_md.data['elements']['load']['L1']['Pl'] = 111.1

    assert cloned_md.data == comparison_md.data
Esempio n. 2
0
def test_clone_at_time_index():
    md = ModelData(testdata)
    cloned_md = md.clone_at_time_index(2)

    comparison_md = md.clone()
    comparison_md.data['elements']['load']['L1']['Pl'] = 111.1
    del comparison_md.data['system']['time_keys']

    assert cloned_md.data == comparison_md.data
Esempio n. 3
0
def test_clone_at_time_indices():
    md = ModelData(testdata)
    cloned_md = md.clone_at_time_keys([1, 2])

    comparison_md = md.clone()
    comparison_md.data['elements']['load']['L1']['Pl'] = \
            {'data_type':'time_series', 'values': [111.0, 111.1]}

    comparison_md.data['system']['time_keys'] = [1.0, 2.0]

    assert cloned_md.data == comparison_md.data
    def _populate_with_forecastable_data(self, sim_type: str,
                                         start_time: datetime,
                                         num_time_periods: int,
                                         time_period_length_minutes: int,
                                         model: EgretModel) -> None:
        # pandas is inclusive on ranges
        end_time = start_time + timedelta(
            minutes=num_time_periods *
            time_period_length_minutes) - timedelta(seconds=1)

        price_data = self._historical_prices[sim_type][
            start_time:end_time].to_list()

        if sim_type == 'day_ahead':
            step_ratio = 1
        else:
            step_ratio = time_period_length_minutes // self._frequency_minutes

        if step_ratio == 1 and len(
                model.data['system']['time_keys']) == num_time_periods:
            p_cost = model.data['elements']['generator']['system']['p_cost'][
                'values']
            for i, val in enumerate(price_data):
                p_cost[i] = val
        else:
            copy_from = model.clone()
            copy_from.data['elements']['generator']['system']['p_cost'][
                'values'] = price_data
            # if the data is at a higher frequency, it is more sensible
            # to average over the time periods for prices
            _recurse_average_at_ratio(copy_from.data, model.data, step_ratio)

        # Fill in times:
        time_labels = model.data['system']['time_keys']
        delta = timedelta(minutes=time_period_length_minutes)
        for i in range(len(time_labels)):
            dt = start_time + i * delta
            time_labels[i] = dt.strftime('%Y-%m-%d %H:%M')
Esempio n. 5
0
def test_clone():
    md = ModelData(testdata)
    cmd = md.clone()

    assert md.data == cmd.data