automatik is a computer program which allows automatic adjustment of antenna geometries to optimize the radiation pattern and/or standing wave ratio (SWR). It requires another program (such as NEC2) to calculate the radiation patterns and feed impedances. Out of the box, the NEC2 input and output formats are supported, but this can be easily extended for any other electromagnetic field calculation program with text-based input and output.

Optimization is performed using an estimation of distribution algorithm (EDA), which is an evolutionary algorithm (EA).

In order to support calculation with insulated wires, a preprocessor for the NEC2 input files is included, which modifies the radius in the GW cards and adds inductance to the wires (using LD cards) according to an IS card provided in the input file. Only lossless dielectric sheaths are supported. Calculation is based on Alexander Yurkov's (RA9MB) equation as described here. An original publication seems to be available here.



  • 2022-01-25: Version 1.5.2
    • Modified nec-wrapper to continue on error (ensuring proper output filename in case of error)
    • Ignore dielectric materials with relative permittivity only when (strictly) smaller than 1.1 (instead of smaller than or equal to 1.1)
  • 2022-01-25: Version 1.5.1
    • Ignore dielectric materials with relative permittivity equal to or smaller than 1.1 to avoid bad approximation
  • 2022-01-24: Version 1.5.0
    • Preprocessor for NEC2 input files to support dielectric isolation
    • New fitness/omnidirectional-swr50.lua script for omnidirectional (360°) antennas
    • Improved installation instructions
  • 2021-05-12: Version 1.4.2
    • Improvements to the optimization algorithm
      • Different proceeding if random values are out of bounds (affects beginning of optimization, especially for higher-dimensional problems)
      • Handling of some corner cases
  • 2020-05-30: Version 1.4.1
    • Optional parameter to fitness/worstgain-swr50.lua script to only consider almost-horizontal directions
    • Added helper script which can normalize gain to fit lossless behavior (to compensate errors in NEC2 calculation)
  • 2019-09-18: Version 1.4
    • New fitness script fitness/variable.lua
      • Configuration of fitness function though special variables in template file
      • Support for circular polarization (RHCP and LHCP)
      • Optional trade-off between SWR optimization and common-mode attenuation through low-impedance feed (commonmode_penalty)
    • Fixed error in README file
    • Minor fix in README file
  • 2019-04-19: Version 1.3.1
    • Improved README file
  • 2019-04-09: Version 1.3
    • Use weighted average and covariances based on fitness when creating new candidate
    • Termination of optimization (when further improvements are impossible or extremely unlikely)
    • Added two more fitness scripts
    • Improved README file and example template
    • Improved error output on broken template files
    • Added machine-readable comments to fitness scripts (for other software which uses "automatik")
  • 2019-04-06: Version 1.2
    • Improved README file and example template
    • Added different fitness evaluation scripts, which now also allow optimization for gain only or for SWR only
    • Bugfix in fitness evaluation script regarding back lobe penalty; new version drastically reduces back and side lobes
  • 2019-04-05: Version 1.1
    • Improved README file
    • Slightly better performance when using a small number of parallel calculations (avoiding recalculation of averages and covariances when population has not changed)
  • 2019-04-04: Initial release of version 1.0