Skip to content

Filtrage de prédicats flous avec ALPHA et K

postgresqlf edited this page Oct 13, 2011 · 1 revision

La clause select peut être également complétée par des paramètres indiquant la quantité de résultats attendus (k) et/ou la qualité, c'est-à-dire le degré de satisfaction minimal attendu (alpha). Voici un exemple d'une telle requête :

select 0.6 emp#, e-nom from emp E, dept D where E.dep# = D.dep# and E.âge is 'jeune' and D.budget is 'important';

Dans la définition précédente de fuzzy2bool(float), un filtrage « alpha cut » est effectué pour ne conserver que les prédicats ayant un degré de satisfaction MU supérieur à un seuil alpha. On stocke à cette occasion la valeur réelle attachée au prédicat flou dans la variable mu. Le filtrage est réalisé à l’aide d'une vue pour laquelle on spécifie un ordonnancement des résultats avec la clause « ORDER BY get_mu() DESC ». Le nombre de résultats est limité à l’aide de la clause « LIMIT get_k() ».

CREATE OR REPLACE VIEW vue_employes AS SELECT *, get_mu() as mu, get_k() as k FROM employes ORDER BY mu DESC LIMIT k;

Une alternative envisageable serait d’utiliser “RANK() OVER(ORDER BY mu) as sqlf_rank” pour . Pour le moment, une anomalie dans le fonctionnement des vues empêche de réaliser le filtrage en fonction de K.

Clone this wiki locally