def test_loop(self, get_energy_sector_model, get_water_sector_model): """Fails because no functionality to deal with loops """ energy_model = get_energy_sector_model water_model = get_water_sector_model sos_model = SosModel('energy_water_model') water_model.add_dependency(energy_model, 'fluffiness', 'fluffyness') energy_model.add_dependency(water_model, 'electricity_demand', 'electricity_demand_input') sos_model.add_model(water_model) sos_model.add_model(energy_model) assert energy_model.model_inputs.names == ['electricity_demand_input'] assert water_model.model_inputs.names == ['fluffyness'] assert sos_model.model_inputs.names == [] assert energy_model.free_inputs.names == [] assert water_model.free_inputs.names == [] assert sos_model.free_inputs.names == [] sos_model.check_dependencies() graph = sos_model.dependency_graph assert (water_model, energy_model) in graph.edges() assert (energy_model, water_model) in graph.edges() modelset = ModelSet([water_model, energy_model], sos_model) actual = modelset.guess_results(water_model, 2010, {}) expected = {'electricity_demand': np.array([1.])} # assert actual == expected sos_model.max_iterations = 100 results = sos_model.simulate(2010) expected = np.array([[0.13488114]], dtype=np.float) actual = results['energy_sector_model']['fluffiness'] np.testing.assert_allclose(actual, expected, rtol=1e-5) expected = np.array([[0.16469004]], dtype=np.float) actual = results['water_supply_model']['electricity_demand'] np.testing.assert_allclose(actual, expected, rtol=1e-5)
def test_loop(self, get_energy_sector_model, get_water_sector_model): """Fails because no functionality to deal with loops """ energy_model = get_energy_sector_model water_model = get_water_sector_model sos_model = SosModel('energy_water_model') water_model.add_dependency(energy_model, 'fluffiness', 'fluffyness') energy_model.add_dependency(water_model, 'electricity_demand', 'electricity_demand_input') sos_model.add_model(water_model) sos_model.add_model(energy_model) assert energy_model.inputs.names == ['electricity_demand_input'] assert water_model.inputs.names == ['fluffyness'] assert sos_model.inputs.names == [] assert energy_model.free_inputs.names == [] assert water_model.free_inputs.names == [] assert sos_model.free_inputs.names == [] sos_model.check_dependencies() graph = sos_model.dependency_graph assert (water_model, energy_model) in graph.edges() assert (energy_model, water_model) in graph.edges() sos_model.max_iterations = 100 data_handle = get_data_handle(sos_model) results = sos_model.simulate(data_handle) expected = np.array([[0.13488114]], dtype=np.float) actual = results.get_results('fluffiness', model_name='energy_sector_model', modelset_iteration=35) np.testing.assert_allclose(actual, expected, rtol=1e-5) expected = np.array([[0.16469004]], dtype=np.float) actual = results.get_results('electricity_demand', model_name='water_supply_model', modelset_iteration=35) np.testing.assert_allclose(actual, expected, rtol=1e-5)