GESO (Genetic Evolutionary Structural Optimization) is a hybrid algorithm that combines evolutionary structural optimization with genetic algorithm concepts. Unlike BESO which uses sensitivity-based element removal/addition, GESO employs binary encoding of design variables and genetic operators (crossover, mutation) to explore the design space.
This tutorial solves the same HalfMBB beam problem as the BESO tutorial, but using the GESO algorithm. GESO is particularly useful when dealing with discrete design variables and can escape local minima through its stochastic search strategy.
Precompiling packages...
2384.4 ms ✓ QuartoNotebookWorkerTablesExt (serial)
1 dependency successfully precompiled in 3 seconds
Precompiling packages...
1230.6 ms ✓ QuartoNotebookWorkerJSONExt (serial)
1 dependency successfully precompiled in 2 seconds
Precompiling packages...
1193.9 ms ✓ QuartoNotebookWorkerJSON3Ext (serial)
1 dependency successfully precompiled in 1 seconds
Precompiling packages...
1122.7 ms ✓ QuartoNotebookWorkerLaTeXStringsExt (serial)
1 dependency successfully precompiled in 1 seconds
Precompiling packages...
6643.3 ms ✓ QuartoNotebookWorkerMakieExt (serial)
1 dependency successfully precompiled in 7 seconds
display_app (generic function with 1 method)
WGLMakie.activate!(; resize_to=:parent) selects the browser renderer and fills the Quarto output column. Bonito.Page(exportable=true, offline=true) embeds the assets needed by visualize(...; static=true) in the Quarto output, so the visualization does not require a running Julia process.
Define the problem
We use the same 2D HalfMBB benchmark with 160×40 elements:
E =1.0# Young's modulus (normalized)v =0.3# Poisson's ratiof =1.0# downward force magnitudenels = (160, 40) # 160 elements in x, 40 in yproblem =HalfMBB(nels, (1.0, 1.0), E, v, f)
TopOpt half MBB problem
Define the FEA solver and apply material penalization
The FEA solver uses power-law penalization to drive toward 0/1 designs: