Skip to content

Commit 859a11f

Browse files
committed
Adding debug code.
1 parent a3defb2 commit 859a11f

File tree

4 files changed

+57
-12
lines changed

4 files changed

+57
-12
lines changed

src/dcegm/backward_induction.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,9 @@ def backward_induction(
9696
policy_solved,
9797
endog_grid_solved,
9898
) = create_solution_container(
99-
model_config=model_config,
99+
continuous_states_info=model_config["continuous_states_info"],
100+
# Read out grid size
101+
n_total_wealth_grid=model_config["tuning_params"]["n_total_wealth_grid"],
100102
n_state_choices=model_structure["state_choice_space"].shape[0],
101103
)
102104

src/dcegm/interfaces/inspect_solution.py

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def partially_solve(
3939
model_funcs=model_funcs,
4040
)
4141

42-
last_relevant_period = model_config["n_periods"] - n_periods - 1
42+
last_relevant_period = model_config["n_periods"] - n_periods
4343

4444
relevant_state_choices_mask = (
4545
model_structure["state_choice_space"][:, 0] >= last_relevant_period
@@ -53,14 +53,61 @@ def partially_solve(
5353
policy_solved,
5454
endog_grid_solved,
5555
) = create_solution_container(
56-
model_config=model_config,
56+
continuous_states_info=model_config["continuous_states_info"],
57+
# Read out grid size
58+
n_total_wealth_grid=model_config["tuning_params"]["n_total_wealth_grid"],
5759
n_state_choices=relevant_state_choice_space.shape[0],
5860
)
5961

6062
if return_candidates:
63+
n_assets_end_of_period = model_config["continuous_states_info"][
64+
"assets_grid_end_of_period"
65+
].shape[0]
6166
(value_candidates, policy_candidates, endog_grid_candidates) = (
6267
create_solution_container(
63-
model_config=model_config,
68+
continuous_states_info=model_config["continuous_states_info"],
69+
n_total_wealth_grid=n_assets_end_of_period,
6470
n_state_choices=relevant_state_choice_space.shape[0],
6571
)
6672
)
73+
74+
# Create debug information
75+
debug_info = {
76+
"return_candidates": return_candidates,
77+
"rescale_idx": np.where(relevant_state_choices_mask)[0].min(),
78+
}
79+
(
80+
value_solved,
81+
policy_solved,
82+
endog_grid_solved,
83+
value_candidates_second_last,
84+
policy_candidates_second_last,
85+
endog_grid_candidates_second_last,
86+
) = solve_last_two_periods(
87+
params=params,
88+
continuous_states_info=continuous_states_info,
89+
cont_grids_next_period=cont_grids_next_period,
90+
income_shock_weights=income_shock_weights,
91+
model_funcs=model_funcs,
92+
last_two_period_batch_info=batch_info["last_two_period_info"],
93+
value_solved=value_solved,
94+
policy_solved=policy_solved,
95+
endog_grid_solved=endog_grid_solved,
96+
debug_info=debug_info,
97+
)
98+
if return_candidates:
99+
idx_second_last = batch_info["last_two_period_info"][
100+
"idx_state_choices_second_last_period"
101+
]
102+
idx_second_last_rescaled = idx_second_last - debug_info["rescale_idx"]
103+
value_candidates = value_candidates.at[idx_second_last_rescaled, ...].set(
104+
value_candidates_second_last
105+
)
106+
policy_candidates = policy_candidates.at[idx_second_last_rescaled, ...].set(
107+
policy_candidates_second_last,
108+
)
109+
endog_grid_candidates = endog_grid_candidates.at[
110+
idx_second_last_rescaled, ...
111+
].set(endog_grid_candidates_second_last)
112+
113+
return value_solved, policy_solved, endog_grid_solved

src/dcegm/pre_processing/sol_container.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,11 @@
44

55

66
def create_solution_container(
7-
model_config: Dict[str, Any],
7+
continuous_states_info: Dict[str, Any],
8+
n_total_wealth_grid: int,
89
n_state_choices: int,
910
):
1011
"""Create solution containers for value, policy, and endog_grid."""
11-
12-
# Read out grid size
13-
n_total_wealth_grid = model_config["tuning_params"]["n_total_wealth_grid"]
14-
15-
# Check if second continuous state exists and read out array size
16-
continuous_states_info = model_config["continuous_states_info"]
1712
if continuous_states_info["second_continuous_exists"]:
1813
n_second_continuous_grid = continuous_states_info["n_second_continuous_grid"]
1914

tests/test_two_period_continuous_experience.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,8 @@ def _get_solve_last_two_periods_args(model, params, has_second_continuous_state)
449449

450450
# Create solution containers for value, policy, and endogenous grids
451451
value_solved, policy_solved, endog_grid_solved = create_solution_container(
452-
model_config=model_config,
452+
continuous_states_info=model_config["continuous_states_info"],
453+
n_total_wealth_grid=model_config["tuning_params"]["n_total_wealth_grid"],
453454
n_state_choices=model_structure["state_choice_space"].shape[0],
454455
)
455456

0 commit comments

Comments
 (0)