Deviner la fonction de chaque pièce d'un bâtiment — sans jamais lire les noms Revit. Uniquement par géométrie et topologie de graphe.
Le classifieur n'utilise que des features observables — des données qui ne nécessitent pas de connaître la réponse pour être calculées.
Qui est connecté à qui ? Quelle centralité dans le graphe ? Le réseau de portes et murs encode la fonction.
Quelle surface ? Combien de fenêtres ? Quel ratio de séparateurs ? Les mesures physiques discriminent les types.
L'appartement a-t-il une cuisine ? Un WC ? La composition globale contraint les possibilités.
is_locked (confiance 1.0). Aucune passe ultérieure ne peut les modifier. Résultat : 0 faux positif sur 875 pièces.7 passes successives, du plus certain au plus contextuel. La confiance décroît à mesure que l'incertitude augmente.
Betweenness + closeness centrality → détection des entrées d'appartement. Confiance 1.0.
Empreinte topologique → reconnaissance instantanée d'appartements types. 44 templates, 95% couverture P1.
Arbre de décision : surface, fenêtres, portes, sep_ratio, glazing_ratio. 9 règles + gardes.
Suite parentale, hub d'entrée, annexe cuisine. 3 micro-patterns topologiques reconnus.
4 contraintes architecturales françaises : R_adj, R_bedroom_base, R_toilet_living, R_kitchen_bedroom.
Le voisinage des ancres fiables corrige les classifications faibles. Leaf nodes, profils de voisinage.
Buanderie, centralité, kitchen recovery. Puis correction : cuisine/séjour/entrée/WC manquants.
Garantir exactement 1 entrée par appartement. Surplus → reclassement, absence → promotion.
WL local, hub detection, reclassements contextuels. Dernière couche d'optimisation.
Chaque feature est calculable sans connaître le type de la pièce. C'est le fondement du principe aveugle.
| Feature | Source | Types discriminés |
|---|---|---|
area | Géométrie (segments) | Tous — seuils : 1.5, 3.2, 8.5, 15, 25, 50 m² |
side | Propriété Revit | ext→extérieur (R1), int→séjour (R3) |
sep_ratio | Segments WL vs SEP | garden ≥0.7, terrace ≥0.55, kitchen ≥0.28, corridor ≥0.05 |
num_windows | Arêtes Window | R3 (≥1), R4 (≥1), R8 (≤1) |
num_doors | Arêtes Connected→DR | R2 (≤1), R4 (≥1) |
glazing_ratio | total_window_width / area | séjour ≥0.23 vs chambre ≤0.20 (R3) |
wl_count | Segments WL | storage =5, laundry =6 |
has_placard | Nom famille porte | bedroom 76%, entrance 65% |
has_adjacent | Arêtes Adjacent | garden (toujours), bedroom (jamais) |
total_conn | Connected + Adjacent | corridor ≥2 (R6) |
betweenness | Sous-graphe apt | entrance (max), sanitaires =0.000 |
closeness | Sous-graphe apt | Sélection du palier (v7.1) |
degree | Sous-graphe apt | Score centralité 3b |
eigenvector | Sous-graphe apt | Score centralité 3b |
level | Géométrie | RDC→garden/terrace, étage→balcony (R1) |
cluster_label | Clustering v2 | Contexte apt (Passes 3, 4) |
Chaque type a des propriétés géométriques et topologiques distinctes.
Python ≥ 3.10, aucune dépendance externe.
7 concepts structurants, évolution historique, pistes non retenues, axes de recherche.
Betweenness centrality, closeness, détection des entrées structurelles.
Weisfeiler-Lehman, templates partiels, collision toilet/storage.
10 règles géométriques R1-R10, arbre de décision, sliders de seuils.
3 motifs locaux : suite parentale, hub d'entrée, annexe cuisine.
4 contraintes architecturales : R_adj, R_bedroom, R_toilet, R_kitchen.
Propagation topologique, ancres, leaf nodes, discriminateur btw.
Contexte d'appartement, correction cluster, checklist de composition.
Cohérence des entrées : exactement 1 entrée par appartement.
11 règles de raffinement, WL local, hub detection.
Framework Karpathy, boucle PROPOSE→RUN→EVALUATE→DECIDE, 7 axes de recherche.
Installation, structure du projet, interface web et ligne de commande.
Code couleur, fonctionnalités interactives, conseils de lecture.
6 questions fréquentes : classification, types, précision, troubleshooting.