tucoopy.diagnostics.imputation_diagnostics¶
Imputation and pre-imputation diagnostics.¶
This module provides checks for whether a payoff vector is:
- efficient (pre-imputation), and
- individually rational (imputation).
It is used both directly and as a building block for higher-level set diagnostics.
Examples:
>>> from tucoopy import Game
>>> from tucoopy.diagnostics.imputation_diagnostics import imputation_diagnostics
>>> g = Game.from_coalitions(n_players=2, values={0: 0, 3: 1})
>>> imputation_diagnostics(g, [0.5, 0.5]).in_set
True
ImputationDiagnostics dataclass ¶
Diagnostics for membership in the imputation set.
Examples:
>>> from tucoopy.diagnostics.bounds import BoundViolation
>>> d = ImputationDiagnostics(
... n_players=2,
... vN=1.0,
... sum_x=1.0,
... efficient=True,
... in_set=True,
... lower_bounds=[0.0, 0.0],
... violations=[],
... )
>>> d.in_set
True
to_dict ¶
to_dict()
Convert diagnostics to a JSON-serializable dictionary.
Examples:
>>> d = ImputationDiagnostics(
... n_players=2,
... vN=1.0,
... sum_x=1.0,
... efficient=True,
... in_set=True,
... lower_bounds=[0.0, 0.0],
... violations=[],
... )
>>> d.to_dict()["sum_x"]
1.0
imputation_diagnostics ¶
imputation_diagnostics(
game, x, *, tol=DEFAULT_GEOMETRY_TOL
)
Check whether \(x\) is an imputation (efficient + individually rational).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
game | GameProtocol | TU game. | required |
x | list[float] | Allocation vector of length | required |
tol | float | Numerical tolerance used for the efficiency check and the individual rationality comparisons. | DEFAULT_GEOMETRY_TOL |
Returns:
| Type | Description |
|---|---|
ImputationDiagnostics | Diagnostics object including |
Raises:
| Type | Description |
|---|---|
InvalidParameterError | If |
Examples:
A minimal 3-player example (only the grand coalition has value 1):
>>> from tucoopy import Game
>>> from tucoopy.diagnostics.imputation_diagnostics import imputation_diagnostics
>>> g = Game.from_coalitions(n_players=3, values={
... 0:0, 1:0, 2:0, 4:0,
... 3:0, 5:0, 6:0,
... 7:1,
... })
>>> d = imputation_diagnostics(g, [1/3, 1/3, 1/3])
>>> d.in_set
True