Source code for alts.core.query.query_optimizer
#Version 1.1.1 conform as of 13.12.2024
"""
| *alts.core.query.query_optimizer*
| :doc:`Built-In Implementations </modules/query/query_optimizer>`
"""
from __future__ import annotations
from typing import TYPE_CHECKING
from dataclasses import dataclass
from alts.core.configuration import Required, init
from alts.core.experiment_module import ExperimentModule
from alts.core.data.constrains import QueryConstrained
if TYPE_CHECKING:
from typing_extensions import Self #type: ignore
from typing import Tuple
from alts.core.query.selection_criteria import SelectionCriteria
from alts.core.experiment_modules import ExperimentModules
from alts.core.query.query_sampler import QuerySampler
from nptyping import NDArray, Number, Shape
[docs]
@dataclass
class QueryOptimizer(ExperimentModule, QueryConstrained):
"""
QueryOptimizer(selection_criteria)
| **Description**
| The QueryOptimizer tries to find the most worthy queries to evaluate next.
| The worthiness of a query symbolizes the information content of its result.
| Wothiness is measured by a score given by ``selection_criteria``. So QueryOptimizer
tries to maximize said score.
:param selection_criteria: Tells the QueryOptimizer the scores of queries
:type selection_criteria:
"""
selection_criteria: SelectionCriteria = init()
[docs]
def post_init(self):
"""
post_init(self) -> None
| **Description**
| Initializes ``selection_criteria`` with its experiment modules.
"""
super().post_init()
self.selection_criteria = self.selection_criteria(exp_modules = self.exp_modules)
[docs]
def select(self, num_queries = None) -> Tuple[NDArray[Shape["query_nr, ... query_dims"], Number], NDArray[Shape["query_nr, [query_score]"], Number]]: # type: ignore
"""
select(self, num_queries) -> queries, scores
| **Description**
| Tries to find the queries with the highest scores and returns them.
:param num_queries: Number of requested queries
:type num_queries: int
:return: queries, scores
:rtype: Iterable over `NDArrays <https://numpy.org/doc/stable/reference/arrays.ndarray.html>`_, Iterable over `NDArrays <https://numpy.org/doc/stable/reference/arrays.ndarray.html>`_
:raises: NotImplementedError
"""
raise NotImplementedError