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.
Setup
Load the TopOpt package:
usingTopOpt
Precompiling packages...
2369.3 ms ✓ QuartoNotebookWorkerTablesExt (serial)
1 dependency successfully precompiled in 2 seconds
Precompiling packages...
1169.9 ms ✓ QuartoNotebookWorkerJSONExt (serial)
1 dependency successfully precompiled in 1 seconds
Precompiling packages...
1143.3 ms ✓ QuartoNotebookWorkerJSON3Ext (serial)
1 dependency successfully precompiled in 1 seconds
Precompiling packages...
1086.8 ms ✓ QuartoNotebookWorkerLaTeXStringsExt (serial)
1 dependency successfully precompiled in 1 seconds
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(Val{:Linear}, 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: