Source code for tno.quantum.optimization.qubo.components._results._basic_result

"""This module contains the ``BasicResult`` class."""

from __future__ import annotations

from typing import TYPE_CHECKING, Any, SupportsFloat

from tno.quantum.optimization.qubo.components._freq import Freq
from tno.quantum.optimization.qubo.components._results._result_interface import (
    ResultInterface,
)
from tno.quantum.utils import BitVector, BitVectorLike
from tno.quantum.utils.validation import check_real

if TYPE_CHECKING:
    from typing import Self


[docs]class BasicResult(ResultInterface): """Most basic implementation of :py:class:`ResultInterface`."""
[docs] @classmethod def from_result( cls, best_bitvector: BitVectorLike, best_value: SupportsFloat, freq: Freq | None = None, ) -> Self: """Create :py:class:`BasicResult` from bitvector, value and frequency object.""" best_bitvector = BitVector(best_bitvector) best_value = check_real(best_value, "best_value") if freq is None: freq = Freq([best_bitvector], [best_value], [1]) return cls(best_bitvector, best_value, freq)
[docs] def __eq__(self, other: Any) -> bool: """Check if two instances of :py:class:`BasicResult` are equal.""" if not isinstance(other, BasicResult): return False return ( self.best_value == other.best_value and self.best_bitvector == other.best_bitvector and self.freq == other.freq )