Skip to content

Commit 0113c9c

Browse files
committed
Merge branch 'develop' into pre-commit-ci-update-config
2 parents e95d56a + c4fc04d commit 0113c9c

10 files changed

Lines changed: 942 additions & 1378 deletions

File tree

src/muse/agents/agent.py

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -278,23 +278,44 @@ def next(
278278
getLogger(__name__).critical("Search space is empty")
279279
self.year += time_period
280280
return None
281-
decision = self._compute_objective(demand, search_space, technologies, market)
281+
282+
# Filter technologies according to the search space, forecast year and region
283+
techs = self.filter_input(
284+
technologies,
285+
technology=search_space.replacement,
286+
year=self.forecast_year,
287+
).drop_vars("technology")
288+
289+
# Reduce dimensions of the demand array
290+
reduced_demand = demand.sel(
291+
{
292+
k: search_space[k]
293+
for k in set(demand.dims).intersection(search_space.dims)
294+
}
295+
)
296+
297+
# Filter prices according to the region
298+
prices = self.filter_input(market.prices)
299+
300+
# Compute the objective
301+
decision = self._compute_objective(
302+
technologies=techs, demand=reduced_demand, prices=prices
303+
)
282304

283305
self.year += time_period
284306
return xr.Dataset(dict(search_space=search_space, decision=decision))
285307

286308
def _compute_objective(
287309
self,
288-
demand: xr.DataArray,
289-
search_space: xr.DataArray,
290310
technologies: xr.Dataset,
291-
market: xr.Dataset,
311+
demand: xr.DataArray,
312+
prices: xr.DataArray,
292313
) -> xr.DataArray:
293-
objectives = self.objectives(self, demand, search_space, technologies, market)
314+
objectives = self.objectives(
315+
technologies=technologies, demand=demand, prices=prices
316+
)
294317
decision = self.decision(objectives)
295-
nobroadcast_dims = [d for d in decision.dims if d not in search_space.dims]
296-
decision = xr.broadcast(decision, search_space, exclude=nobroadcast_dims)[0]
297-
return decision.sel({k: search_space[k] for k in search_space.dims})
318+
return decision
298319

299320
def add_investments(
300321
self,

0 commit comments

Comments
 (0)