Source code for alts.core.query.query_decider

#Version 1.1.1 conform as of 29.11.2024
"""
| *alts.core.query.query_decider*
| :doc:`Built-In Implementations </modules/query/query_decider>`
"""
#TODO Handle empty Query Candidates
from __future__ import annotations
from typing import TYPE_CHECKING

from dataclasses import dataclass, field
from abc import abstractmethod

from alts.core.experiment_module import ExperimentModule
from alts.core.data.constrains import QueryConstrained, QueryConstrain

if TYPE_CHECKING:
    from typing import Tuple, Optional
    from nptyping import NDArray, Number, Shape

[docs] @dataclass class QueryDecider(ExperimentModule, QueryConstrained): """ QueryDecider() | **Description** | This module decides which best-scoring queries are worth the resources needed to obtain their results. | Outside the first learning iteration of the model you can expect the QueryDecider to receive a non-empty list of query candidates. """
[docs] @abstractmethod def decide(self, query_candidates: NDArray[Shape["query_nr, ... query_dims"], Number], scores: NDArray[Shape["query_nr, [query_score]"], Number]) -> Tuple[bool, NDArray[Shape["query_nr, ... query_dims"], Number]]: # type: ignore """ decide(self, queries, scores) -> (bool, queries) | **Description** | Returns its favorite query/queries out of a list of candidates with associated scores from 0 to 1. | Is not implemented here. :param query_candidates: A list of queries to choose from :type query_candidates: Iterable over `NDArrays <https://numpy.org/doc/stable/reference/arrays.ndarray.html>`_ :param scores: A list of scores associated to the queries in ``query_candidates`` :type scores: Iterable over `NDArrays <https://numpy.org/doc/stable/reference/arrays.ndarray.html>`_ :return: Whether it wants to decide, Favorite query/queries :rtype: ``boolean``, Iterable over `NDArrays <https://numpy.org/doc/stable/reference/arrays.ndarray.html>`_ :raises: NotImplementedError """ raise NotImplementedError()