def test_agg_func_get_set(self, model, agg_func): if agg_func == "custom": agg_func = custom_test_func p = AggregatedIndexParameter(model, [], agg_func=agg_func) assert p.agg_func == agg_func p.agg_func = "product" assert p.agg_func == "product"
def test_agg_anyall(self, simple_linear_model): """Test the "any" and "all" aggregation functions""" model = simple_linear_model model.timestepper.delta = 1 model.timestepper.start = "2017-01-01" model.timestepper.end = "2017-01-03" scenarioA = Scenario(model, "Scenario A", size=2) scenarioB = Scenario(model, "Scenario B", size=5) num_comb = len(model.scenarios.get_combinations()) parameters = { 0: DummyIndexParameter(model, 0, name="p0"), 1: DummyIndexParameter(model, 1, name="p1"), 2: DummyIndexParameter(model, 2, name="p2"), } data = [(0, 0), (1, 0), (0, 1), (1, 1), (1, 1, 1), (0, 2)] data_parameters = [[parameters[i] for i in d] for d in data] expected = [(np.any(d), np.all(d)) for d in data] for n, params in enumerate(data_parameters): for m, agg_func in enumerate(["any", "all"]): p = AggregatedIndexParameter(model, params, agg_func=agg_func) e = np.ones([len(model.timestepper), num_comb ]) * expected[n][m] r = AssertionRecorder(model, p, expected_data=e, name="assertion {}-{}".format( n, agg_func)) model.run()
def test_aggregated_index_parameter(model): """Basic tests of AggregatedIndexParameter""" parameters = [] parameters.append(DummyIndexParameter(2)) parameters.append(DummyIndexParameter(3)) timestep = scenario_index = None # lazy agg_index = AggregatedIndexParameter(parameters, "sum") assert (agg_index.index(timestep, scenario_index) == 5) agg_index = AggregatedIndexParameter(parameters, "max") assert (agg_index.index(timestep, scenario_index) == 3) agg_index = AggregatedIndexParameter(parameters, "min") assert (agg_index.index(timestep, scenario_index) == 2)
def test_aggregated_index_parameter_anyall(model): """Test `any` and `all` predicates""" timestep = scenario_index = None # lazy data = [(0, 0), (1, 0), (0, 1), (1, 1), (1, 1, 1)] expected = [(False, False), (True, False), (True, False), (True, True), (True, True)] for item, (expected_any, expected_all) in zip(data, expected): parameters = [DummyIndexParameter(i) for i in item] agg_index_any = AggregatedIndexParameter(parameters, "any") agg_index_all = AggregatedIndexParameter(parameters, "all") assert (agg_index_any.index(timestep, scenario_index) == int(expected_any)) assert (agg_index_all.index(timestep, scenario_index) == int(expected_all))
def test_agg(self, simple_linear_model, agg_func): model = simple_linear_model model.timestepper.delta = 1 model.timestepper.start = "2017-01-01" model.timestepper.end = "2017-01-03" scenarioA = Scenario(model, "Scenario A", size=2) scenarioB = Scenario(model, "Scenario B", size=5) p1 = DummyIndexParameter(model, 2) p2 = DummyIndexParameter(model, 3) p = AggregatedIndexParameter(model, [p1, p2], agg_func=agg_func) func = TestAggregatedIndexParameter.funcs[agg_func] @assert_rec(model, p) def expected_func(timestep, scenario_index): x = p1.get_index(scenario_index) y = p2.get_index(scenario_index) return func(np.array([x, y], np.int32)) model.run()