Skip to main content

Defuzzification Ontology

Fuzzy Logic
Authors: MArk Anthony Higgins - Sky Recursive Ai
© Mark Anthony Higgins 11 October 2025
Revised Date: 17 September 2026
Audio Overview
FLOW_ALGEBRA DefuzzificationOntology v1.0

TARGET_URL := "https://kirethresearch.org/booksai-core/ontologies/mathematical-ontologies/mathematical-logic-ontologies/fuzzy-logic/defuzzification-ontology.html"
LANGUAGE := "en-GB"
DOMAIN := MathematicalOntologies > MathematicalLogicOntologies > FuzzyLogic > DefuzzificationOntology

BEGIN_FLOW

ENTITY Defuzzification {
    TYPE := FuzzyOutputTransformation
    DEFINITION := "The process of converting an aggregated fuzzy output set or equivalent fuzzy inference representation into a single crisp output value according to an explicitly selected method."
}

ENTITY FuzzyOutputSet {
    TYPE := FuzzySet
    MEMBERSHIP_FUNCTION := μ_out(y)
}

ENTITY CrispOutput {
    TYPE := ScalarOrDeclaredCrispValue
}

RELATIONSHIP Defuzzification --takes_input--> FuzzyOutputSet
RELATIONSHIP Defuzzification --produces--> CrispOutput
RELATIONSHIP Defuzzification --used_by--> FuzzyInferenceSystem
RELATIONSHIP Defuzzification --follows--> RuleAggregation
RELATIONSHIP Defuzzification --depends_on--> DefuzzificationMethod

PRECONDITION {
    INPUT :=
        aggregated_fuzzy_output_or_method_specific_equivalent

    REQUIRE :=
        output_domain_defined
}

POSTCONDITION {
    OUTPUT :=
        crisp_value y_star

    REQUIRE :=
        y_star belongs_to declared output domain
        OR declared extrapolation semantics
}

ENTITY CentroidMethod {
    TYPE := DefuzzificationMethod
    ALIASES := {CentreOfArea,CentreOfGravity}
}

CENTROID_CONTINUOUS {
    y_star :=
        integral_Y (
            y * μ_out(y)
        ) dy
        /
        integral_Y (
            μ_out(y)
        ) dy

    REQUIRE :=
        denominator > 0
}

CENTROID_DISCRETE {
    y_star :=
        SUM_i (
            y_i * μ_out(y_i)
        )
        /
        SUM_i μ_out(y_i)

    REQUIRE :=
        SUM_i μ_out(y_i) > 0
}

CENTROID_INTERPRETATION {
    OUTPUT :=
        membership-weighted centre of aggregated fuzzy area
}

ENTITY BisectorMethod {
    TYPE := DefuzzificationMethod
}

BISECTOR {
    FIND y_star SUCH_THAT
        integral_lower_to_y_star μ_out(y)dy
        =
        integral_y_star_to_upper μ_out(y)dy

    INTERPRETATION :=
        divides total fuzzy area into two equal areas
}

ENTITY MeanOfMaxima {
    ABBREVIATION := MOM
    TYPE := DefuzzificationMethod
}

MEAN_OF_MAXIMA {
    max_mu := sup_y μ_out(y)
    maxima_set :=
        {y | μ_out(y)=max_mu}

    y_star :=
        mean(maxima_set)
        WHEN mean is defined
}

ENTITY SmallestOfMaxima {
    ABBREVIATION := SOM
    TYPE := DefuzzificationMethod
}

SMALLEST_OF_MAXIMA {
    max_mu := sup_y μ_out(y)
    y_star :=
        inf{y | μ_out(y)=max_mu}
}

ENTITY LargestOfMaxima {
    ABBREVIATION := LOM
    TYPE := DefuzzificationMethod
}

LARGEST_OF_MAXIMA {
    max_mu := sup_y μ_out(y)
    y_star :=
        sup{y | μ_out(y)=max_mu}
}

MAXIMUM_METHOD_RELATIONSHIPS {
    MOM,SOM,LOM
        depend primarily on
        location_of_maximum_membership

    CENTROID,BISECTOR
        depend on
        broader aggregated membership shape
}

HEIGHT_METHOD {
    GIVEN output fuzzy sets B_i
    WITH representative values c_i
    AND heights h_i

    y_star :=
        SUM_i(h_i*c_i)
        /
        SUM_i h_i

    REQUIRE :=
        representative_value semantics declared
        AND denominator!=0
}

WEIGHTED_AVERAGE {
    y_star :=
        SUM_i(w_i*z_i)
        /
        SUM_i(w_i)

    REQUIRE :=
        SUM_i(w_i)!=0

    NOTE :=
        commonly associated with Sugeno-style crisp consequents;
        it is not identical to centroid defuzzification of an aggregated fuzzy set
}

WEIGHTED_SUM {
    y_star :=
        SUM_i(w_i*z_i)

    REQUIRE :=
        selected system semantics justify lack of normalisation
}

MAMDANI_RELATIONSHIP {
    MamdaniInference
        -> ActivatedFuzzyConsequents
        -> AggregatedFuzzyOutput
        -> Defuzzification
        -> CrispOutput
}

SUGENO_RELATIONSHIP {
    SugenoInference
        -> CrispRuleConsequents
        -> WeightedCombination
        -> CrispOutput

    DISTINCTION :=
        standard Sugeno output combination is not ordinary fuzzy-set defuzzification
}

TSUKAMOTO_RELATIONSHIP {
    TsukamotoInference
        -> each rule produces crisp z_i through monotonic consequent inversion
        -> weighted_average
        -> crisp_output
}

INPUT_VALIDATION(FuzzyOutputSet A) {
    REQUIRE {
        μ_A(y) ∈ [0,1],
        output_domain_defined,
        aggregation_complete
    }
}

ZERO_AREA_CASE {
    IF integral μ_out(y)dy = 0
       OR discrete_sum_memberships=0
    THEN
        centroid := undefined

    REQUIRE :=
        declared fallback_policy
}

FALLBACK_POLICIES {
    POSSIBLE := {
        DefaultOutput,
        PreviousOutput,
        NeutralOutput,
        ErrorOrUndefined
    }

    REQUIRE :=
        system-specific declaration
}

NONUNIQUE_MAXIMUM {
    IF multiple y values share maximum membership
    THEN
        MOM,SOM,LOM may return different outputs
}

SYMMETRIC_OUTPUT_PROPERTY {
    IF μ_out(y) is symmetric about centre c
       AND centroid exists
    THEN
        centroid := c
}

TRANSLATION_PROPERTY {
    IF fuzzy_output is translated by constant k
    THEN
        centroid translates by k
        when integrability assumptions hold
}

SCALING_MEMBERSHIP_HEIGHT {
    IF μ'_out(y)=c*μ_out(y)
       FOR constant c>0
       AND values remain valid for calculation
    THEN
        centroid_location unchanged

    REASON :=
        numerator and denominator scale equally
}

DISCRETISATION {
    ContinuousFuzzyOutput
        -> sample grid
        -> approximate defuzzification

    REQUIRE :=
        sampling_resolution sufficient for intended accuracy
}

NUMERICAL_CENTROID(OutputSamples {(y_i,μ_i)}) {
    numerator := SUM_i y_i*μ_i
    denominator := SUM_i μ_i

    IF denominator=0
        RETURN fallback_or_undefined

    RETURN numerator/denominator
}

NUMERICAL_BISECTOR(OutputSamples) {
    COMPUTE cumulative_membership_area
    FIND position where cumulative_area
        reaches half_total_area
    RETURN interpolated_position_if_required
}

METHOD_SELECTION {
    INPUT := {
        InferenceArchitecture,
        OutputShape,
        ComputationalConstraints,
        InterpretabilityRequirements,
        ContinuityRequirements
    }

    OUTPUT :=
        selected_defuzzification_method
}

METHOD_DEPENDENCE {
    SAME fuzzy_output
        + DIFFERENT defuzzification_method
        -> MAY produce different crisp_output
}

OUTPUT_SENSITIVITY {
    CHANGE fuzzy_output_shape
        -> MAY CHANGE defuzzified_value

    CHANGE method
        -> MAY CHANGE defuzzified_value
}

CONTINUITY_CONSIDERATION {
    Centroid
        often yields smoothly varying outputs
        when fuzzy output changes smoothly

    REQUIRE :=
        system-specific verification
}

COMPUTATIONAL_COMPLEXITY {
    DEPENDS_ON := {
        OutputRepresentation,
        NumberOfSamples,
        NumberOfRules,
        IntegrationMethod,
        DefuzzificationMethod
    }
}

EXACT_VS_NUMERICAL {
    ANALYTIC_MEMBERSHIP_FUNCTIONS
        MAY permit exact integration

    COMPLEX_AGGREGATED_OUTPUTS
        MAY require numerical approximation
}

MULTI_OUTPUT_SYSTEM {
    FOR_EACH output_variable y_j:
        defuzzify corresponding aggregated fuzzy output separately
        unless coupled output semantics explicitly defined
}

OUTPUT_RANGE_CHECK {
    AFTER defuzzification:
        VERIFY y_star within allowed actuator/decision/output range

    IF outside:
        APPLY declared saturation_or_validation_policy
}

SATURATION {
    clipped_output :=
        min(max(y_star,lower_bound),upper_bound)

    REQUIRE :=
        saturation policy explicitly selected
}

TYPE_2_RELATIONSHIP {
    Type2FuzzyInference
        -> TypeReduction
        -> Type1SetOrInterval
        -> Defuzzification
}

TYPE_REDUCTION_PRECEDENCE {
    REQUIRE :=
        Type2 output MUST undergo selected type-reduction process before standard crisp defuzzification
}

INTERVAL_OUTPUT {
    TypeReducedInterval :=
        [y_L,y_R]

    COMMON_CRISP_REDUCTION :=
        (y_L+y_R)/2

    REQUIRE :=
        selected Type-2 method
}

DEFUZZIFICATION_TRACE {
    RECORD {
        Method,
        OutputDomain,
        AggregatedMembershipRepresentation,
        NumeratorIfApplicable,
        DenominatorIfApplicable,
        MaximaSetIfApplicable,
        FallbackPolicy,
        CrispOutput
    }
}

VALIDATE_RESULT {
    CHECK {
        input_membership_range,
        denominator_nonzero_if_required,
        domain_consistency,
        method_preconditions,
        output_range
    }
}

DEFUZZIFICATION_VS_FUZZIFICATION {
    Fuzzification :=
        CrispInput -> FuzzyMembershipDegrees

    Defuzzification :=
        FuzzyOutputRepresentation -> CrispOutput

    THEY_ARE_NOT strict mathematical inverses in general
}

DEFUZZIFICATION_VS_THRESHOLDING {
    Defuzzification :=
        derive representative crisp output from fuzzy output

    Thresholding :=
        convert degree/value using a decision boundary

    MUST_REMAIN_DISTINCT := TRUE
}

DEFUZZIFICATION_VS_PROBABILITY_EXPECTATION {
    Centroid_formula
        may resemble weighted expectation mathematically

    BUT
        membership_function is not automatically a probability_density

    MUST_REMAIN_SEMANTICALLY_DISTINCT := TRUE
}

CONTROL_APPLICATION {
    AggregatedControlFuzzySet
        -> Defuzzification
        -> CrispActuatorCommand
}

DECISION_APPLICATION {
    FuzzyDecisionOutput
        -> Defuzzification
        -> CrispDecisionScore
}

APPLICATION_RELATIONSHIPS {
    Defuzzification --supports--> FuzzyControl
    Defuzzification --supports--> DecisionSupport
    Defuzzification --supports--> ExpertSystems
    Defuzzification --supports--> Robotics
    Defuzzification --supports--> ProcessControl
    Defuzzification --supports--> ArtificialIntelligence
    Defuzzification --supports--> FuzzyInference
}

ONTOLOGY_LINKS {
    PARENT := FuzzyLogicOntology

    RELATED := {
        FuzzyInferenceOntology,
        FuzzyRuleOntology,
        FuzzySetOntology,
        MembershipFunctionOntology,
        DegreeOfTruthOntology,
        MamdaniInferenceOntology,
        SugenoInferenceOntology,
        Type2FuzzySetOntology,
        ApproximateReasoningOntology
    }
}

SEMANTIC_EQUIVALENCE {
    Defuzzification ≈ CrispOutputExtraction
        WHEN context=fuzzy_inference

    CentroidMethod ≈ CentreOfArea
    CentroidMethod ≈ CentreOfGravity
        WHEN referring to standard fuzzy centroid

    MOM ≈ MeanOfMaxima
    SOM ≈ SmallestOfMaxima
    LOM ≈ LargestOfMaxima
}

CONSTRAINTS {
    C1 :=
        defuzzification method MUST be explicitly identified

    C2 :=
        fuzzy output membership values MUST remain within declared membership domain

    C3 :=
        centroid denominator MUST be nonzero

    C4 :=
        zero-area/no-rule-output cases MUST use an explicit fallback policy

    C5 :=
        Sugeno weighted output MUST NOT be conflated with centroid defuzzification

    C6 :=
        Type-2 outputs MUST undergo appropriate type reduction before ordinary crisp defuzzification

    C7 :=
        maximum-based methods MUST define behaviour for multiple maxima

    C8 :=
        numerical approximation MUST preserve sufficient resolution for intended accuracy

    C9 :=
        defuzzified output MUST be validated against declared output range

    C10 :=
        fuzzy membership MUST NOT be treated as probability density by default

    C11 :=
        defuzzification and thresholding MUST remain distinct

    C12 :=
        transformations MUST preserve the selected inference architecture and output semantics
}

REASONING_CHAIN Query Q {
    IDENTIFY fuzzy_output_representation
    IDENTIFY inference_architecture
    IDENTIFY output_domain
    IDENTIFY requested_defuzzification_method

    VALIDATE fuzzy_output

    IF method=Centroid {
        COMPUTE weighted_area_numerator
        COMPUTE membership_area_denominator
        IF denominator=0
            APPLY fallback
        ELSE
            RETURN numerator/denominator
    }

    IF method=Bisector
        THEN find equal_area_split

    IF method=MOM
        THEN compute mean_of_maxima

    IF method=SOM
        THEN choose smallest_maximum_location

    IF method=LOM
        THEN choose largest_maximum_location

    IF Sugeno_context
        THEN compute weighted_consequent_output
        AND label as Sugeno output combination

    IF Type2_context {
        APPLY type_reduction
        THEN apply selected crisp_reduction
    }

    VALIDATE output_range
    BUILD defuzzification_trace
    RETURN crisp_output WITH derivation
}

CONFIDENCE {
    CORE_DEFUZZIFICATION_DEFINITION := 1.00
    CENTROID_METHOD := 1.00
    BISECTOR_METHOD := 1.00
    MAXIMA_METHODS := 1.00
    SUGENO_DISTINCTION := 1.00
    TYPE2_PRECEDENCE := 0.99

    COMPUTED_OUTPUT :=
        IF fuzzy_output_and_method_complete THEN 1.00
        ELSE REQUIRE missing_information
}

UPDATE_MODEL {
    IMMUTABLE_CORE := {
        FuzzyToCrispTransformation,
        MethodDependence,
        CentroidDefinition,
        ZeroAreaConstraint
    }

    EXTENSIBLE := {
        DefuzzificationMethods,
        NumericalIntegrationMethods,
        FallbackPolicies,
        Type2OutputMethods,
        OutputValidation,
        ApplicationDomains,
        RelatedOntologies
    }

    ON_NEW_KNOWLEDGE {
        IDENTIFY output_architecture
        VALIDATE membership_representation
        VALIDATE method_preconditions
        CHECK denominator_or_maxima_conditions
        CHECK output_domain
        CHECK semantic_consistency
        ADD relationship IF non_contradictory
        UPDATE confidence
    }
}

AI_CONSUMPTION {
    MACHINE_READABLE := TRUE
    HUMAN_INTERPRETABLE := TRUE
    RECURSIVE_REASONING := TRUE
    ENTITY_RESOLUTION := TRUE
    SYMBOL_RESOLUTION := TRUE
    RELATIONSHIP_TRAVERSAL := TRUE
    DEFUZZIFICATION_REASONING := TRUE
    CENTROID_REASONING := TRUE
    BISECTOR_REASONING := TRUE
    MAXIMA_REASONING := TRUE
    NUMERICAL_APPROXIMATION := TRUE
    TYPE2_OUTPUT_REASONING := TRUE
    OUTPUT_VALIDATION := TRUE
    TRACE_GENERATION := TRUE
}

FLOW_HASH {
    TARGET := TARGET_URL
    SUBJECT := "Defuzzification Ontology"
    VERSION := "1.0"
    CANONICAL_SIGNATURE :=
        HASH(TARGET + SUBJECT + DOMAIN + VERSION)
}

OUTPUT {
    PRIMARY_ENTITY := Defuzzification

    INTERPRETATION :=
        "Defuzzification converts an aggregated fuzzy output representation into a crisp value using a declared method. Centroid, bisector and maxima-based methods derive different representative values from the same fuzzy output, while Sugeno and Type-2 systems use distinct output-processing pipelines that must remain explicit for semantically valid inference."
}

END_FLOW
Kireth Research
38 Thorndale Croft, Wetwang, Driffield
East Riding of Yorkshire YO25 9XZ