voiage.methods.perspective_tensor.NetBenefitTensor
Dense draw x strategy x perspective net-benefit tensor.
Methods
Section titled “Methods”strategy_index
Section titled “strategy_index”strategy_index([positional or keyword] self: None = None, [positional or keyword] strategy: str = None) -> intResolve a strategy label to its tensor position.
Parameters:
selfstrategystr
Returns: int
perspective_index
Section titled “perspective_index”perspective_index([positional or keyword] self: None = None, [positional or keyword] perspective: str = None) -> intResolve a perspective label to its tensor position.
Parameters:
selfperspectivestr
Returns: int
nmb([positional or keyword] self: None = None, [positional or keyword] perspective: str = None) -> NDArray[np.float64]Return the draw-by-strategy benefits for one lens.
Parameters:
selfperspectivestr
Returns: NDArray[np.float64]
expected_net_benefit
Section titled “expected_net_benefit”expected_net_benefit([positional or keyword] self: None = None, [positional or keyword] perspective: str = None) -> NDArray[np.float64]Average each strategy’s net benefit over draws.
Parameters:
selfperspectivestr
Returns: NDArray[np.float64]
optimal_strategy_index
Section titled “optimal_strategy_index”optimal_strategy_index([positional or keyword] self: None = None, [positional or keyword] perspective: str = None, [keyword-only] decision_rule: DecisionRule | str = DecisionRule.EXPECTED_VALUE, [keyword-only] tie_policy: TiePolicy | str = TiePolicy.FIRST, [keyword-only] atol: float = 1e-12) -> int | NDArray[np.int64]Select an optimal strategy under the requested decision and tie rules.
Parameters:
selfperspectivestrdecision_ruleDecisionRule | str(default:DecisionRule.EXPECTED_VALUE)tie_policyTiePolicy | str(default:TiePolicy.FIRST)atolfloat(default:1e-12)
Returns: int | NDArray[np.int64]
discordance_probability
Section titled “discordance_probability”discordance_probability([positional or keyword] self: None = None, [positional or keyword] perspective_a: str = None, [positional or keyword] perspective_b: str = None, [keyword-only] tie_policy: TiePolicy | str = TiePolicy.SPLIT, [keyword-only] atol: float = 1e-12) -> floatEstimate the probability of different optimal choices on paired draws.
Parameters:
selfperspective_astrperspective_bstrtie_policyTiePolicy | str(default:TiePolicy.SPLIT)atolfloat(default:1e-12)
Returns: float
evop([positional or keyword] self: None = None, [keyword-only] choose_under: str = None, [keyword-only] evaluate_under: str = None, [keyword-only] decision_rule: DecisionRule | str = DecisionRule.EXPECTED_VALUE, [keyword-only] population: float | None = None, [keyword-only] keep_distribution: bool = False, [keyword-only] selection_tie_policy: TiePolicy | str = TiePolicy.FIRST, [keyword-only] atol: float = 1e-12) -> PerspectiveRegretEvaluate directional regret with optional population scaling.
Parameters:
selfchoose_understrevaluate_understrdecision_ruleDecisionRule | str(default:DecisionRule.EXPECTED_VALUE)populationfloat | None(default:None)keep_distributionbool(default:False)selection_tie_policyTiePolicy | str(default:TiePolicy.FIRST)atolfloat(default:1e-12)
Returns: PerspectiveRegret
regret_matrix
Section titled “regret_matrix”regret_matrix([positional or keyword] self: None = None, [keyword-only] decision_rule: DecisionRule | str = DecisionRule.EXPECTED_VALUE, [keyword-only] population: float | None = None) -> list[dict[str, Any]]Return directional regret records for ordered perspective pairs.
Parameters:
selfdecision_ruleDecisionRule | str(default:DecisionRule.EXPECTED_VALUE)populationfloat | None(default:None)
Returns: list[dict[str, Any]]
perspective_acceptability_frontier
Section titled “perspective_acceptability_frontier”perspective_acceptability_frontier([positional or keyword] self: None = None, [keyword-only] tie_policy: TiePolicy | str = TiePolicy.SPLIT, [keyword-only] atol: float = 1e-12) -> list[PerspectiveAcceptabilityRow]Compute draw-level optimality probabilities and expected-value ranks.
Parameters:
selftie_policyTiePolicy | str(default:TiePolicy.SPLIT)atolfloat(default:1e-12)
Returns: list[PerspectiveAcceptabilityRow]
with_weighted_perspective
Section titled “with_weighted_perspective”with_weighted_perspective([positional or keyword] self: None = None, [positional or keyword] name: str = None, [positional or keyword] weights: Mapping[str, float] = None, [keyword-only] normalize: bool = True, [keyword-only] allow_negative: bool = False) -> NetBenefitTensorAppend a weighted combination of existing perspectives.
Parameters:
selfnamestrweightsMapping[str, float]normalizebool(default:True)allow_negativebool(default:False)
Returns: NetBenefitTensor
mcda_feature_records
Section titled “mcda_feature_records”mcda_feature_records([positional or keyword] self: None = None, [keyword-only] reference_perspective: str = None, [keyword-only] target_perspectives: Iterable[str] | None = None, [keyword-only] population: float | None = None) -> list[dict[str, Any]]Collect benefits, ranks, discordance and regret by lens and strategy.
Parameters:
selfreference_perspectivestrtarget_perspectivesIterable[str] | None(default:None)populationfloat | None(default:None)
Returns: list[dict[str, Any]]
perspective_mixture_frontier
Section titled “perspective_mixture_frontier”perspective_mixture_frontier([positional or keyword] self: None = None, [keyword-only] left_perspective: str = None, [keyword-only] right_perspective: str = None, [keyword-only] grid_size: int = 101, [keyword-only] tie_policy: TiePolicy | str = TiePolicy.SPLIT, [keyword-only] atol: float = 1e-12) -> list[PerspectiveMixtureFrontierRow]Evaluate strategy performance on a regular two-perspective weight grid.
Parameters:
selfleft_perspectivestrright_perspectivestrgrid_sizeint(default:101)tie_policyTiePolicy | str(default:TiePolicy.SPLIT)atolfloat(default:1e-12)
Returns: list[PerspectiveMixtureFrontierRow]
exact_perspective_frontier
Section titled “exact_perspective_frontier”exact_perspective_frontier([positional or keyword] self: None = None, [keyword-only] left_perspective: str = None, [keyword-only] right_perspective: str = None, [keyword-only] atol: float = 1e-12) -> list[PerspectiveFrontierSegment]Return exact expected-value upper-envelope intervals over mixture weight.
Parameters:
selfleft_perspectivestrright_perspectivestratolfloat(default:1e-12)
Returns: list[PerspectiveFrontierSegment]
exact_switch_points
Section titled “exact_switch_points”exact_switch_points([positional or keyword] self: None = None, [keyword-only] left_perspective: str = None, [keyword-only] right_perspective: str = None, [keyword-only] atol: float = 1e-12) -> list[PerspectiveSwitchPoint]Extract changes between adjacent exact frontier segments.
Parameters:
selfleft_perspectivestrright_perspectivestratolfloat(default:1e-12)
Returns: list[PerspectiveSwitchPoint]