Beaucoup de questions tournent autour du Generative Design Autodesk et plus particulièrement du « Project Refinery ». Je vous propose un exemple simple pas à pas, de l’installation jusqu’à son utilisation. Ça vous intéresse ?
1- Le principe du Générative Design – Project Refinery :
C’est une technologie qui se sert de l'intelligence artificielle (algorithmes) et de la puissance de calcul du cloud pour exprimer des solutions répondant aux différentes contraintes du créateur. Dans ce cadre Autodesk met à la disposition des utilisateurs un outil appelé « Project Refinery ».
Pour plus de renseignements, je vous conseille mon article sur le sujet.
2 Installation de Refinery :
Refinery est un projet en version béta qui nécessite de créer un compte, rendez-vous à cette page, cliquez sur le bouton « Sign in or Create a Account » et laissez-vous guider.
Une fois enregistré, téléchargez la dernière version de Refinery dans la section « Downlaod Refinery »
Une fois téléchargée et installée, vous trouverez dans l’interface :
- du logiciel Revit, dans l’onglet « Compléments », le bouton « Refinery »
- du plugin Dynamo For Revit, un menu « Refinery »
Nota : Dynamo For Revit est lancé à partir de Revit dans l’onglet « Gérer » ;
3- Le principe de fonctionnement :
A partir d’une modélisation issue du logiciel Revit (non obligatoire) et d’un script Dynamo for Revit, le « Project Refinery » permet de trouver la solution idéale par rapport aux contraintes initiales. Une fois la solution idéale choisie, elle peut être réintégrée en cascade dans Dynamo for Revit puis dans le logiciel Revit.
Nota important : la version Refinery 0.35.0 fonctionne uniquement en local sur votre ordinateur (pas de ressource cloud).
3- L’exemple :
L’exemple que je vous propose est de trouver le prix optimum d’un bâtiment de forme parallélépipédique à partir des données géométriques et des prix des matériaux de façade / toiture.
Workflow utilisé :
- Création du Script Dynamo For Revit
- Recherche de la solution optimale dans le projet Refinery
- Envoi des données optimales vers Dynamo For Revit
- Création du modèle dans Revit
4- Le script Dynamo For Revit :
Le script sera composé de cinq parties :
- Données
- Création de la géométrie
- Colorisation de la géométrie dans interface Dynamo For Revit (facultatif)
- Résultats
- Modélisation du volume dans Revit
4.1 Les données :
Nous allons utiliser cinq « Integer Slider » pour définir cinq données d’entrée :
- Largeur du bâtiment
- Hauteur du bâtiment
- Ratio Longueur/largeur
- Prix du matériau faces verticales
- Prix du matériau faces horizontales
Vous trouvez ci-dessous, les variables ainsi que leurs valeurs limites.
Important : pour signifier au projet Refinery que ces valeurs sont des données d’entrée, effectuez un clic droit sur chacun des sliders et activez « Est une entrée ».
Nota important : Le projet Refinery utilise uniquement comme donnée d’entrée des nœuds de type :
- Number slider
- Integer slider
- Boolean
4.2 Création de la géométrie :
Vous trouvez la partie du script décrivant la création de la géométrie dans l’interface Dynamo For Revit.
Explications du code block « Extraction des façades » :
- « subSurfaces = g.Explode() ; » : Eclate le volume en surfaces
- « subZ = subSurfaces.PointAtParameter(0.5,0.5).Z ; » Créé un point au milieu de chaque surfaces à l’altitude z
- « mask = subZ == List.MaximumItem(subZ);”: Créé une liste de booléens (vrai, faux) en fonction de leur altitude (vrai pour le plus haut, faux pour les autres)
- “ceilingRoof = List.FilterByBoolMask(subSurfaces, mask)["in"];” : identification de la surface représentant le toit (Vrai = in)
- “walls = List.FilterByBoolMask(subSurfaces, mask)["out"];” : identification de la surface représentant les façades (Faux = out)
4.3 Colorisation de la géométrie dans interface Dynamo For Revit (facultatif) :
Afin d’affecter des couleurs aux faces verticales et horizontales, je vais utiliser le nœud « GeometryColor.ByGeometryColor » associé à une couleur (« Color Palette ») pour chacune des surfaces.
4.4 Résultats :
Cette partie consiste à multiplier les prix unitaires par les surfaces et à les additionner pour obtenir le prix total (exprimé en k€).
Important : pour signifier au projet Refinery que ces valeurs sont des données de sortie, effectuez un clic droit sur chacun des nœuds de résultat et activez « Résultat effectif ».
4.5 Création du modèle dans Revit :
Pour modéliser la forme dans l’interface Revit, je vais utiliser le nœud « DirectShape.ByGeometry » associé aux autres nœuds (« Categories », « Material.byName », un champ texte « Village BIM »).
5- Recherche de la solution optimale dans le projet Refinery:
Comme mentionné plus haut, la version Refinery 0.35.0 fonctionne uniquement en local sur votre ordinateur et donc je vais utiliser les étapes décrites ci-dessous :
5.1 Export du script vers Refinery :
- Cliquez sur « Export for Refinery » dans le menu déroulant « Refinery »
Une fenêtre va valider votre export et le cas échant, vous avertir d’erreur ou de nœuds Dynamo non pris en charge.
- Cliquez sur le bouton « Export »
Nota : dans mon cas, je l’avais déjà exporté. C’est pour cette raison qu’il me demande s’il peut écraser l’ancienne version.
5.2 Utilisation de Refinery :
- Cliquez sur « Launch Refinery » dans le menu déroulant « Refinery »
La fenêtre d’accueil Refinery s’ouvre en vous présentant les dernières simulations que vous avez déjà réalisé (vide si c’est la première fois).
- Réalisation d’une simulation
o Cliquez sur le bouton « New Study »
o Parmi les différents scripts, choisissez le script de vous venez de sauvegarder (ici « VillageBIMHauteur »)
o Les paramètres de la simulation sont disponibles, notamment le type de méthode de résolution :
Refinery utilise l'algorithme d'optimisation NSGA-II (un type d'algorithme génétique), qui est un algorithme d'optimisation méta-heuristique pour l'optimisation multi-objectifs. Les algorithmes génétiques sont couramment utilisés pour générer des solutions de haute qualité aux problèmes d'optimisation et de recherche en s'appuyant sur des opérateurs bio-inspirés tels que la mutation, le croisement et la sélection.
Un algorithme génétique est une optimisation basée sur la population. Les approches basées sur la population maintiennent et améliorent de multiples solutions, en utilisant souvent les caractéristiques de la population pour guider la recherche. Chaque incrément de l'optimisation s'appelle « une génération ». Ainsi, lorsque vous définissez la valeur de génération sur 40, le processus de sélection, de croisement et de mutation se répète 40 fois pour chaque population de 40 éléments (plus d’informations ici).
Il existe 4 méthodes :
o Optimize : Cette méthode fait évoluer la conception en fonction des résultats des évaluateurs. Le processus d'optimisation fonctionne en exécutant plusieurs générations d'une conception, chaque génération utilisera la configuration d'entrée des générations précédentes et optimisera ainsi les nouvelles options de conception. La méthode est réalisée à partir des variables sélectionnées, des objectifs spécifiés (Maximisés ou minimisés), d’une population (voir plus haut) et d’un nombre de solutions, l’algorithme va essayer de trouver les solutions optimales.
Nota : Vous pouvez contraindre certains objectifs.
o Cross Product : cette méthode permet d'explorer tout l'espace de conception de votre design, en combinant à chaque étape chaque paramètre avec les autres paramètres. La simulation utilise uniquement les bornes limites des variables (inclinant des variations) en effectuant toutes les combinaisons possibles.
Exemple : si la variation est égale à 3 entre les bornes 20 et 100 , dans les simulations, seules les populations [20 ,60 et 100] seront pris en compte.
o Randomize : cette méthode génère un nombre spécifié d'options de conception, en attribuant au hasard une valeur à chacun des paramètres d'entrée. La simulation se réalise à partir des variables sélectionnées, du nombre de solutions demandées et d’une variance de départ (« seed »).
o Like this : Basée sur la simulation précédente, vous avez la possibilité de jouer sur la variation des données en précisant les valeurs initiales
- Exploration des résultats :
Après quelques secondes (ou minutes) de calculs, vous obtenez les résultats ci-dessous :
Les graphes :
La présentation du graphe « 4D » se réalise à partir de quatre variables disposées sur le côté gauche du graphe.
Le graphe « parallel coordinates », vous permet de suivre la trajectoire des données empruntées par une solution.
Filtrer les données :
Il est possible de filtrer les données graphiquement en activant la fonction « Filter » et en effectuant des sélections le long des différents axes du graphe.
Affichage des résultats :
Lorsque le script Dynamo for Revit le permet, vous avez la liste des solutions sous forme de miniatures.
Vous pouvez les afficher sous forme tableau :
Nota : lorsque vous sélectionnez une solution, elle est notifiée sur le graphe (vice versa).
6- Envoi des données optimales vers Dynamo For Revit :
Une fois que vous jugez une solution optimale parmi les autres solutions, sélectionnez celle-ci et cliquez sur le bouton « Open in Dynamo ». Automatiquement toutes les données sont transférées vers Dynamo For Revit.
Nota : si votre Dynamo For Revit est fermé, il va l’ouvrir avec les données issues de Refinery.
Résultat :
7- Création du modèle dans Revit :
Voir le chapitre 4.5 de cet article.
Résultat :
Pour ceux qui veulent tester mon script, vous pouvez le télécharger ici.
J’espère que vous comprenez un peu mieux les bénéfices de ce workflow et je vous rappelle que Refinery est un projet béta (donc ne peut servir à la production).