Crowd Optimization

The research falls within the domain of heuristic multi-user driven design. It explores the shift from the utilization of automated systems for the evaluation of design optimization problems to a user-based approach. Users are asked to collaborate in solving a design problem relying on their intuition and experience to guide the solution to convergence. This regulated expansion in the designers’ circle is conducted through the development and deployment of a specialized digital interface. Additionally, the research aims to compare this type of human-based optimization with its automated counterparts while creating a novel scientific multi-player gaming environment where the generated data is extracted and put towards problem solving.

Three trajectories are proposed, all with the potential of being geared towards either a pure participatory design direction, educational intuition development direction or a combination of both. The finite element solver implementation was based on the FEA routine in Sigmund’s 99 line Matlab optimization code. The routine was ported from Matlab into javascript allowing the solver to run in the browser directly. Both the math.js library as well as the numeric.js library were utilized. As all the elements are identical, they share the same element stiffness matrix. The global stiffness matrix is then assembled based on the boundary and load conditions applied. The solver solves for the discplacement vector and allows for the visualization of the deformed structure. Both strain and stress fields are calculated in post-solver routines. Due to relatively long processing times, a 7x7 element domain was used to test the prototype with a solving time of around 4 seconds. Multiple canvases were used to display different solver outputs. Based on the user's selection, specific canvases are drawn while others on top are cleared. This allows for displaying stress fields, discplacement fields, density distributions, deformed meshes and boundary conditions. Two extra canvases indicate the winner and block/allow users in the turn-based game implementation. Left and right mouse clicks allow for adding and deleting material densities respectively. Holding down the ctrl button allows for incremental adjustments. Client-server implementation is responsible for propagating changes in the material density matrix and overall user score. It also allows users to play as others run out of clicks and are then blocked.

The scoring function is an attempt to guage how good or bad a solution is when dealing with multi-objective optimization. Two different functions were implemented for that purpose. They both compare the structure’s compliance with the percentage of utilized material. The first is only concerned with the user’s last known contribution to each element. A solution surface is thus created for each user and the compliance calculated with the values that lie on that surface. A user with a lower compliance value relative to that specific material density wins the game. The second is a linear function of both compliance and material density. It compares the current solution with the previous one to guage how well the user is preforming on a turn-by-turn basis. Areas in red (score of around 5) are theoretically impossible to attain as removing material is unlikely to cause a drop in compliance. Area in blue (score of around -5) is also impossible as adding material is unlikely to increase compliance. Most scores fell within the -3 to 3 range. A user gets a score of zero if material has been removed and compliance increases - which is bound to happen regardless.