# The Application of Generative Algorithms in Human-Centered Product Development
###### Abstract
By considering many aspects of generative design technology, we introduce a highly relevant case study that explores the relationship between human factors and generative design methods through the creation of a bespoke product. Generative design is a design process that utilizes computational methods to achieve discrete design outcomes that are explored iteratively [5]. In a generative design process, the initial constraints are established by the designer, but the form-finding algorithms applied within a CAD environment engage with these constraints to establish design options within the constraints. The designer is still required to apply insight, knowledge, and intuition in the development of the emerging design; however, this may take a different form from a typical design process. It is still necessary for a basic representation of the form to be developed based on the initial design requirements, and the rules that govern the algorithm also require critical reflection and refinement. These tasks require the creativity, intuition, and judgement associated with innovative design working [6]. An instructive means of understanding generative design is through the processes of CAD. Though the cultural and philosophical foundation of generative design was arguably laid down well before digital drawing and visualization software (biomimicry [7]), it was not until computer systems allowed for the real-time exploration of parameterized geometry and the development of algorithms that generative methods could be realized in full. Although terminology is somewhat fluid across the area of CAD, [PERSON]'s [8] breakdown of terminology is useful, differentiating \"parametric\", \"computational\", and \"generative\" modelling. As subsets of algorithmic modelling, parametric modelling is the most basic and is used in standard solid modelling CAD software. Computational and generative modelling approaches are more complex, allowing the system to accommodate and adapt with added intelligence such as material constraints or simulation data. While there is significant overlap between the two, \"computational design\" is a broader description encompassing any form of design that may be assisted by computation-based form-finding methods. \"Generative design\" is a narrower description but can be thought of as a subset of computational design where the solutions are more open-ended and will emerge from the solving process. The most advanced form-finding generative algorithms will not only use multiple forms of data and intelligence to inform the design, but they will also iterate different options and converge on a solution that has been optimized across a number of predefined constraints. A range of tools have been developed to integrate computational and generative design technologies into user-friendly interfaces. Many commercially available CAD packages that utilize traditional parametric modelling methods now have integrated tools that may aid or work in conjunction with generative strategies. Creo Parametric, SolidWorks, and Fusion360 all contain a variety of optimization tools based on finite element analytics that can allow designers to generate forms optimized around particular inputs. While the scope of these tools varies from software to software, generally these programs contain the requisite building blocks for generative design workflows, such as the Pareto plug-in for SolidWorks or the new preconfigured tools present in Fusion360 which offer laymen the chance to explore some of the basic outputs of generative methods. Real command over generative processes however comes from more intricate control over the software coding and visual programming languages which have been developed to address this very need. Visual programming languages are a distinct set of tools that allow users to connect \"nodes\" with pre-defined functionalities, meaning that the user does not need an intimate knowledge of programming languages such as Python or C#.