Desirability¶
The Parameterized Strategy Architecture for Desirability Functions¶
The desirability module defines an architecture for implementing parameterized strategies, particularly applied to the concept of desirability functions in the context of multi-objective scoring and optimization.
The core of the architecture is an abstract class that encapsulates all necessary checks and validations, providing a foundational framework for concrete strategy classes. The concrete classes are responsible for defining the specific algorithms that constitute various desirability functions and how they are applied.
In each algorithm, parameters are considered to fall into two categories:
- Coefficient Parameters: These parameters are essential for defining the functional form
of the desirability equation. They remain consistent across multiple executions of the algorithm and are set when a concrete strategy class is instantiated.
- Input Parameters: These parameters are assigned values each time the desirability
algorithm is executed. They represent the inputs to the utility functions that are subject to variation during the algorithm’s application.
The design enables the utility functions to be treated as parametric equations. Practitioners have the flexibility to compute outcomes by varying the input parameters while keeping coefficients fixed. Alternatively, different coefficient values can be explored to understand their influence on the functional form of the equation.
The method ensures that the returned desirability score strictly ranges between 0 (inclusive) and 1 (inclusive), adhering to the principles of desirability function algorithms. Some algorithms may require additional coefficient parameters to define this range and shape the desirability curve.
By adhering to the structure provided by the abstract class, the concrete implementations encapsulate utility functions with distinct desirability function algorithms. This approach offers a standardized way to manage and execute these specialized functions, facilitating the evaluation and optimization of multiple objectives in a consistent and extensible manner.
Class Diagram¶
classDiagram class AbstractParametrizedStrategy { <<abstract>> utility_function Callable parameter_manager ParameterManager coefficient_parameters_names List[str] input_parameters_names List[str] get_parameters_values() Dict[str, Any] set_parameters_values(Dict[str, Any]) } class BaseDesirability { +compute_numeric(x: float): float +compute_ufloat(x: UFloat): UFloat } class SigmoidDesirability { +parameters ['low', 'high', 'k', 'base', 'shift'] } class GeneralizedBellMembershipDesirability { +parameters ['width', 'slope', 'center', 'shift'] } class StepDesirability class CategoricalDesirability class Catalogue { +item_type Type +register } class ParameterManager { +parameters_map Dict[str, Parameter] +set_parameter_value() +set_parameter_attributes() } class Parameter { <<interface>> +value Any +set_value() } AbstractParametrizedStrategy <|--BaseDesirability BaseDesirability <|-- SigmoidDesirability BaseDesirability <|-- GeneralizedBellMembershipDesirability BaseDesirability <|-- StepDesirability BaseDesirability <|-- CategoricalDesirability AbstractParametrizedStrategy --> ParameterManager : uses AbstractParametrizedStrategy --> Parameter : has SigmoidDesirability ..> desirability_catalogue : "registers in desirability_catalogue" GeneralizedBellMembershipDesirability ..> desirability_catalogue : "registers in desirability_catalogue" StepDesirability ..> desirability_catalogue : "registers in desirability_catalogue" CategoricalDesirability ..> desirability_catalogue : "registers in desirability_catalogue" Catalogue <|-- desirability_catalogue