{"id":187,"date":"2019-10-16T09:00:00","date_gmt":"2019-10-16T07:00:00","guid":{"rendered":"https:\/\/blogs.autodesk.com\/villagebim\/2019\/10\/comprendre-generative-design-un-exemple.html"},"modified":"2021-02-04T20:12:37","modified_gmt":"2021-02-04T18:12:37","slug":"comprendre-generative-design-un-exemple","status":"publish","type":"post","link":"https:\/\/blogs.autodesk.com\/villagebim\/2019\/10\/comprendre-generative-design-un-exemple.html","title":{"rendered":"[Comprendre] Generative Design \u2013 un exemple"},"content":{"rendered":"<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1481c200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image002\" border=\"0\" height=\"268\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14820200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image002\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Beaucoup de questions tournent autour du <strong>Generative Design<\/strong> Autodesk et plus particuli\u00e8rement du \u00ab <strong>Project Refinery<\/strong> \u00bb. Je vous propose un exemple simple pas \u00e0 pas, de l\u2019installation jusqu\u2019\u00e0 son utilisation. \u00c7a vous int\u00e9resse ?<\/p>\n<p style=\"text-align: justify\"><strong><u>1- Le principe du G\u00e9n\u00e9rative Design \u2013 Project Refinery :<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;C\u2019est une technologie qui se sert de l&#039;intelligence artificielle (algorithmes) et de la puissance de calcul du cloud pour exprimer des solutions r\u00e9pondant aux diff\u00e9rentes contraintes du cr\u00e9ateur. Dans ce cadre Autodesk met \u00e0 la disposition des utilisateurs un outil appel\u00e9 \u00ab <strong><em>Project Refinery<\/em><\/strong> \u00bb.<\/p>\n<p style=\"text-align: justify\">Pour plus de renseignements, je vous conseille <a href=\"https:\/\/villagebim.typepad.com\/villagebim\/2019\/01\/decouvrir-le-generative-design-une-nouvelle-phase-chez-autodesk.html\">mon article<\/a> sur le sujet.<\/p>\n<p style=\"text-align: justify\"><strong><u>2 Installation de Refinery :<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Refinery est un projet en version b\u00e9ta qui n\u00e9cessite de cr\u00e9er un compte, rendez-vous \u00e0 <a href=\"https:\/\/feedback.autodesk.com\/welcome\/default.html?key=RefineryLanding\">cette page<\/a>, cliquez sur le bouton \u00ab <em>Sign in or Create a Account<\/em> \u00bb et laissez-vous guider.<\/p>\n<p><a href=\"https:\/\/feedback.autodesk.com\/welcome\/default.html?key=RefineryLanding\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image004\" border=\"0\" height=\"273\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14824200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image004\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Une fois enregistr\u00e9, t\u00e9l\u00e9chargez la derni\u00e8re version de Refinery dans la section \u00ab <em>Downlaod Refinery<\/em> \u00bb<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14828200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image006\" border=\"0\" height=\"229\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d657200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image006\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Une fois t\u00e9l\u00e9charg\u00e9e et install\u00e9e, vous trouverez dans l\u2019interface :<\/p>\n<ul>\n<li>du logiciel Revit, dans l\u2019onglet \u00ab <em>Compl\u00e9ments<\/em> \u00bb, le bouton \u00ab <em>Refinery<\/em> \u00bb<\/li>\n<\/ul>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1482c200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image008\" border=\"0\" height=\"85\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14830200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image008\" width=\"454\" \/><\/a><\/p>\n<ul>\n<li>du plugin Dynamo For Revit, un menu \u00ab <em>Refinery<\/em> \u00bb<\/li>\n<\/ul>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2d1200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image009\" border=\"0\" height=\"85\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14834200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image009\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Nota <\/u>: Dynamo For Revit est lanc\u00e9 \u00e0 partir de Revit dans l\u2019onglet \u00ab <em>G\u00e9rer<\/em> \u00bb ;<\/p>\n<p style=\"text-align: justify\"><strong><u>3- Le principe de fonctionnement :<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;A partir d\u2019une mod\u00e9lisation issue du logiciel Revit (non obligatoire) et d\u2019un script Dynamo for Revit, le \u00ab <em>Project Refinery<\/em> \u00bb permet de trouver la solution id\u00e9ale par rapport aux contraintes initiales. Une fois la solution id\u00e9ale choisie, elle peut \u00eatre r\u00e9int\u00e9gr\u00e9e en cascade dans Dynamo for Revit puis dans le logiciel Revit.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d65b200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image011\" border=\"0\" height=\"248\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2d5200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image011\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><strong><u>Nota important :<\/u><\/strong> la version Refinery 0.35.0 fonctionne uniquement en local sur votre ordinateur (pas de ressource cloud).<\/p>\n<p style=\"text-align: justify\"><strong><u>3- L\u2019exemple :<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;L\u2019exemple que je vous propose est de trouver le prix optimum d\u2019un b\u00e2timent de forme parall\u00e9l\u00e9pip\u00e9dique \u00e0 partir des donn\u00e9es g\u00e9om\u00e9triques et des prix des mat\u00e9riaux de fa\u00e7ade \/ toiture.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14838200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image013\" border=\"0\" height=\"241\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d65f200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image013\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Workflow utilis\u00e9 :<\/u><\/p>\n<ul>\n<li>Cr\u00e9ation du Script Dynamo For Revit<\/li>\n<li>Recherche de la solution optimale dans le projet Refinery<\/li>\n<li>Envoi des donn\u00e9es optimales vers Dynamo For Revit<\/li>\n<li>Cr\u00e9ation du mod\u00e8le dans Revit<\/li>\n<\/ul>\n<p style=\"text-align: justify\"><strong><u>4- Le script Dynamo For Revit :<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Le script sera compos\u00e9 de cinq parties :<\/p>\n<ul>\n<li>Donn\u00e9es<\/li>\n<li>Cr\u00e9ation de la g\u00e9om\u00e9trie<\/li>\n<li>Colorisation de la g\u00e9om\u00e9trie dans interface Dynamo For Revit (facultatif)<\/li>\n<li>R\u00e9sultats<\/li>\n<li>Mod\u00e9lisation du volume dans Revit<\/li>\n<\/ul>\n<p style=\"text-align: justify\"><u>4.1 Les donn\u00e9es :<\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Nous allons utiliser cinq \u00ab <em>Integer Slider<\/em> \u00bb pour d\u00e9finir cinq donn\u00e9es d\u2019entr\u00e9e :<\/p>\n<ul>\n<li>Largeur du b\u00e2timent<\/li>\n<li>Hauteur du b\u00e2timent<\/li>\n<li>Ratio Longueur\/largeur<\/li>\n<li>Prix du mat\u00e9riau faces verticales<\/li>\n<li>Prix du mat\u00e9riau faces horizontales<\/li>\n<\/ul>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d663200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image014\" border=\"0\" height=\"189\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1483c200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image014\" width=\"354\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Vous trouvez ci-dessous, les variables ainsi que leurs valeurs limites.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d667200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image015\" border=\"0\" height=\"1193\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14841200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image015\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Important :<\/u> pour signifier au projet Refinery que ces valeurs sont des donn\u00e9es d\u2019entr\u00e9e, effectuez un clic droit sur chacun des sliders et activez \u00ab <em>Est une entr\u00e9e<\/em> \u00bb.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d66b200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image016\" border=\"0\" height=\"283\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2dc200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image016\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Nota important :<\/u> Le projet Refinery utilise uniquement comme donn\u00e9e d\u2019entr\u00e9e des n\u0153uds de type :<\/p>\n<ul>\n<li>Number slider<\/li>\n<li>Integer slider<\/li>\n<li>Boolean<\/li>\n<\/ul>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d66f200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image017\" border=\"0\" height=\"259\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2e0200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image017\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>4.2 Cr\u00e9ation de la g\u00e9om\u00e9trie :<\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Vous trouvez la partie du script d\u00e9crivant la cr\u00e9ation de la g\u00e9om\u00e9trie dans l\u2019interface Dynamo For Revit.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14845200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image019\" border=\"0\" height=\"195\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14849200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image019\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Explications du code block \u00ab Extraction des fa\u00e7ades \u00bb :<\/p>\n<ul>\n<li>\u00ab<em> subSurfaces = g.Explode()<\/em> ; \u00bb : Eclate le volume en surfaces<\/li>\n<li>\u00ab <em>subZ = subSurfaces.PointAtParameter(0.5,0.5).Z<\/em> ; \u00bb Cr\u00e9\u00e9 un point au milieu de chaque surfaces \u00e0 l\u2019altitude z<\/li>\n<li>\u00ab <em>mask = subZ == List.MaximumItem(subZ);<\/em>\u201d: Cr\u00e9\u00e9 une liste de bool\u00e9ens (vrai, faux) en fonction de leur altitude (vrai pour le plus haut, faux pour les autres)<\/li>\n<li>\u201c<em>ceilingRoof = List.FilterByBoolMask(subSurfaces, mask)[&quot;in&quot;];\u201d : identification de la surface repr\u00e9sentant le toit (Vrai = in)<\/em><\/li>\n<li>\u201c<em>walls = List.FilterByBoolMask(subSurfaces, mask)[&quot;out&quot;];\u201d : identification de la surface repr\u00e9sentant les fa\u00e7ades (Faux = out)<\/em><\/li>\n<\/ul>\n<p style=\"text-align: justify\"><u>4.3 Colorisation de la g\u00e9om\u00e9trie dans interface Dynamo For Revit (facultatif) :<\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Afin d\u2019affecter des couleurs aux faces verticales et horizontales, je vais utiliser le n\u0153ud \u00ab <em>GeometryColor.ByGeometryColor<\/em> \u00bb associ\u00e9 \u00e0 une couleur (\u00ab <em>Color Palette<\/em> \u00bb) pour chacune des surfaces.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1484d200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image021\" border=\"0\" height=\"153\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2e4200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image021\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>4.4 R\u00e9sultats :<\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Cette partie consiste \u00e0 multiplier les prix unitaires par les surfaces et \u00e0 les additionner pour obtenir le prix total (exprim\u00e9 en k\u20ac).<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14853200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image023\" border=\"0\" height=\"287\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14857200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image023\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Important <\/u>: pour signifier au projet Refinery que ces valeurs sont des donn\u00e9es de sortie, effectuez un clic droit sur chacun des n\u0153uds de r\u00e9sultat et activez \u00ab <em>R\u00e9sultat effectif<\/em> \u00bb.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d674200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image024\" border=\"0\" height=\"484\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1485b200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image024\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>4.5 Cr\u00e9ation du mod\u00e8le dans Revit : <\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Pour mod\u00e9liser la forme dans l\u2019interface Revit, je vais utiliser le n\u0153ud \u00ab <em>DirectShape.ByGeometry<\/em> \u00bb associ\u00e9 aux autres n\u0153uds (\u00ab <em>Categories<\/em> \u00bb, \u00ab <em>Material.byName<\/em> \u00bb, un champ texte \u00ab Village BIM \u00bb).<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d678200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image025\" border=\"0\" height=\"210\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2e9200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image025\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><strong><u>5- Recherche de la solution optimale dans le projet Refinery:<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Comme mentionn\u00e9 plus haut, la version Refinery 0.35.0 fonctionne uniquement en local sur votre ordinateur et donc je vais utiliser les \u00e9tapes d\u00e9crites ci-dessous :<\/p>\n<p style=\"text-align: justify\"><u>5.1 Export du script vers Refinery :<\/u><\/p>\n<ul>\n<li>Cliquez sur \u00ab <em>Export for Refinery<\/em> \u00bb dans le menu d\u00e9roulant \u00ab <em>Refinery<\/em> \u00bb<\/li>\n<\/ul>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1485f200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image027\" border=\"0\" height=\"79\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2ed200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image027\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Une fen\u00eatre va valider votre export et le cas \u00e9chant, vous avertir d\u2019erreur ou de n\u0153uds Dynamo non pris en charge.<\/p>\n<ul>\n<li>Cliquez sur le bouton \u00ab <em>Export<\/em> \u00bb<\/li>\n<\/ul>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2f1200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image028\" border=\"0\" height=\"352\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2f5200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image028\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Nota :<\/u> dans mon cas, je l\u2019avais d\u00e9j\u00e0 export\u00e9. C\u2019est pour cette raison qu\u2019il me demande s\u2019il peut \u00e9craser l\u2019ancienne version.<\/p>\n<p style=\"text-align: justify\"><u>5.2 Utilisation de Refinery :<\/u><\/p>\n<ul>\n<li>Cliquez sur \u00ab <em>Launch Refinery<\/em> \u00bb dans le menu d\u00e9roulant \u00ab <em>Refinery<\/em> \u00bb<\/li>\n<\/ul>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d67e200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image029\" border=\"0\" height=\"79\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14863200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image029\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;La fen\u00eatre d\u2019accueil Refinery s\u2019ouvre en vous pr\u00e9sentant les derni\u00e8res simulations que vous avez d\u00e9j\u00e0 r\u00e9alis\u00e9 (vide si c\u2019est la premi\u00e8re fois).<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2f9200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image031\" border=\"0\" height=\"274\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f2fd200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image031\" width=\"454\" \/><\/a><\/p>\n<ul>\n<li>R\u00e9alisation d\u2019une simulation<\/li>\n<\/ul>\n<p style=\"text-align: justify\">&#160; &#160; &#160; &#160; &#160; &#160; &#160; o Cliquez sur le bouton \u00ab <em>New Study<\/em> \u00bb<\/p>\n<p style=\"text-align: justify\">&#160; &#160; &#160; &#160; &#160; &#160; &#160; o Parmi les diff\u00e9rents scripts, choisissez le script de vous venez de sauvegarder (ici \u00ab <em>VillageBIMHauteur<\/em> \u00bb)<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14867200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image032\" border=\"0\" height=\"519\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1486b200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image032\" width=\"354\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160; &#160; &#160; &#160; &#160; &#160; &#160; o Les param\u00e8tres de la simulation sont disponibles, notamment le type de m\u00e9thode de r\u00e9solution :<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d682200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image033\" border=\"0\" height=\"292\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1486f200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image033\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Refinery utilise l&#039;algorithme d&#039;optimisation <a href=\"https:\/\/en.wikipedia.org\/wiki\/Multi-objective_optimization\">NSGA-II<\/a> (un type d&#039;algorithme g\u00e9n\u00e9tique), qui est un algorithme d&#039;optimisation m\u00e9ta-heuristique pour l&#039;optimisation multi-objectifs. Les algorithmes g\u00e9n\u00e9tiques sont couramment utilis\u00e9s pour g\u00e9n\u00e9rer des solutions de haute qualit\u00e9 aux probl\u00e8mes d&#039;optimisation et de recherche en s&#039;appuyant sur des op\u00e9rateurs bio-inspir\u00e9s tels que la mutation, le croisement et la s\u00e9lection.<\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Un algorithme g\u00e9n\u00e9tique est une optimisation bas\u00e9e sur la population. Les approches bas\u00e9es sur la population maintiennent et am\u00e9liorent de multiples solutions, en utilisant souvent les caract\u00e9ristiques de la population pour guider la recherche. Chaque incr\u00e9ment de l&#039;optimisation s&#039;appelle \u00ab une g\u00e9n\u00e9ration \u00bb. Ainsi, lorsque vous d\u00e9finissez la valeur de g\u00e9n\u00e9ration sur 40, le processus de s\u00e9lection, de croisement et de mutation se r\u00e9p\u00e8te 40 fois pour chaque population de 40 \u00e9l\u00e9ments (plus d\u2019informations <a href=\"https:\/\/en.wikipedia.org\/wiki\/Genetic_algorithm\">ici<\/a>).<\/p>\n<p style=\"text-align: justify\"><span style=\"text-decoration: underline\">Il existe 4 m\u00e9thodes :<\/span><\/p>\n<p style=\"text-align: justify\">&#160; &#160; &#160; &#160; &#160; &#160; &#160; <u>o Optimize :<\/u> Cette m\u00e9thode fait \u00e9voluer la conception en fonction des r\u00e9sultats des \u00e9valuateurs. Le processus d&#039;optimisation fonctionne en ex\u00e9cutant plusieurs g\u00e9n\u00e9rations d&#039;une conception, chaque g\u00e9n\u00e9ration utilisera la configuration d&#039;entr\u00e9e des g\u00e9n\u00e9rations pr\u00e9c\u00e9dentes et optimisera ainsi les nouvelles options de conception. La m\u00e9thode est r\u00e9alis\u00e9e \u00e0 partir des variables s\u00e9lectionn\u00e9es, des objectifs sp\u00e9cifi\u00e9s (Maximis\u00e9s ou minimis\u00e9s), d\u2019une population (voir plus haut) et d\u2019un nombre de solutions, l\u2019algorithme va essayer de trouver les solutions optimales.<\/p>\n<p>&#160;<a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d686200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image034\" border=\"0\" height=\"516\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14875200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image034\" width=\"354\" \/><\/a><\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d68a200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image036\" border=\"0\" height=\"131\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f301200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image036\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Nota :<\/u> Vous pouvez contraindre certains objectifs.<\/p>\n<p style=\"text-align: justify\">&#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style=\"text-decoration: underline\">o Cross Product :<\/span> cette m\u00e9thode permet d&#039;explorer tout l&#039;espace de conception de votre design, en combinant \u00e0 chaque \u00e9tape chaque param\u00e8tre avec les autres param\u00e8tres. La simulation utilise uniquement les bornes limites des variables (inclinant des variations) en effectuant toutes les combinaisons possibles.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f305200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image037\" border=\"0\" height=\"517\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f309200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image037\" width=\"354\" \/><\/a><\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f30d200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image039\" border=\"0\" height=\"104\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1487a200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image039\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">Exemple : si la variation est \u00e9gale \u00e0 3 entre les bornes 20 et 100 , dans les simulations, seules les populations [20 ,60 et 100] seront pris en compte.<\/p>\n<p style=\"text-align: justify\">&#160; &#160; &#160; &#160; &#160; &#160; <span style=\"text-decoration: underline\">&#160; o Randomize :<\/span> cette m\u00e9thode g\u00e9n\u00e8re un nombre sp\u00e9cifi\u00e9 d&#039;options de conception, en attribuant au hasard une valeur \u00e0 chacun des param\u00e8tres d&#039;entr\u00e9e. La simulation se r\u00e9alise \u00e0 partir des variables s\u00e9lectionn\u00e9es, du nombre de solutions demand\u00e9es et d\u2019une variance de d\u00e9part (\u00ab seed \u00bb).<\/p>\n<p>&#160;<a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f311200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image040\" border=\"0\" height=\"475\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f315200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image040\" width=\"354\" \/><\/a><\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d690200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image042\" border=\"0\" height=\"119\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1487f200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image042\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160; &#160; &#160; &#160; &#160; &#160; &#160; <span style=\"text-decoration: underline\">o Like this :<\/span> Bas\u00e9e sur la simulation pr\u00e9c\u00e9dente, vous avez la possibilit\u00e9 de jouer sur la variation des donn\u00e9es en pr\u00e9cisant les valeurs initiales<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14883200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image043\" border=\"0\" height=\"586\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d695200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image043\" width=\"354\" \/><\/a><\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f319200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image045\" border=\"0\" height=\"177\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14889200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image045\" width=\"454\" \/><\/a><\/p>\n<ul>\n<li>Exploration des r\u00e9sultats :<\/li>\n<\/ul>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Apr\u00e8s quelques secondes (ou minutes) de calculs, vous obtenez les r\u00e9sultats ci-dessous :<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f31e200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image047\" border=\"0\" height=\"266\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d699200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image047\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Les graphes :<\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;La pr\u00e9sentation du graphe \u00ab 4D \u00bb se r\u00e9alise \u00e0 partir de quatre variables dispos\u00e9es sur le c\u00f4t\u00e9 gauche du graphe.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1488f200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image049\" border=\"0\" height=\"188\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f326200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image049\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Le graphe \u00ab <em>parallel coordinates<\/em> \u00bb, vous permet de suivre la trajectoire des donn\u00e9es emprunt\u00e9es par une solution.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14893200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image051\" border=\"0\" height=\"221\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f32a200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image051\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Filtrer les donn\u00e9es :<\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Il est possible de filtrer les donn\u00e9es graphiquement en activant la fonction \u00ab <em>Filter<\/em> \u00bb et en effectuant des s\u00e9lections le long des diff\u00e9rents axes du graphe.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d69d200b-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image053\" border=\"0\" height=\"323\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f32e200c-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image053\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Affichage des r\u00e9sultats :<\/u><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Lorsque le script Dynamo for Revit le permet, vous avez la liste des solutions sous forme de miniatures.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f332200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image055\" border=\"0\" height=\"300\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d6a1200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image055\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Vous pouvez les afficher sous forme tableau :<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b14897200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image057\" border=\"0\" height=\"260\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d6a5200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image057\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><u>Nota :<\/u> lorsque vous s\u00e9lectionnez une solution, elle est notifi\u00e9e sur le graphe (vice versa).<\/p>\n<p style=\"text-align: justify\"><strong><u>6- Envoi des donn\u00e9es optimales vers Dynamo For Revit :<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Une fois que vous jugez une solution optimale parmi les autres solutions, s\u00e9lectionnez celle-ci et cliquez sur le bouton \u00ab <em>Open in Dynamo<\/em> \u00bb. Automatiquement toutes les donn\u00e9es sont transf\u00e9r\u00e9es vers Dynamo For Revit.<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b1489b200d-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image059\" border=\"0\" height=\"250\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d6a9200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image059\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><span style=\"text-decoration: underline\">Nota :<\/span> si votre Dynamo For Revit est ferm\u00e9, il va l\u2019ouvrir avec les donn\u00e9es issues de Refinery.<\/p>\n<p style=\"text-align: justify\"><u>R\u00e9sultat<\/u> :<\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f339200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image061\" border=\"0\" height=\"243\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4d5d6ae200b-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image061\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\"><strong><u>7- Cr\u00e9ation du mod\u00e8le dans Revit :<\/u><\/strong><\/p>\n<p style=\"text-align: justify\">Voir le chapitre 4.5 de cet article.<\/p>\n<p style=\"text-align: justify\"><u>R\u00e9sultat : <\/u><\/p>\n<p><a href=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a487f33d200c-pi\"><img loading=\"lazy\" decoding=\"async\" alt=\"clip_image063\" border=\"0\" height=\"250\" src=\"https:\/\/villagebim.typepad.com\/.a\/6a015391e15a28970b0240a4b148a4200d-pi\" style=\"background-image: none;margin-left: auto;margin-right: auto\" title=\"clip_image063\" width=\"454\" \/><\/a><\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;Pour ceux qui veulent tester mon script, vous pouvez le t\u00e9l\u00e9charger <span class=\"asset  asset-generic at-xid-6a015391e15a28970b0240a4b14a4a200d img-responsive\"><a href=\"https:\/\/villagebim.typepad.com\/files\/villagebimhauteur.dyn\">ici<\/a><\/span>.<\/p>\n<p style=\"text-align: justify\">&#160;&#160;&#160;&#160;J\u2019esp\u00e8re que vous comprenez un peu mieux les b\u00e9n\u00e9fices de ce workflow et je vous rappelle que Refinery est un projet b\u00e9ta (donc ne peut servir \u00e0 la production).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#160;&#160;&#160;&#160;Beaucoup de questions tournent autour du Generative Design Autodesk et plus particuli\u00e8rement du \u00ab Project Refinery \u00bb. Je vous propose un exemple simple pas \u00e0 pas, de l\u2019installation jusqu\u2019\u00e0 son utilisation. \u00c7a vous int\u00e9resse ? 1- Le principe du G\u00e9n\u00e9rative Design \u2013 Project Refinery : &#160;&#160;&#160;&#160;C\u2019est une technologie qui se sert de l&#039;intelligence artificielle (algorithmes) [&hellip;]<\/p>\n","protected":false},"author":4760,"featured_media":2472,"menu_order":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[15,299,17,57],"tags":[20,44,171,72,71,292],"class_list":["post-187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-autodesk-revit","category-labs-et-versions-beta","category-nouveautes","category-programmation-visuelle","tag-autodesk","tag-bim","tag-dynamo","tag-exemple","tag-generative-design","tag-refinery","dhig-theme--light"],"acf":[],"_links":{"self":[{"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/posts\/187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/users\/4760"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/comments?post=187"}],"version-history":[{"count":0,"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/posts\/187\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/media\/2472"}],"wp:attachment":[{"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/media?parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/categories?post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.autodesk.com\/villagebim\/wp-json\/wp\/v2\/tags?post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}