The finite-element solver is the part of the loop that decides whether a proposed design is any good. It takes a candidate frame and works out how it actually behaves: it assembles the element stiffnesses into a global stiffness matrix, applies the supports as boundary conditions, solves for the joint displacements under load, and recovers the member forces and stresses from that solution. Nothing about the design is taken on faith; the structure's own equations settle it.

Assemble, constrain, solve, recover. The chain was checked against Abaqus before any candidate was trusted to it.

That is why the solver is the anchor of the whole search. An optimiser is only as trustworthy as the judge it optimises against, and a judge that is subtly wrong will happily certify a frame that would not stand. So the solver was validated against Abaqus, a commercial finite-element package: the same problems solved two ways and the numbers made to agree, before a single candidate was trusted to the search.

Every design the optimiser proposes is then checked against that independent physics, not against a rule of thumb or a human's stopping point. The search can be as clever as it likes; it still has to answer to the solver.