Source code for prodigy.analysis.optimization.optimizer

from abc import ABC, abstractmethod
from typing import List, Union

import attr
from prodigy.pgcl import Expr, OptimizationType, VarExpr

from prodigy.distribution.distribution import Distribution


[docs] @attr.s class Optimizer(ABC): """ The `Optimizer` optimizes target functions and distributions. """
[docs] @staticmethod @abstractmethod def optimize( condition: Union[str, Expr], dist: Distribution, *parameters: Union[str, VarExpr], method: OptimizationType = OptimizationType.MINIMIZE ) -> List[Union[str, Expr]]: """ This method optimizes the given distribution parameters wrt to the optimization method and condition. :param parameters: The parameter(s) which is to be optimized. :param dist: The distribution for which :param condition: The condition for which the parameters shall be optimized. :param config: The Analysis Configuration :param method: The optimization method. :return: The parameter values, that optimize the function. """