For large antennas with thin structures, the typical solver is "Method of Moments". NEC2 was developed by the government and is public domain. It is quite popular, and does some things well but it is also easy to stumble into modeling bugs/deficiencies, and isn't much use above high UHF. But is very useful if you know how not to step in the bugs, and is free. NEC4 falls under ITAR, the last I heard. So it isn't particularly hard to get a license, but you have to clear ITAR.
Microwave structures are more often done with a finite-element model, as I understand it.
Both rely on numerical approximations to Maxwell's equations. At least for MoM, each element cheats the boundary conditions a bit in order to make the problem tractable. With a fine enough grid, you get a good enough answer.
Another friend that has started two antenna companies is an NEC4 guru. I asked him: "How can I tell if my model has a small enough grid?" Him: "Keep reducing the mesh until the answer stops changing. When it stops, you had enough elements in the previous try." Antenna modelling is a bit of an art, I'm not expert, just hack a few as a hobby.
Sounds like there's some manual steps to create the simulation. I'm wondering how these genetic algorithms can automatically feed into the simulation and get back a single number to drive the GA fitness function.
Well, I used a Yagi optimizer at one point. With that system, the antenna was parameterized. I specified certain fixed values, like overall boom length and nominal element diameter, and total number of elements. The element lengths and spacings were free for optimization. Fitness function was a scoring of front-to-back ratio, front-to-side ratio, and max allowable SWR over a frequency range of interest, with a goal of maximum forward gain. The optimizer tuned the free variables.
For different applications the various scoring measurements would be adjusted differently. (Sometimes you care greatly about minimizing back and side lobes, other times not so much, for instance.)
That's the exact same trick you use to determine model granularity when using finite element analysis for construction purposes. It is actually quite surprising how coarse models can be and still give useful answers.