### Request project files for this example by clicking here.

This example uses a plugin from XFdtd’s XTend Library to perform a Particle Swarm Optimization (PSO) of a rectangular patch antenna. The patch antenna was chosen as a simple example to demonstrate the effectiveness of the PSO plugin. The algorithm is set to optimize performance from 3 GHz to 3.2 GHz.

PSO is a global optimization technique inspired by swarm behavior found naturally in schools of fish, flocks of birds, and swarms of insects. A number of particles comprising a swarm are distributed throughout the N-dimensional solution space. An evolutionary process ensues where each particle evaluates the fitness of its current location and moves on to a new location based on the best result seen by that particular particle and the best result seen by the overall swarm. Over a number of generations, the solution space is explored and an optimal solution is reached.

The fitness function for this particular optimization simply evaluates the linear return loss of the antenna over the band of interest and sets the fitness level to be the worst return loss encountered. One advantage of this approach is that the minimum in-band performance is known at every generation. The user can monitor the current fitness value and terminate if a desired target level is reached.

This study incorporates three variables as detailed in Figure 1. These parameters are permitted to vary according to Table 1. Notice that the feed offset, x, is dependent on the length, L, of the patch. A dynamic constraint system ensures that x is never permitted to exceed half of the current value of L as the optimization progresses. A 3 mm thick dielectric with a relative permittivity of 2.2 was used for the substrate, and the finite ground plane covered the entire bottom face of the substrate.

XStream, XFdtd’s CUDA-accelerated implementation of FDTD, is pivotal in the timely execution of the PSO. Each particle generates a new XF simulation for each successive generation. These simulations are distributed across the available CUDA-capable GPUs in the system. The particular system used here contains six NVIDIA Tesla C2070s. The PSO assigns one simulation to each GPU, permitting six simulations to be solved simultaneously. To maximize the utility of the GPUs, the number of particles is chosen to be an integer multiple of the number of GPUs. Twelve particles and 200 generations were chosen for this optimization.

The twelve simulations of each generation completed in an averaged total time of 36 seconds. The convergence of the swarm on the optimal solution can be seen in Figure 2. In this particular instance, the fitness level drops to about 0.5 by the twelfth generation. The fitness value represents the worst-case linear return loss, so we could terminate the optimizer at that point if our true goal is simply an antenna with no worse than -6 dB return loss over our band of interest. Terminating the process at this point would yield an acceptable antenna after about 16.5 minutes.

Figure 3 demonstrates the progression of the optimization by examining the return loss achieved at several milestone points including the final optimal solution. The parameters of this solution are listed in Table 2.