В этом примере 6-элементная антенна Яги-Уда оптимизируется как для направленности, так и для соответствия 300Ω входов с использованием метода глобальной оптимизации. Диаграммы направленности и входной импеданс антенн чувствительны к параметрам, определяющим их формы. Многомерная поверхность, по которой такие оптимизации должны выполняться, имеет несколько локальных оптимумов. Это делает задачу нахождения правильного набора параметров, удовлетворяющих целям оптимизации, особенно сложной и требует использования методов глобальной оптимизации. Одним из таких способов является поиск диаграммы направленности, основанный на прямом поиске метод оптимизации, который дал впечатляющие результаты для оптимизации конструкции антенны.
Антенна Яги-Уда является широко используемой излучающей структурой для различных применений в коммерческом и военном секторах. Эта антенна была популярна для приема телевизионных сигналов в диапазоне частот УКВ-УВЧ [1]. «Яги» представляет собой направленную антенну бегущей волны с единственным ведомым элементом, обычно сложенным диполем или стандартным диполем, который окружён несколькими пассивными диполями. Пассивные элементы образуют отражатель и директор. Эти имена определяют положения относительно управляемого элемента. Диполь отражателя находится позади ведомого элемента в направлении заднего лепестка антенного излучения, а директор находится перед ведомым элементом в направлении формирования основного луча.
Выберите исходные расчетные параметры в центре диапазона УКВ [2]. В спецификации указан входной импеданс после учета балуна. Наша модель не учитывает наличие балуна и поэтому будет соответствовать типичному сложенному дипольному входному импедансу .
fc = 165e6;
wirediameter = 12.7e-3;
c = physconst('lightspeed');
lambda = c/fc;
Z0 = 300;
BW = 0.05*fc;
fmin = fc - 2*(BW);
fmax = fc + 2*(BW);
Nf = 101;
freq = linspace(fmin,fmax,Nf);Ведомым элементом для антенны Яги-Уды является сложенный диполь. Это стандартный возбудитель для такой антенны. Отрегулируйте параметры длины и ширины сложенного диполя. Поскольку мы моделируем цилиндрические конструкции как эквивалентные металлические полосы, ширина рассчитывается с помощью функции полезности, доступной в Toolbox™ Антенна. Длина выбирается равной на расчетной частоте.
d = dipoleFolded; d.Length = lambda/2; d.Width = cylinder2strip(wirediameter/2); d.Spacing = d.Length/60;
Создайте антенну Яги-Уды с возбудителем в качестве сложенного диполя. Выберите длину отражателя и направителя . Установите число директоров равным четырем. Выберите расстояние между отражателем и указателем соответственно , . Эти варианты являются начальным предположением и служат начальной точкой для процедуры оптимизации. Показать начальную конструкцию.
Numdirs = 4; refLength = 0.5; dirLength = 0.5*ones(1,Numdirs); refSpacing = 0.3; dirSpacing = 0.25*ones(1,Numdirs); exLength = d.Length/lambda; exSpacing = d.Spacing/lambda; initialdesign = [refLength dirLength refSpacing dirSpacing exLength exSpacing].*lambda; yagidesign = yagiUda; yagidesign.Exciter = d; yagidesign.NumDirectors = Numdirs; yagidesign.ReflectorLength = refLength*lambda; yagidesign.DirectorLength = dirLength.*lambda; yagidesign.ReflectorSpacing = refSpacing*lambda; yagidesign.DirectorSpacing = dirSpacing*lambda; show(yagidesign)

Перед выполнением процесса оптимизации постройте график диаграммы направленности для начального предположения в 3D.
fig1 = figure; pattern(yagidesign,fc);

Эта начальная антенна Яги-Уды не имеет более высокой направленности в предпочтительном направлении, что означает в зените (отметка = 90 °) и поэтому является плохо спроектированным излучателем.
В качестве управляющих переменных для оптимизации используйте следующие переменные:
Длина отражателя (1 переменная)
Длина директора (4 переменные)
Расстояние между отражателями (1 переменная)
Расстояния между директорами (4 переменные)
Длина возбудителя (1 переменная)
Шаг возбудителя (1 переменная)
В терминах одного векторного параметра controlVals, комплект
Длина отражателя = controlVals(1)
Длина директора = controlVals(2:5)
Расстояние между отражателями = controlVals(6)
Расстояния между директорами = controlVals(7:10)
Длина возбудителя = controlVals(11)
Шаг возбудителя = controlVals(12)
В терминах controlVals, задать целевую функцию, которая стремится иметь большое значение направленности в направлении 90 градусов, малое значение в направлении -90 градусов и большое значение максимальной мощности между границами угла ширины луча отметки. В дополнение к цели направленности в качестве ограничения также включено условие соответствия импедансу. Любые нарушения ограничений будут наказывать цель.
type yagi_objective_function_direct.mfunction objectivevalue = yagi_objective_function_direct(y,controlVals,fc,BW,ang,Z0,constraints)
% YAGI_OBJECTIVE_FUNCTION_DIRECT returns the objective for a 6 element Yagi
% OBJECTIVE_VALUE =
% YAGI_OBJECTIVE_FUNCTION_DIRECT(Y,CONTROLVALS,FREQ,ANG,Z0,constraints), assigns
% the appropriate parasitic dimensions, CONTROLVALS to the Yagi antenna Y,
% and uses the frequency FREQ, angle pair,ANG, reference impedance Z0 and
% the constraints to calculate the objective function value.
% The YAGI_OBJECTIVE_FUNCTION_DIRECT function is used for an internal example.
% Its behavior may change in subsequent releases, so it should not be
% relied upon for programming purposes.
% Copyright 2018 The MathWorks, Inc.
y.ReflectorLength = controlVals(1);
y.DirectorLength = controlVals(2:y.NumDirectors+1);
y.ReflectorSpacing = controlVals(y.NumDirectors+2);
y.DirectorSpacing = controlVals(y.NumDirectors+3:end-2);
y.Exciter.Length = controlVals(end-1);
y.Exciter.Spacing = controlVals(end);
% Unpack constraints
Gmin = constraints.Gmin;
Gdev = constraints.Gdeviation;
FBmin = constraints.FBmin;
S11min = constraints.S11min;
K = constraints.Penalty;
% Calculate antenna port and field parameters
output = analyzeAntenna(y,fc,BW,ang,Z0);
% Form objective function
output1 = output.MaxDirectivity+output.MismatchLoss; % Directivity/Gain at zenith
% Gain constraint, e.g. G > 10
c1 = 0;
if output1<Gmin
c1 = Gmin-output1;
end
% Gain deviation constraint, abs(G-Gmin)<0.1;
c1_dev = 0;
if abs(output1-Gmin)>Gdev
c1_dev = -Gdev + abs(output1-Gmin);
end
% Front to Back Ratio constraint, e.g. F/B > 15
c2 = 0;
if output.FB < FBmin
c2 = FBmin-output.FB;
end
% Reflection Coefficient, S11 < -10
c3 = 0;
if output.S11 > S11min
c3 = -S11min + output.S11;
end
% Form the objective + constraints
objectivevalue = -output1 + max(0,(c1+c1_dev+c2+c3))*K;
end
function output = analyzeAntenna(ant,fc,BW,ang,Z0)
%ANALYZEANTENNA calculate the objective function
% OUTPUT = ANALYZEANTENNA(Y,FREQ,BW,ANG,Z0) performs analysis on the
% antenna ANT at the frequency, FC, and calculates the directivity at the
% angles specified by ANG and the front-to-back ratio. The reflection
% coefficient relative to reference impedance Z0, and impedance are
% computed over the bandwidth BW around FC.
fmin = fc - (BW/2);
fmax = fc + (BW/2);
Nf = 5;
freq = unique([fc,linspace(fmin,fmax,Nf)]);
fcIdx = freq==fc;
s = sparameters(ant,freq,Z0);
Z = impedance(ant,fc);
az = ang(1,:);
el = ang(2,:);
Dmax = pattern(ant,fc,az(1),el(1));
Dback = pattern(ant,fc,az(2),el(2));
% Calculate F/B
F_by_B = Dmax-Dback;
% Compute S11 and mismatch loss
s11 = rfparam(s,1,1);
S11 = max(20*log10(abs(s11)));
T = mean(10*log10(1 - (abs(s11)).^2));
% Form the output structure
output.MaxDirectivity= Dmax;
output.BackLobeLevel = Dback;
output.FB = F_by_B;
output.S11 = S11;
output.MismatchLoss = T;
output.Z = Z;
end
Установите границы для управляющих переменных.
refLengthBounds = [0.3; % lower bound on reflector length 0.9]; % upper bound on reflector spacing dirLengthBounds = [0.3 0.3 0.3 0.3; % lower bound on director length 0.7 0.7 0.7 0.7]; % upper bound on director length refSpacingBounds = [0.05; % lower bound on reflector spacing 0.35]; % upper bound on reflector spacing dirSpacingBounds = [0.05 0.05 0.05 0.05; % lower bound on director spacing 0.2 0.2 0.3 0.3]; % upper bound on director spacing exciterLengthBounds = [0.45; % lower bound on exciter length 0.6]; % upper bound on exciter length exciterSpacingBounds = [.004; .009]; LB = [refLengthBounds(1),dirLengthBounds(1,:) refSpacingBounds(1) dirSpacingBounds(1,:) exciterLengthBounds(1) exciterSpacingBounds(1) ].*lambda; UB = [refLengthBounds(2),dirLengthBounds(2,:) refSpacingBounds(2) dirSpacingBounds(2,:) exciterLengthBounds(2) exciterSpacingBounds(2) ].*lambda; parameterBounds.LB = LB; parameterBounds.UB = UB; ang = [0 0;90 -90]; % azimuth,elevation angles for main lobe and back lobe [az;el]
Toolbox™ глобальной оптимизации предоставляет функцию оптимизации на основе прямого поиска, называемую patternsearch. Мы используем эту функцию с опциями, указанными в psoptimset функция. При каждой итерации постройте график наилучшего значения целевой функции и ограничьте общее число итераций 300. Передайте целевую функцию функции поиска массива, используя анонимную функцию вместе с границами и структурой опций. Целевая функция, используемая в процессе оптимизации patternsearch доступен в файле yagi_objective_function.
Оценка направленности в различных направлениях, соответствующих угловой области, определенной для максимального излучения, а также максимального бокового расстояния и уровня заднего расстояния, дана в функции calculate_objectives доступно в yagi_objective function.
% Optimizer options optimizerparams = optimoptions(@patternsearch); optimizerparams.UseCompletePoll = true; optimizerparams.PlotFcns = @psplotbestf; optimizerparams.UseParallel = true; optimizerparams.Cache = 'on'; optimizerparams.MaxIter = 100; optimizerparams.FunctionTolerance = 1e-2; % Antenna design parameters designparams.Antenna = yagidesign; designparams.Bounds = parameterBounds; % Analysis parameters analysisparams.CenterFrequency = fc; analysisparams.Bandwidth = BW; analysisparams.ReferenceImpedance = Z0; analysisparams.MainLobeDirection = ang(:,1); analysisparams.BackLobeDirection = ang(:,2); % Set constraints constraints.S11min = -10; constraints.Gmin = 10.5; constraints.Gdeviation = 0.1; constraints.FBmin = 15; constraints.Penalty = 50; optimdesign = optimizeAntennaDirect(designparams,analysisparams,constraints,optimizerparams);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6).
Optimization terminated: mesh size less than options.MeshTolerance.

Постройте график оптимизированной диаграммы направленности антенны на расчетной частоте.
yagidesign.ReflectorLength = optimdesign(1); yagidesign.DirectorLength = optimdesign(2:5); yagidesign.ReflectorSpacing = optimdesign(6); yagidesign.DirectorSpacing = optimdesign(7:10); yagidesign.Exciter.Length = optimdesign(11); yagidesign.Exciter.Spacing = optimdesign(12); fig2 = figure; pattern(yagidesign,fc)

Чтобы лучше понять поведение в двух ортогональных плоскостях, постройте график нормированной величины электрического поля в E и H-плоскостях, т.е. азимут = 0 и 90 ° соответственно. Активизируйте метрики антенны на графиках полярной диаграммы направленности, чтобы установить направленность в зените, отношение фронт-назад и ширину луча в плоскостях E и H.

% fig3 = figure; % patternElevation(yagidesign,fc,0,'Elevation',0:1:359); % pE = polarpattern('gco'); % pE.AntennaMetrics = 1;

% fig4 = figure; % patternElevation(yagidesign,fc,90,'Elevation',0:1:359); % pH = polarpattern('gco'); % pH.AntennaMetrics = 1;
Оптимизированная конструкция показывает значительное улучшение диаграммы направленности излучения. Более высокая направленность достигается в нужном направлении к зениту. Задний лепесток мал, что приводит к хорошему отношению фронта к спине для этой антенны.
Вычисляют входной коэффициент отражения для оптимизированной антенны Яги-Уды и строят график относительно опорного импеданса . Значение -10 дБ или ниже считается хорошим совпадением импеданса.
s = sparameters(yagidesign,freq,Z0); fig5 = figure; rfplot(s);

Оптимизированная антенна Яги-Уда достигает прямой направленности больше 10 дБи, которая преобразуется в величину больше 8 дБд (относительно диполя). Это близко к значению коэффициента усиления, указанному в таблице данных (8,5 дБд). Отношение F/B больше 15 дБ. Оптимизированная антенна Яги-Уда имеет ширину луча E-плоскости и H-плоскости, которая выгодно сравнивается с указанными в таблице значениями 54 градуса и 63 градуса соответственно. Конструкция обеспечивает хорошее соответствие импеданса и имеет полосу пропускания -10 дБ приблизительно 8%.
datasheetparam = {'Gain (dBi)';'F/B';'E-plane Beamwidth (deg.)';'H-plane Beamwidth (deg.)';'Impedance Bandwidth (%)'};
datasheetvals = [10.5,16,54,63,10]';
optimdesignvals = [10.59,15.6,50,62,12.1]';
Tdatasheet = table(datasheetvals,optimdesignvals,'RowNames',datasheetparam)Tdatasheet=5×2 table
datasheetvals optimdesignvals
_____________ _______________
Gain (dBi) 10.5 10.59
F/B 16 15.6
E-plane Beamwidth (deg.) 54 50
H-plane Beamwidth (deg.) 63 62
Impedance Bandwidth (%) 10 12.1
Сведите в таблицу начальные расчетные предположения и окончательные оптимизированные проектные значения.
yagiparam= {'Reflector Length';
'Director Length - 1'; 'Director Length - 2';
'Director Length - 3'; 'Director Length - 4';
'Reflector Spacing'; 'Director Spacing - 1';
'Director Spacing - 2';'Director Spacing - 3';
'Director Spacing - 4';'Exciter Length';
'Exciter Spacing'};
initialdesign = initialdesign';
optimdesign = optimdesign';
Tgeometry = table(initialdesign,optimdesign,'RowNames',yagiparam)Tgeometry=12×2 table
initialdesign optimdesign
_____________ ___________
Reflector Length 0.90846 0.90846
Director Length - 1 0.90846 0.78346
Director Length - 2 0.90846 0.65846
Director Length - 3 0.90846 0.78346
Director Length - 4 0.90846 0.78346
Reflector Spacing 0.54508 0.4786
Director Spacing - 1 0.45423 0.23838
Director Spacing - 2 0.45423 0.19151
Director Spacing - 3 0.45423 0.3876
Director Spacing - 4 0.45423 0.39173
Exciter Length 0.90846 0.84596
Exciter Spacing 0.015141 0.016118
[1] К. А. Баланис, теория антенны. Анализ и дизайн, стр. 514, Уайли, Нью-Йорк, 3-е издание, 2005
[2] В Интернете по адресу: S.6Y-165
Проект оптимизации на основе суррогата шестиэлементной антенны Яги-Уды