MatchMaking Example 2 (read matchmaking example 1 first):

Assume, that a car seller sells cars. A buyer is looking for a second hand car, but wants to pay not more than around $12000 and the cars should not have more than 15000 kilometers. Furthermore, he wants to give more priority to the price preference rather than to the kilometers preference.

The encoding is as follows:

(implies Sedan Car)
(implies StationWagon Car)

#car C455

(define-fuzzy-concept P12500 crisp(0,1000000,12500,12500))
(define-fuzzy-concept KM18000 crisp(0,1000000,18000,18000))
(define-concept C455 (and Sedan (some hasPrice P12500) (some hasKM KM18000)))

#car C34

(define-fuzzy-concept P12000 crisp(0,1000000,12000,12000))
(define-fuzzy-concept KM17000 crisp(0,1000000,17000,17000))
(define-concept C34 (and Sedan (some hasPrice P12000) (some hasKM KM17000)))

#car C1812

(define-fuzzy-concept P13000 crisp(0,1000000,13000,13000))
(define-fuzzy-concept KM16000 crisp(0,1000000,16000,16000))
(define-concept C1812 (and Sedan (some hasPrice P13000) (some hasKM KM16000)))

#Encoding of the buyer's preferences

(define-fuzzy-concept BuyerCarPrice left-shoulder(0,50000,10000,14000))
(define-fuzzy-concept BuyerCarKM left-shoulder(0,100000,10000,20000))

(define-concept Pref1 (and Car (some hasPrice BuyerCarPrice)))
(define-concept Pref2 (and Car (some hasKM BuyerCarKM)))

#Encoding of the buyer's preferences: he give more priority to Pref1 (0.7) than to Pref2 (0.3)

(define-concept BuyDegree (w-sum (0.7 Pref1) (0.3 Pref2)))

# Let's show the price and KM on the optimal agreement

(show-fillers hasPrice hasKM)

(max-sat? (and BuyDegree C455)) # returns 0.3225, hasPrice=12500, hasKM=18000

#(max-sat? (and BuyDegree C34)) # returns 0.44, hasPrice=12000, hasKM=17000
#(max-sat? (and BuyDegree C1812)) # returns 0.295, hasPrice=13000, hasKM=16000

So the better match would be car C34.

The example file can be found here.