ÄéÜãñáììá Õëïðïßçóç õðçñåóßáò óõíïéêåóßùí óôçí ãëþóóá Prolog Âáóßëåéïò Êáñáãåþñãïò 1 Íßêïò Óðýñïõ 2 1 ÌÐËÁ, ÅÊÐÁ, ÁÌ: 200609 2 ÇÁ, ÅÊÐÁ, ÁÌ: 2006528 Ëïãéêüò Ðñïãñáììáôéóìüò 2008
ÄéÜãñáììá ÄéÜãñáììá 1 2 3 4
ÄéÜãñáììá ÄéÜãñáììá 1 2 3 4
ÄéÜãñáììá ÄéÜãñáììá 1 2 3 4
ÄéÜãñáììá ÄéÜãñáììá 1 2 3 4
ÄéÜãñáììá 1 2 3 4
Óêïðüò: Õëïðïßçóç ðñïãñüììáôïò ôï ïðïßï èá âñßóêåé ôï êáôüëëçëï ôáßñé ãéá êüèå ðåëüôç ðïõ ñçóéìïðïéåß ôçí õðçñåóßá. ÅðéëïãÞ áðü âüóç äåäïìýíùí ðïõ ðåñéý åé êáôá ùñþóåéò ãéá üëïõò ôïõò ðåëüôåò. Åýñåóç âüóåé êñéôçñßùí áðü ñþóôç, áíüëïãá ìå ôçí åêôéìþìåíç óõìâáôüôçôá áðü ôá êáôáêå ùñçìýíá áñáêôçñéóôéêü.
ÄéÜãñáììá 1 2 3 4
Ôï êáôçãüñçìá\person" Ç âüóç äåäïìýíùí (matchdata.pl) ðåñéý åé ìéá êáôá þñçóç ôïõ êáôçãïñþìáôïò \person" ãéá êüèå ðåëüôç person(nickname, name, surname, sex, hair, eyes, race, age, zodiac_sign, education, income, smoker, height, weight). Ç âüóç ðåñéý åé 100 random generated êáôá ùñþóåéò ðïõ äçìéïõñãþèçêáí ìå Ýíá Python ðñüãñáììá (makedata.py). Ëüãù ôïõ üôé ïé êáôá ùñþóåéò äçìéïõñãþèçêáí ôõ áßá, ôá ïíüìáôá ôùí ðåëáôþí åßíáé ôçò ìïñöþò man1, woman1, êôë.
ÐáñÜìåôñïé ôïõ \person" ÐÁÑÁÌÅÔÑÏÓ Sex (öýëï) Hair ( ñþìá ìáëëéþí) Eyes ( ñþìá ìáôéþí) Race (öõëþ) Sexual_orientation (óåîïõáëéêýò ðñïôéìþóåéò) Zodiac_sign (æþäéï) Education (ìüñöùóç) Income (åéóüäçìá) Smoking (êáðíéóôþò) Height (ýøïò) Weight (âüñïò) ÄÕÍÁÔÅÓ ÔÉÌÅÓ Male, female Black, blonde, brown, red Black, blue, brown, green Caucasian, asian, african american, semite Heterosexual, homosexual, bisexual Aries, sagittarius, taurus, virgo, capricorn, cancer, scorpio, pisces, gemini, libra, aquarius, leo Elementary, highschool, college Low, lower_middle, upper_middle, high Yes, no ÃêáïõóéáíÞ ìå êýíôñï ôï 1,70m ãéá ôïõò Üíôñåò êáé ôï 1,60m ãéá ôéò ãõíáßêåò ÃêáïõóéáíÞ ìå êýíôñï ôá 80 kg ãéá ôïõò Üíôñåò êáé ôá 60 kg ãéá ôéò ãõíáßêåò
Ôï êáôçãüñçìá \hobby" Ãéá êüèå ðåëüôç êáôá ùñïýíôáé óå îå ùñéóôü êáôçãïñþìáôá êáé ôá hobby ôïõ ìå ôçí åîþò ìïñöþ hobby(nickname, activity, rating) Ï âáèìüò ãéá êüèå hobby êõìáßíåôáé áðü 1 Ýùò 10, üðïõ ôï 1 óçìáßíåé üôé áðïóôñýöåôáé ôçí óõãêåêñéìýíç åíáó üëçóç åíþ ôï 10 üôé ôçí ëáôñåýåé. Ôá hobbies ðïõ Ý ïõí ðåñéëçöèåß óôçí óõãêåêñéìýíç âüóç åßíáé ôá åîþò: music, dancing, reading, cinema, chess, martial_arts, painting, gaming, programming, skating, gymnastics, hiking, jogging, ballet, golf, miniatures, traveling, sculpting, cooking
Äçìéïõñãßá ôçò ÂÜóçò Ãéá íá äçìéïõñãþóïõìå ìéá êáéíïýñéá âüóç äåäïìýíùí ôñý ïõìå óôï êýëõöïò ôï ðñüãñáììá \run" ùò åîþò: Äçìéïõñãïýíôáé äýï áñ åßá: ç âüóç äåäïìýíùí (matchdata.pl) êáé ôï all.out, Ýíá text le ôï ïðïßï ðåñéý åé üëïõò ôïõò äõíáôïýò óõíäõáóìïýò ðïõ ðñïêýðôïõí ìåôáîý ôùí ðåëáôþí.
ÄéÜãñáììá 1 2 3 4
To êáôçãüñçìá orientscore áîéïëïãåß ôçí óõìâáôüôçôá ôùí óåîïõáëéêþí ðñïôéìþóåùí äýï áíèñþðùí. Ôï êáôçãüñçìá agescore áîéïëïãåß ôçí óõìâáôüôçôá äýï áíèñþðùí ìå âüóç ôçí äéáöïñü çëéêßáò ðïõ Ý ïõí êáé ôï öýëï ôïõò. Ôï êáôçãüñçìá eduscore áîéïëïãåß ôçí äéáöïñü óôçí ìüñöùóç äýï áíèñþðùí. Ôá êáôçãïñþìáôá score1 êáé score2 õðïëïãßæïõí ôïí âáèìü óõìâáôüôçôáò ôùí åíäéáöåñüíôùí äýï áíèñþðùí. Ôï êáôçãüñçìá sumlist õðïëïãßæåé ôï Üèñïéóìá ôùí óôïé åßùí ìéáò ëßóôáò. Ôï êáôçãüñçìá zmatch áîéïëïãåß ôçí óõìâáôüôçôá äýï æùäßùí ìå âüóç Ýíáí áóôñïëïãéêü ðßíáêá.
To êáôçãüñçìá \score" To êáôçãüñçìá score áîéïëïãåß ìå Ýíáí âáèìü ôï ðüóï ðïëý ôáéñéüæïõí äýï Üíèñùðïé. Ãéá ôçí ôåëéêþ âáèìïëïãßá ñçóéìïðïéïýíôáé ôá áðïôåëýóìáôá ôùí ðñïçãïýìåíùí åðéìýñïõò áîéïëïãþóåùí. Ï âáèìüò ðáßñíåé ôéìýò óôï äéüóôçìá [ 1; 1] ìýóù åíüò sigmoid function. Ï êáíüíáò ðïõ áðïöáóßæåé ôïí âáèìü Ý åé Ýíá êáôþöëé áðïêïðþò, êáé åßíáé ìïíôåëïðïéçìýíïò óýìöùíá ôç ëïãéêþ ôùí íåõñùíéêþí äéêôýùí.
ÄéÜãñáììá 1 2 3 4
To êáôçãüñçìá \match" Ôï êáôçãüñçìá ðïõ áíáëáìâüíåé íá âñåé ôïõò êáôüëëçëïõò áíèñþðïõò ãéá êüèå ðåëüôç åßíáé ôï \match". match(requestor; sex(sex); orientation(orientation); hair(hair); eyes(eyes); race(race); age(age); sign(zodiac); education(education); income(income); height(height); weight(weight); R) : person(nickname; Name; Surname; sex(sex); orientation(orientation); hair(hair); eyes(eyes); race(race); age(age); sign(zodiac); education(education); income(income); ; height(height); weight(weight)); score(requestor; Nickname; Score); Triggeris1=(1 + exp( 1 Score)); Trigger > 0:6; not(requestor = Nickname); matchval(trigger; Matchtype); R = [Matchtype; score(trigger); nickname(nickname); name(name); surname(surname); sex(sex); orientation(orientation); hair(hair); eyes(eyes); race(race); age(age); sign(zodiac); education(education); income(income); height(height); weight(weight)]:
To êáôçãüñçìá \match" (cont.) Ï åêüóôïôå ðåëüôçò èýôåé óáí ïñßóìáôá óôçí match ðñþôá ôï øåõäþíõìï ìå ôï ïðïßï åßíáé êáôá ùñçìýíïò óôçí âüóç êáé ìåôü ôï öýëï, ôéò óåîïõáëéêýò ðñïôéìþóåéò, ôï ñþìá ìáëëéþí, ôï ñþìá ìáôéþí, ôçí çëéêßá, ôï æþäéï, ôï åéóüäçìá, ôçí ìüñöùóç, ôï ýøïò êáé ôï âüñïò ðïõ åðéèõìåß íá Ý åé ï óýíôñïöïò ôïõ. Óôá óôïé åßá ðïõ äåí ôïí åíäéáöýñïõí ìðïñåß íá âüëåé óôç èýóç ôïõò ìéá ôõ áßá ìåôáâëçôþ þóôå íá åëåã èïýí üëïé ïé äõíáôïß óõíäõáóìïß óôç âüóç äåäïìýíùí.
To êáôçãüñçìá \match": ÐáñÜäåéãìá óôù üôé ï ðåëüôçò \man43" åðéèõìåß íá âñåé ìéá ãõíáßêá ìå ìáýñá ìáëëéü, ìðëå ìüôéá êáé æõãü óôï æþäéï. Ôüôå ç åíôïëþ ðïõ ðñýðåé íá äþóåé óôï ðñüãñáììá åßíáé?- match(man1, X, OR, hair(black), eyes(blue), RC, AGE, sign(cancer), ED, INC, H, W, Result).
To êáôçãüñçìá \match": ÐáñÜäåéãìá (cont.) Ôá áðïôåëýóìáôá ðïõ èá Ýðáéñíå åßíáé ôá åîþò Client Code = woman3 Name = woman3 Surname = woman3 { Sex = female Hair Colour = black Eyes = blue Age = 33 Zodiac Sign = aries Height = 1.57 Weight = 57.56 { Your match with this person is bad X = sex(female), OR = orientation(hetero), RC = race(asian), AGE = age(33), ED = education(highschool), INC = income(upper_middle), H = height(1.57), W = weight(57.56), Result = [bad, score(0.699629), nickname(woman3), name(woman3), surname(woman3), sex(female), orientation(hetero), hair(black), eyes(: : :) : : : ]
To êáôçãüñçìá \match": ÐáñÜäåéãìá (cont.) Ôï áðïôýëåóìá Result ðïõ åðéóôñýöåé ôï ðñüãñáììá îåêéíü ìå Ýíáí ðïéïôéêü áñáêôçñéóìü ôïõ óõíïéêåóßïõ ï ïðïßïò Ý åé ôéò åîþò äéáâáèìßóåéò: bad, poor, fair, good, excellent Áõôüò ï áñáêôçñéóìüò åîáñôüôáé áðü ôçí óõíïëéêþ âáèìïëïãßá ôïõ æåýãïõò. Ç âáèìïëïãßá áõôþ êõìáßíåôáé áðü 0 Ýùò 1 êáé äåêôü ãßíïíôáé ôá ôáéñéüóìáôá ôùí ïðïßùí ç âáèìïëïãßá åßíáé ðüíù áðü 0,6 (êáôþöëé áðïêïðþò).
ÄéÜãñáììá 1 2 3 4
Ç Prolog åíäåßêíõôáé ãéá ôçí ãñáöþ ôýôïéïõ åßäïõò ðñïãñáììüôùí (áðüöáóçò, áíáæþôçóçò). Áðü ôçí óôáôéóôéêþ ôùí áðïôåëåóìüôùí ãéá ôõ áßá äåäïìýíá, ìðïñåß êáíåßò íá ðåé üôé ç óõãêåêñéìýíç õëïðïßçóç äßíåé ñåáëéóôéêü áðïôåëýóìáôá. Ðñïöáíþò, ç åéêüíá áõôþ åîáñôüôáé óå ðïëý óçìáíôéêü âáèìü áðü ôçí åðéëïãþ ôùí ðáñáìýôñùí/óôáèåñþí óôïõò êáíüíåò áîéïëüãçóçò (äéáäéêáóßá åêìüèçóçò).