NAME
optimise - Yagi-Uda project antenna optimiser
SYNOPSIS
optimise [ -dhvwO ] [ -aangular_stepsize ] [ -bboom_extension ] [
-ccleanliness_of_pattern ] [ -eelements ] [ -fFBratio ] [
-gGA_optimisation_method ] -lpercent ] [ -mmin_offset_from_peak ] [
-ooptimisation_criteria ] [ -ppopulation ] [ -rresistance ] [ -sswr ] [
-tlength_tolerance ] [ -xreactance ] [ -AAuto_gain ] [
-CCurrents_similar ] [ -Fweight_FB ] [ -Gweight_gain ] [
-Kkeep_for_tries ] [ -Pweight_pattern_cleanliness ] [
-Rweight_resistance ] [ -Sweight_swr ] [ -Tposition_tolerance ] [
-WWeighted_algorithm ] [ -Xweight_reactance [ -ZZo ] filename
iterations
DESCRIPTION
The program optimise is one of a number of executable programs that
forms part of a set of programs, collectively known as the Yagi-Uda
project , which were designed for analysis and optimisation of Yagi-Uda
antennas. optimise attempts to optimise the performance of a Yagi
antenna for one or more parameters that are considered important, such
as gain, F/B ratio, VSWR etc. It does this by randomly changing the
lengths and positions, of one or more elements, then comparing the
performance before and after the change. Any improvements are written
to a new file called filename.bes where filename is the name of the
antenna description file created by input or first
When Yagi’s are designed on paper, or using this program, its possible
that they will be almost impossible to build, if their performance
depends too critically on the dimensions. To determine if this is the
case with a design, we run optimise with just the options ’t’ and ’T’.
These specify the tolerance with which you can build the antenna,
expressed as a standard deviation in mm. In this case, instead of
trying to optimise a poor design, optimise will calculate the minimum
gain, maximum VSWR, and minimum FB ratio of a number of designs, all
slightly different from the input file. 99.7% of the components lie
within 3 SD of the mean, so if you think you can cut elements to with 1
mm 99.7% of the time, specify t0.33. If you can put them in the boom to
within 3 mm 99.7% of the time, specify T1.
If while optimise is running using the methods that require weights to
be attached to the gain, FB, SWR etc, it becomes apparent, the weights
are not optimum, its possible to pause the program and re-adjust the
weights. If a file with the name of changes is created, the program
will pause, then request new weights are entered at the keyboard.
AVAILABILITY
OPTIONS
-d Print the default values of all the configureable parameters to
stdout. Typing this option with any option that changes a
parameter (see below) will display the new value of the
parameter, rather than the default.
-h Print a help message.
-v Print verbose status information.
-w Instead of optimising at one fixed frequency (the design
frequency), this directs the program to optimise at 3 separate
frequencies (lowest, design and highest) then to average data at
all 3. This option is better for wideband antenna. Note that the
input impedance printed is at the design frequency, *not*
averaged over 3 frequencies. Averaging an impedance, is likely
to give a very misleading impression. The impedance averaged
over 3 frequencies can be 50+i0 Ohms, even if the VSWR is very
poor over all 3 frequencies, as the following 3 pieces of data
show.
Z=147 + j 300 SWR= 15.46:1
Z=2 + j 100 SWR= 125:1
Z=1 - j 400 SWR= 3250:1
note in the above three cases, the average impedance is 50 + j
0, but average SWR is 1130:1.
-O Over-optimisation allowed. By default, the program does not
over-optimise a parameter. For example, an SWR of 1.01 is
usually considered good enough and any change, as long as the
SWR stayed good, typically below 1.1:1, would be allowed, even
if the SWR rose. By default, FB’s of 27 dB, VSWR’s of 1.1 are
acceptable. However, by using the -O option, you can insist the
program always improves things, no matter how good they are.
-aAngular_stepsize
When optimimising by trying to get a clean pattern,
specifies the step size to use when looking for features
in the pattern. If its set too small, the program runs
slow. If its set too large, the program may miss features
in the pattern, such as a sidelobe. Then the resulting
antenna will have poor sidelobe performance, even though
you think it will be good. The program attempts to
calculate a sensible value, based on 1/10th the
approximate 3 dB beamwidth, if you don’t set.
-bboom_extension
Generally speaking, the gain of a Yagi increases with
boom length. Hence the optimiser would often give you a
Yagi with a much longer boom than the input file. This
may not be what you desire due to space restrictions.
These long antennas often have high gain, but are very
narrow in bandwidth. The default limits the antenna to
10x the original length, which means effectively there is
no boom length limitation. You can adjust the percentage
by setting boom_extension to whatever you wish. -b30
will limit the boom to no more than 30% more than the
original length.
-ccleanliness_of_pattern
Specify the number of dB down on the peak gain to aim to
get the pattern. Any antenna pattern cleaner than this
will not effect the fitness, nor will it be considered
any better when comparing to antenna designs. 20 dB seems
reasonable, so the default is 20, but this may of course
change if it’s deceided too. Check the source code to be
certain (see REASONABLE_SIDELOBE in yagi.h).
-eelements
is an integer which specifies the type of elements that
are changed in the optimisation cycle. Possible values
are:
1 - alter only the driven element(s) length (useful to
bring to resonance)
2 - alter only the driven element position. Don’t change
its length.
4 - alter only the reflector length. The position is
always at x=0.
8 - alter only the director lengths. Don’t change
positions.
16 - alter only the director positions. Don’t change
lengths.
32 - randomly adjust one element length, then makes all
other the same. Don’t change the positions.
64 - apply a linear taper to the lengths.
128 - Set the driven element to a resonate length. It
may/may-not be altered after the first run, depending on
the whether or not ’1’ is invoked too. Eg -e128 will
make it resonate and keep it there forever. However
’-e129’ will bring to resonance, then alter to maximuse
performance.
The elements altered is made from a logical AND of the
above, so for example to alter everything, except the
driven element length, use -e30, since 2+4+8+16=30. The
default is equivalent to -e31 , which changes everything
possible. Note the reflector position is *never* changed.
It’s always at x=0.
-fFBratio
When optimising an antenna, consider any FB ratio
greater than FBratio dB to be equal to FBratio dB.
This avoids optimising to a very high FB ratio,
which is impracticable, as the bandwidth over
which this FB ratio will be maintained is very
small and mechanical considerations will prevent
you from constructing it with such a high FB ratio
anyway. If this was not prevented, you might just
happen to get an antenna with 100 dB FB ratio, but
poor gain and swr. Since by default all parameters
must improve, the optimisation routine will most
likely never being able to improve on the 100 dB
FB ratio, so no improvement will result. Most
people would prefer to get a few extra dB of gain,
even if the FB ratio dropped to 30 dB.
-gGA_optimisation_method
Use a genetic algorithm. With the genetic
algorithm, the program does not take any account
any of the initial lengths/positions of elements
specified in the input file. Rather it works by
initialising a number of different antenna, then
computing a ’fitness’ value for each. The fitness
value can depend on the gain, FB, real part of the
input impedance, reactive part of the input
impedance, VSWR or the level of the sidelobes. The
integer after the g tells the optimiser what to
consider. -g1 Use gain
-g2 Use FB
-g4 Use R
-g8 Use X
-g16 Use the SWR
-g32 Use the level of the sidelobes.
You can use a logical AND of these, so for example
-g49 will use a genetic algorithm, optimising for
gain, swr and sidelobe level, since
1(gain)+16(SWR)+32(sidelobe level)=49.
-lpercent
is a parameter (floating point number) which
specifies the maximum percentage change in the
positions or lengths of an elements at each
iteration. If the option is not used, it will be
set internally at 10% for the first 25% of the
iterations, 1% for the next 25%, 0.1% for the
third 25% of the iterations and 0.01% for the last
25% of the iterations. If set to a positive number
x (eg optimise -l 0.3 145e10) then the percentage
will be set at x% for 25% of iterations, x/10 for
the next 25%, x/100 for the next 25 and x/1000
for the last 25%. If set to a negative number y
(eg optimise -l -0.5 145e10) then the paramters
will stay fixed at y% (in this example 0.5%) all
the time.
-mmin_offset-from_peak
Sets the minimum angle in degrees offset from
theta=90 degrees, where the side lobes start and
the main lobe finishes. The higher the gain, the
smaller it should be. It is set internally if not
set on the command line.
-ooptimisation_criteria
1 - Assume better if the gain has increased.
2 - Assume better if the front to back ratio has
improved.
4 - Assume better if the real part of the input
impedance is closer to the value that the program
was compiled for, or set using the ’-Z’ option.
This will usually be 50 Ohms, but you may wish to
set this to 12.5 Ohms if you use a 4:1 balun.
Generally you can get higher gain from a Yagi if
you allow the input impedance to fall, but of
course feeding it becomes more difficult.
8 - Assume better if the magnitude of the
reactive component of the input impedance is
lower (ie. the antenna is nearer resonance).
16 - Assume better if the VSWR is lower.
32 - Assume better if the level of all sidelobes
is lower.
The optimisation_criteria may be formed from a
logical AND of these numbers, so for example
choosing -o19 will only consider a revised antenna
better than the previous, if the SWR, gain and F/B
ratio have all simultaneously improved.
Clearly an antenna which originally had 12 dB gain
and 1.01:1 VSWR but then changes to 20 dB gain @
1.02:1 VSWR, would to most people be better, even
though the VSWR has increased. By default,
optimise only optimises to sensible maximums, so
to not let the optimisation stall prematurely. By
running optimise with no arguments, the program
will list the limits of acceptability. These
might be typically F/B ratio > 27 dB, VSWR <
1.1:1, magnitude of input reactance less than 5
Ohms and the real part of the input impedance
within 5 Ohms of Zo. Choosing -o19 (1+2+16=19)
will optimise for gain (since G=1), FB (since
FB=2) and SWR (Since SWR=16), but would consider a
higher gain and FB ratio antenna better than a
previous one, even if the SWR rose, as long as it
stayed below 1.1:1 (or as was set during
compilation). The default behaviour (no options)
is equivalent to -o37 which optimiseas for
gain(1), the real part of the input impedance(4)
and sidelobes(32) but this may be changed at any
time, so type optimise -d to check the current
settings. If you insist on the program optimisang
for the very best of all selected parameters, use
the -O option too, but be warned the optimisation
will probely stick once it gets one parameter
really good.
-ppopulation
This determines the initial population used with
the genetic algorithm.
-rresistance
When optimising an antenna, consider any input
resistance closer to Zo (usually 50 Ohms) than
resistance Ohms to be acceptable. This avoids
optimising to an input resistance too close to Zo,
which is impracticable, as the bandwidth over
which the input resistance could be maintained is
very small and mechanical considerations will
prevent you from constructing the antenna with
such an ideal input resistance. If this was not
prevented, you might just happen to get an antenna
with an input resistance of 50.000001 Ohms, but
poor gain, FB and possibly even a poor swr, if the
antenna is well away from resonance. Since by
default all parameters must improve, the
optimisation routine will get most likely never
being able to improve on the antenna, whereas we
might be happier with a few more dB gain, if the
input resistance went to 50.1 Ohms. It should be
noted that the default optimisation routine never
uses the input resistance directly (only VSWR), so
this option cant be used without the ’-o’ option
to optimise for other than the default parameters
(gain, VSWR and FB ratio).
-sswr When optimising an antenna, consider any SWR less
than swr to be equal to swr This avoids optimising
to a very low swr, which is impracticable, as the
bandwidth over which such a low swr could be
maintained would be very small and mechanical
considerations will prevent you from constructing
such an antenna anyway. If this is was not
prevented, you might just happen to get an antenna
with an swr of 1.000000000001:1, but poor gain, FB
ratio. Since by default all parameters must
improve, the optimisation routine will most likely
never being able to improve on the antenna, even
though in practice you would like to get a few
extra dB of gain if the SWR would rise to 1.02:1.
The default was equivalent to -s1.1 but run
optimise -d to display this and any other
defaults.
-tlength_tolerance
length_tolerance is the standard deviation in mm
of the accuracy with which you can cut elements.
Since 99.7% of elements will be with 3 standard
deviations of the mean length (stats theory says
this), set -t0.2 if virtually all (well 99.7%) of
elements are within 3x0.2=0.6 mm of the correct
length. This option *must* be used with the ’-T’
option and can’t be used with any other options
apart from ’-Z’, ’-v’ and ’-d’.
-xreactance
When optimising an antenna, consider any input
reactance of less than reactance to be reactance.
This avoids over optimising the reactance, at the
expense of something else.
-Aauto_gain
When the auto_gain option is used. the program
maximes the gain of the antenna (ignoring all
other parameters such as SWR, FB ratio etc) by
adjusting the length (not position) of one element
only. -A-1 will maximuse the gain, by adjusting
the length of the reflector, -A0 will maximise the
gain by adjusting the length of the driven
element. Its generally *not* a good idea to
maximise the gain by adjusting the driven element,
but the program lets you do it, but using the
option -A0. Using -A1 will maximise gain by
adjusting the length of the first director, -A2
the second director and so on, up to the last
director. You must check carefully that the input
impedance in particular does not fall to silly
values if you use this option. On a yagi with many
elements (> 10 or so), you can pretty safely
maximise the 8th or more director, but doing it on
the reflector, driven element or early directors
often leads to silly input impedances - so beware!
Note, no matter how many iterations you specify,
this process is only done once.Its unlikely you
will be able to do it again, without things going
out of hand, but if you must do it, you must re-
run ’optimise’ again.
-Ccurrents_similar
If this option is used, where currents_similar is
an integer, the program looks to make the currents
in the last currents_similar elements as similar
as possible. It computes the sum of the squares of
the deviations of the absolute values of the
element currents from the mean. If this falls, and
the criteria specified with the -W option is also
satisfied, the antenna is considered better. If
currents_similar is three less than the number of
directors, it tries to make the currents in the
the directors (but ignoringing the first 3) all
similar. If currents_similar is equal to the
number of directors, it tries to make all the
directors have similar currents. If
currents_similar is one more than the number of
directors, it tries to make all the directors and
the reflector have similar currents. If
currents_similar is equal to the total number of
elements, then it fails with an error message.
-Fweight_FB
is the floating point number (default 1.0)
specifying the weight to attach to the FB ratio of
the antenna when using the ’-W’ option, which
calculates a fitness for the antenna based on one
or more parameters (FB, gain, input resistance,
input reactance, SWR, cleanliness of antenna
pattern). The ’-F’ option is similar to the
options -G, -P, -R, -S, -X (which specify weights
for gain, pattern cleanliness, input resistance,
SWR and input reactance). When using the -W
option the exact algorithm used to compute the
fitness (and hence the effect of this parameter)
is best checked by looking at the source code (see
perform.c). This is one area of constant program
improvement/changes/development, so its difficult
to say exactly the effect the parameter has.
However, increasing the weight of a parameter
(using the -F, -G, -R, -S or -X options) will make
the associated parameter have a greater effect on
the fitness. However, unless you optimise for a
high FB ratio with the -W option, then setting the
-F option will have no effect. For example,
setting the options -F2.5 -W1 is a complete waste
of time. There you have used the -W1 option to
optimise only for gain (see -W option section of
man page) but have changed the weight of the FB
ratio from its default 1.0 to 2.5. If you are not
optimising for FB ratio, the weight you attach to
it is irrelavent.
-Gweight_gain
is the floating point number (default 1.0)
specifying the weight to attach to the gain of the
antenna when using the ’-W’ option, which
calculates a fitness for the antenna based on one
or more parameters (FB, gain, input resistance,
input reactance, SWR, cleanliness of antenna
pattern). The ’-G’ option is similar to the
options -F, -P, -R, -S, -X (which specify weights
for FB ratio, pattern cleanliness, input
resistance, SWR and input reactance). When using
the -W option the exact algorithm used to compute
the fitness (and hence the effect of this
parameter) is best checked by looking at the
source code (see perform.c). This is one area of
constant program improvement/changes/development,
so its difficult to say exactly the effect the
parameter has. However, increasing the weight of a
parameter (using the -F, -G, -R, -S or -X options)
will make the associated parameter have a greater
effect on the fitness. However, unless you
optimise for gain with the -W option, then setting
the -G option will have no effect. For example,
setting the options -G2.5 -W2 is a complete waste
of time. There you have used the -W2 option to
optimise only for FB ratio (see -W option section
of man page) but have changed the weight of the
gain from its default 1.0 to 2.5. If you are not
optimising for gain, the weight you attach to it
is irrelavent.
-Kkeep_for_tries
keep_for_tries is the number of tries for the
optimise to persist using the original data file
as the starting point for optimisation. By default
it is 1, which means the program immediately looks
from a new position once a better one is found. It
is theeoretically possible that this might result
in a quick, but poor local maximum. If however,
keep_for_tries is 1000, it will stay at a position
for 1000 iterations after finding the last best
result, before considering this to be a global
optimum. Then it starts for the new position. In
practice, I have found this option to make matters
worst in most cases. It was added to avoid the
local-minimum problem, but it appears the
optimisation surface is pretty smooth, so it just
slows the program, without gaining much. Anyway,
it can stay as an option, but check the results
with/without carefully before using extensively.
-Ppattern_cleanlyiness
is the floating point number (default 1.0)
specifying the weight to attach to the cleanness
of the antenna pattern when using the ’-W’ option,
which calculates a fitness for the antenna based
on one or more parameters (FB, gain, input
resistance, input reactance, SWR, cleanliness of
antenna pattern). The ’-P’ option is similar to
the options -F, -G, -R, -S, -X (which specify
weights for FB ratio, gain, input resistance, SWR
and input reactance). When using the -W option
the exact algorithm used to compute the fitness
(and hence the effect of this parameter) is best
checked by looking at the source code (see
perform.c). This is one area of constant program
improvement/changes/development, so its difficult
to say exactly the effect the parameter has.
However, increasing the weight of a parameter
(using the -F, -G, -R, -S or -X options) will make
the associated parameter have a greater effect on
the fitness. However, unless you optimise for a
clean antenna pattern with the -W option, then
setting the -P option will have no effect. For
example, setting the options -P2.5 -W1 is a
complete waste of time. There you have used the
-W1 option to optimise only for gain (see -W
option section of man page) but have changed the
weight of the pattern cleanliness from its default
1.0 to 2.5. If you are not optimising for a clean
radiation pattern, the weight you attach to it is
irrelavent. With appropiate use of the -W option
(eg -W49 for gain, SWR and a clean pattern), the
computer program finds the level of the most
significant sidelobe, wherever it may be outside
the main bean. It then optimises to reduce this.
The -P option tells it how much weight to put on
reducing this sidelobe.
-Rweight_resistance
is the floating point number (default 1.0)
specifying the weight to attach to the obtaining
an input resistance close to Zo on the antenna
when using the ’-W’ option, which calculates a
fitness for the antenna based on one or more
parameters (FB, gain, input resistance, input
reactance, SWR, cleanliness of antenna pattern).
The ’-R’ option is similar to the options -F, -G,
-P, -S, -X (which specify weights for FB, gain,
pattern cleanliness, SWR and input reactance).
When using the -W option the exact algorithm used
to compute the fitness (and hence the effect of
this parameter) is best checked by looking at the
source code (see perform.c). This is one area of
constant program improvement/changes/development,
so its difficult to say exactly the effect the
parameter has. However, increasing the weight of a
parameter (using the -F, -G, -R, -S or -X options)
will make the associated parameter have a greater
effect on the fitness. However, unless you
optimise for an an input resistance close to Zo,
with the -W option, then setting the -R option
will have no effect. For example, setting the
options -R2.5 -W1 is a complete waste of time.
There you have used the -W1 option to optimise
only for gain (see -W option section of man page)
but have changed the weight of the resistance from
its default 1.0 to 2.5. If you are not optimising
for an input resistance close to Zo, the weight
you attach to it is irrelavent.
-Sweight_swr
is the floating point number (default 1.0)
specifying the weight to attach to the SWR of the
antenna when using the ’-W’ option, which
calculates a fitness for the antenna based on one
or more parameters (FB, gain, input resistance,
input reactance, SWR, cleanliness of antenna
pattern). The ’-S’ option is similar to the
options -F, -G, -P, -R, -X (which specify weights
for FB, gain, pattern cleanliness, input
resistance and input reactance). When using the
-W option the exact algorithm used to compute the
fitness (and hence the effect of this parameter)
is best checked by looking at the source code (see
perform.c). This is one area of constant program
improvement/changes/development, so its difficult
to say exactly the effect the parameter has.
However, increasing the weight of a parameter
(using the -F, -G, -R, -S or -X options) will make
the associated parameter have a greater effect on
the fitness. However, unless you optimise for SWR
with the -W option, then setting the -S option
will have no effect. For example, setting the
options -S2.5 -W1 is a complete waste of time.
There you have used the -W1 option to optimise
only for gain (see -W option section of man page)
but have changed the weight of the SWR from its
default 1.0 to 2.5. If you are not optimising for
SWR, the weight you attach to it is irrelavent.
-Tposition_tolerance
position_tolerance is the standard deviation in mm
of the accuracy with which you can cut elements.
Since 99.7% of elements will be with 3 standard
deviations of the correct position (stats theory
says this), set -T2 if virtually all (well 99.7%)
of elements are within 3x2=6 mm of the correct
position.This option *must* be used with the ’-t’
option and can’t be used with any other options
apart from ’-Z’, ’-v’ and ’-d’.
-WWeighted_algorithm
Try to get an antenna which is better according to
a weighted combination of parameters, rather than
require them all to improve. The integer specifies
what to consider in the weighted parameters.
W1 Gain.
W2 FB
W4 R
W8 X
W16 SWR
W32 SIDE_LOBE
You can logically AND these together, so for
example -W3 will optimise using a weighted
combination of gain and FB. -W49, will use a
weighted combination of gain, swr and sidelobe
leve, since 32+16+1=49.
-Xweight_reactance
is the floating point number (default 1.0)
specifying the weight to attach to achieving a low
input reactance on the antenna when using the ’-W’
option, which calculates a fitness for the antenna
based on one or more parameters (FB, gain, input
resistance, input reactance, SWR, cleanliness of
antenna pattern). The ’-X’ option is similar to
the options -F, G, -P, -R and -S (which specify
weights for FB ratio, gain, pattern cleanliness,
input resistance, and SWR). When using the -W
option the exact algorithm used to compute the
fitness (and hence the effect of this parameter)
is best checked by looking at the source code (see
perform.c). This is one area of constant program
improvement/changes/development, so its difficult
to say exactly the effect the parameter has.
However, increasing the weight of a parameter
(using the -F, -G, -R, -S or -X options) will make
the associated parameter have a greater effect on
the fitness. However, unless you optimise for a
low input reactance with the -W option, then
setting the -X option will have no effect. For
example, setting the options -X2.5 -W1 is a
complete waste of time. There you have used the
-W1 option to optimise only for gain (see -W
option section of man page) but have changed the
weight of the reactiance from its default 1.0 to
2.5. If you are not optimising for a low input
reactance, the weight you attach to it is
irrelavent.
-ZZo
Zo is the characteristic impedance used when
evaluating the VSWR, reflection coefficient and
other similar calculations. The optimiser usually
tries to bring the input impedance of the antenna
to this value. It is set by default to 50 Ohms, so
the default is equivalent to -Z50 but may be set
to any positive number. Set to 12.5 Ohms if you
are going to feed the antenna with a 4:1 balun.
Generally speaking, the gain of a Yagi can be
higher for low input impedances, but of course
such antennas are more difficult to feed.
filename
This is the name of the file containing the
antenna description. It is expected to be in a
format created by either input or first - two
other programs in the Yagi-Uda project. This is
an ASCII text file.
iterations
is an integer specifying the number of iterations
for the optimiser to perform to try to get the
best antenna. Time will limit the number you
choose. 1000 iterations of a 1ele yagi takes about
5 seconds, a 6ele approximately 60 seconds, an 11
element 350 seconds, a 20 element 1030 seconds, a
33ele 2440 seconds, a 50element 5400 seconds,
100ele 21320 seconds all on an old 25MHz 486 PC
with no external cache. When using the -A option
the iterations is automatically set internally so
only one attempt is made. When using the ’-t’ and
’-T’ options, iterations specifies the number of
iterations to attempt to get a poorer design, to
check the sensitivity of the design to small
manufacturing tolerances.
EXAMPLES
Here are a number of examples of using optimise.
1) optimise 5ele 1000
Here the file 5ele will be optimised using the default
system for 1000 iterations. The default might typically
require gain, FB and SWR to all improve, but this may be
changed at any time. In any case, the program tells you
what its optimising for. By default the program will only
optimise to the selected parameters are good, not over-
optimising any one at the detrement of the others.
2) optimise -b30 -f50 -s2 5ele 1000
This is similar to above, but the boom can not extend by
more than 30% from its original length, FB ratios above
50 dB are considered acceptable, as are SWR’s less than
2:1. The optimised resultant antenna is likely to have
better FB ratio, but poorer SWR than in (1) above.
3) optimise -o1 5ele 1000
This will simply optimise 5ele for maximum forward gain.
The resultant antenna may have a poor FB ratio and is
likely to have an unacceptably low input impedance and
hence high VSWR. This is not a very sensible method of
optimisation.
4) optimise -W49 -l7 5ele 10000
This will optimise the file 5ele using for 10000
iterations. It will require that the weighted performance
of the antenna in three important parameters (gain,
sidelobe level and SWR) improves from one design to the
next. One or two parameters can actually get worst from
one design to the next, but the weighted performance is
better. The positions of the elements or lengths of
elements will not change by more than 7% in each
iteration.
5) optimise -g -S30 -G50 -F20 -p1500 5ele 10000
This will optimise the file 5ele using a genetic
algorithm. 1500 antennas will be randomly designed. The
performance of each of these will measured using a
’fitness’ function, weighted 30% to SWR, 50% to gain and
20% to FB ratio. The probability of breading from a pair
of antennas is proportional to the fitness function.
6) optimise -w atv_antenna 10000
This will optimise the file atv_antenna for a best
average performance over a wide band. The progrram
calculates the gain, FB and SWR at three frequencies,
then computes an average (mean) performance of the
antenna over the band. N iterations will take 3x as long
to execute as N iterations on the same antenna without
the ’-w’ option.
7) optimise -t0.1 -T1 good_design 100
This will take the file good_design and make 100
different antennas from it, to simulate the effects of
building tolerances. Each element is assumed to be cut so
that the mean error of all elements is 0 mm, but a
standard deviation of 0.1 mm, so 68.4% of element lengths
are within 0.1 mm, 95.4% within 0.2 mm and 99.7% with in
0.3 mm. The accuracy of placing elements along the boom
is much lower, so here we have specified a standard
deviation of 1.0 mm, so 68.6% of elements are placed
within 1 mm of the correct position, 95.4% within 2 mm of
the correct position etc. The program will report the
*worst* performances achieved. If the performance dips
too mush, then you either need to build them better, or
get a design that’s less critical!
STOPPING
Optimise will stop after the number of iterations
specified in the parameter iterations. It will also stop
if a file stop exits in the current directory of the
executable optimise This file can of course only be
created using a multi-tasking operating system such as
Unix. It is *not* advisable to stop the program by
hitting the DEL key (Unix) or CONTROL-C (DOS), as one of
the files may be open at the time, resulting in an empty
file. Files are not open for any longer than necessary
(they are closed immediately after writing to them), so
this is not a likely occurrence, but can still occur.
LIMITATIONS
I’m not aware of any limitations, apart from that
filenames, including full path, can’t exceed 90
characters.
FILES
filename Antenna description, created by input or first.
filename.up Update file, listing achievements of optimise.
filename.bes Best file, containing the best design to date.
changes File that causes the program to pause to re-adjust weights.
stop File that stops optimisation process.
SEE ALSO
first(1), input(1), output(1), yagi(1), first(5),
input(5) output(5) and optimise(5).
PLATFORMS
Both DOS and Unix versions have been built. The DOS
version as distributed requires a 386 PC with a 387 maths
coprocessor.
Although I have altered the source to make it more
compatible with DOS (reduced file name lengths etc), my
wish is to build a decent program, rather than fit the
program to an outdated operating system. If there is a
*good* reason to use code that is incompatible with DOS,
this will be done.
Since optimise takes a while to optimise an antenna
(I’ve optimised one design for a week), it is obviously
more sensible to build this program under a multi-tasking
operating system, as otherwise a PC can be tied up for
days.
BUGS
Bugs should be reported to david.kirkby@onetel.net. Bugs
tend actually to be fixed if they can be isolated, so it
is in your interest to report them in such a way that
they can be easily reproduced.
The program will dump core (crash) if asked to optimise a
1ele beam, without any arguments. This is because a 1ele
beam has no parasitic elements and by default the program
only changes parasitic elements.
Some of the options are not checked for sensible values,
although most are now checked and report if they are out
of range.
If the user specifies very large manufacturing errors
using the ’-t’ and ’-T’ options, its possible for
elements to overlap or for element lengths to become
negative. This will cause numerical errors. Any
reasonable values will not cause this.
On long Yagi’s (50 elements) optimise can go a bit silly.
It can optimise say a 1296MHz Yagi to get 20 dB at 1296
MHz, but less than 0 dB at only 1 MHz away. Needs some
thought!
The level of the sidelobes is not computed with the GA or
some other optimisation types. This will be corrected
later.
All those I don’t know about.
AUTHORS
Dr. David Kirkby G8WRB (david.kirkby@onetel.net). with
help with converting to DOS from Dr. Joe Mack NA3T
(mack@fcrfv2.ncifcrf.gov)