# Fuzzy Template for Scheme Language Modeling & Simulation Lab. Sungkyunkwan Univ.

## Presentation on theme: "Fuzzy Template for Scheme Language Modeling & Simulation Lab. Sungkyunkwan Univ."— Presentation transcript:

Fuzzy Template for Scheme Language Modeling & Simulation Lab. Sungkyunkwan Univ.

Fuzzy Rule-Based System Fuzzy Matching Inference Combining Fuzzy Conclusions Defuzzification

Standard Additive Model IF x is A i And y is B i THEN z is C i (1 ≤ i ≤ n) a i = the area of C i g i = the centroid of C i

Standard Additive Model R1:IFQuantity is Small AND ;; IF Quantity 1 =Small AND Softness is Soft ;; Softness 1 = Soft THENCycle 1 is Light ;; THEN Cycle 1 = Light R2:IFQuantity is Medium AND Softness is Soft THENCycle 2 is Light a 1 =a 2 =>the area of Cycle =Light g 1 =g 2 =the centroid of Light x=quantity (input) y=softness (input) z=cycle (output)

Standard Additive Model SmallNormal Small 0.63 x0x0 y0y0 gigi μ Small (x 0 )×μ Normal (y 0 )×a i μ Small (x 0 ) = 0.9 μ Normal (y 0 ) = 0.7

Automatic Washing Machine Laundry Quantity Laundry Softness Automated Selection Washing Cycle Washing Time

Membership Functions 0.00.250.50.751.0 SmallMediumLarge 0.00.250.50.751.0 SoftNormalHard Laundry QuantityLaundry Softness

Membership Functions 0.00.250.50.751.0 LightNormalStrong 0.00.250.50.751.0 ShortNormalLong Washing CycleWashing Time

Fuzzy Rules InputsOutputs QuantitySoftnessCycleTime 1SmallSoftLightShort 2MediumSoftLightNormal 3LargeSoftNormal 4SmallNormalLightNormal 5MediumNormal 6LargeNormalStrongNormal 7SmallHardNormal 8MediumHardStrongNormal 9LargeHardStrongLong

Linguistic Variables 0.00.250.5 1.0 Small trapezoid(x: 0.0, 0.0, 0.25, 0.5) (define quantity-small '(0.0 0.0 0.25 0.5)) 0.250.50.75 1.0 Medium triangle(x: 0.25, 0.5, 0.75) (define quantity-medium '(0.25 0.5 0.75))

Fuzzy Membership Functions 0.00.250.50.751.0 SmallMediumLarge Laundry Quantity (define quantity-small '(0.00 0.00 0.25 0.50)) (define quantity-medium '(0.25 0.50 0.75)) (define quantity-large '(0.50 0.75 1.00 1.00))

Fuzzy Rules (define-structure rule if then) (define r1 (make-rule 'if '(···) 'then '(···)) (define r2 (make-rule 'if '(···) 'then '(···)) ··· (define r9 (make-rule 'if '(···) 'then '(···)) (define rules (list r1 r2 r3 r4 r5 r6 r7 r8 r9))

Fuzzy Rules R1:IFLaundry Quantity is Small AND Laundry Softness is Soft THENWashing Cycle is Light AND Washing Time is Short (define r1 (make-rule 'if '((quantity quantity-small) (softness softness-soft)) 'then '((cycle cycle-light) (time time-short))))

Fuzzy Rules R2:IFLaundry Quantity is Medium AND Laundry Softness is Soft THENWashing Cycle is Light AND Washing Time is Normal (define r2 (make-rule 'if '((quantity quantity-medium) (softness softness-soft)) 'then '((cycle cycle-light) (time time-normal))))

Control Flow inference initialize-outputs execute-rule fuzzy-defuzzification execute-rule fuzzy-matching fuzzy-inference-combining fuzzy-matching matching-degree fuzzy-inference-combining fuzzy-area fuzzy-centroid'cycle 'time c t 'fuzzy-outputs 'quantity 'softness q s 'fuzzy-inputs

Execution Example [1] (load "fuzzy.s") OK [2] (set! fuzzy-inputs '((quantity 0.3) (softness 0.6))) ((QUANTITY 0.3) (SOFTNESS 0.6)) [3] (inference) ((CYCLE 0.39) (TIME 0.5)) [4] fuzzy-outputs ((CYCLE 0.39) (TIME 0.5))

Main Function (define (inference) (initialize-outputs) (map execute-rule rules) (map fuzzy-defuzzification fuzzy-outputs) fuzzy-outputs)

Fuzzy Outputs 'cycle 'time '( numerator denominator ) 'fuzzy-outputs 'cycle 'time ··· 'fuzzy-outputs Defuzzification 'cycle 'time ? ? 'fuzzy-outputs Initialize Outputs

Initializing Output Variables (define (initialize-outputs) (set! fuzzy-outputs '()) (map (lambda (x) (set! fuzzy-outputs (cons (list (car x) '(0.0 0.0)) fuzzy-outputs))) (rule-then (car rules))) #T) 'cycle 'time '(0.0 0.0) 'fuzzy-outputs

Rule Execution (define (execute-rule rule) (set! degree-of-match (apply * (map fuzzy-matching (rule-if rule)))) (map fuzzy-inference-combining (rule-then rule)))

Fuzzy Matching (define (fuzzy-matching antecedent) (matching-degree (cadr (assoc (car antecedent) fuzzy-inputs)) (eval (cadr antecedent)))) 'if 'then '( (quantity quantity-small) (softness softness-soft)) '(···) 'r1 'quantity 'softness ··· 'fuzzy-inputs

Fuzzy Matching 0.00.250.5 1.0 Laundry Quantity = 0.4 Degree of Match = 0.6 Medium

Fuzzy Matching 0.00.250.5 1.0 Small Laundry Quantity = 0.4 Degree of Match = 0.4

Matching Degree (define (matching-degree x membership-function) (case (length membership-function) (3 (matching-degree-triangle x membership-function)) (4 (matching-degree-trapezoid x membership-function))))

Matching Degree (Triangle) (define (matching-degree-triangle x membership-function) (let ((a (car membership-function)) (b (cadr membership-function)) (c (caddr membership-function))) (cond ((< x a) 0.0) ((and (<= a x) (<= x b)) (if (<> a b) (/ (- x a) (- b a)) 1.0)) ((and (<= b x) (<= x c)) (if (<> b c) (/ (- c x) (- c b)) 1.0)) ((< c x) 0.0))))

Matching Degree (Trapezoid) (define (matching-degree-trapezoid x membership-function) (let ((a (car membership-function)) (b (cadr membership-function)) (c (caddr membership-function)) (d (cadddr membership-function))) (cond ((< x a) 0.0) ((and (<= a x) (<= x b)) (if (<> a b) (/ (- x a) (- b a)) 1.0)) ((and (<= b x) (<= x c)) 1.0) ((and (<= c x) (<= x d)) (if (<> c d) (/ (- d x) (- d c)) 1.0)) ((< d x) 0.0))))

Combining Fuzzy Conclusions (define (fuzzy-inference-combining consequent) (let* ((area (fuzzy-area (eval (cadr consequent)))) (centroid (fuzzy-centroid (eval (cadr consequent)))) (conclusion (assoc (car consequent) fuzzy- outputs)) (numerator (car (cadr conclusion))) (denominator (cadr (cadr conclusion)))) (set! fuzzy-outputs (delete! conclusion fuzzy-outputs)) ···

Combining Fuzzy Conclusions ··· (set! fuzzy-outputs (cons (list (car conclusion) (list (+ numerator (* degree-of-match area centroid)) (+ denominator (* degree-of-match area)))) fuzzy-outputs)) #T))

Area (define (fuzzy-area membership-function) (case (length membership-function) (3 (fuzzy-area-triangle membership-function)) (4 (fuzzy-area-trapezoid membership-function))))

Centroid (define (fuzzy-centroid membership-function) (case (length membership-function) (3 (fuzzy-centroid-triangle membership-function)) (4 (fuzzy-centroid-trapezoid membership-function))))

Triangle

Area (Triangle) (define (fuzzy-area-triangle membership-function) (* 0.5 (- (caddr membership-function) (car membership-function))))

Centroid (Triangle) (define (fuzzy-centroid-triangle membership-function) (let* ((base (car membership-function)) (a (- (cadr membership-function) base)) (b (- (caddr membership-function) base))) (+ base (/ (+ a b) 3))))

Trapezoid

Area (Trapezoid) (define (fuzzy-area-trapezoid membership-function) (let ((a (- (caddr membership-function) (cadr membership-function))) (b (- (cadddr membership-function) (car membership-function)))) (* 0.5 (+ a b))))

Centroid (Trapezoid) (define (fuzzy-centroid-trapezoid membership-function) (let* ((base (car membership-function)) (a (- (caddr membership-function) (cadr membership-function))) (b (- (cadddr membership-function) base)) (c (- (cadr membership-function) base))) (+ base (/ (+ (* 2 a c) (* a a) (* c b) (* a b) (* b b)) (* 3 (+ a b))))))

Defuzzification (define (fuzzy-defuzzification conclusion) (let ((numerator (car (cadr conclusion))) (denominator (cadr (cadr conclusion)))) (set! fuzzy-outputs (delete! conclusion fuzzy-outputs)) (set! fuzzy-outputs (cons (list (car conclusion) (/ numerator denominator)) fuzzy-outputs)) #T))

Download ppt "Fuzzy Template for Scheme Language Modeling & Simulation Lab. Sungkyunkwan Univ."

Similar presentations