Суррогатная оптимизация антенны Яги-Uda с шестью элементами

Этот пример показывает, как оптимизировать проект антенны с помощью суррогатного решателя оптимизации. Диаграммы направленности антенн зависят ощутимо от параметров, которые задают формы антенны. Как правило, функции диаграммы направленности имеют несколько локальных оптимумов. Чтобы вычислить диаграмму направленности, этот пример использует функции Antenna Toolbox™.

Антенна Яги-Uda является широко используемой структурой излучения для множества приложений в коммерческих и военных секторах. Эта антенна может получить сигналы TV в области значений VHF-UHF частот [1]. Яги-Uda является направленной антенной волны перемещением с одним управляемым элементом, обычно свернутый диполь или стандартный диполь, который окружается несколькими пассивными диполями. Пассивные элементы формируют отражатель и директора. Эти имена идентифицируют положения относительно управляемого элемента. Диполь отражателя находится позади управляемого элемента, в направлении заднего лепестка излучения антенны. Диполь директора перед управляемым элементом в направлении, где основной луч формируется.

Разработайте параметры

Задайте начальные параметры проекта в центре полосы VHF [2].

freq = 165e6;
wirediameter = 19e-3;
c = physconst('lightspeed');
lambda = c/freq;

Создайте антенну Яги-Uda

Управляемый элемент для антенны Яги-Uda является свернутым диполем, стандартным возбудителем для этого типа антенны. Настройте параметры длины и ширины свернутого диполя. Поскольку цилиндрические структуры моделируются как эквивалентные металлические полосы, вычисляют ширину с помощью служебной функции cylinder2strip, доступной в Antenna Toolbox™. Длина λ/2 на частоте проекта.

d = dipoleFolded;
d.Length = lambda/2;
d.Width = cylinder2strip(wirediameter/2);
d.Spacing = d.Length/60;

Создайте антенну Яги-Uda с возбудителем как свернутый диполь. Установите длины отражателя и элементов директора быть λ/2. Определите номер директоров к четыре. Задайте отражатель и директора, располагающего с интервалами как 0.3λ и 0.25λ, соответственно. Эти настройки обеспечивают исходное предположение и служат отправной точкой для процедуры оптимизации. Покажите первоначальный проект.

Numdirs = 4;
refLength = 0.5;
dirLength = 0.5*ones(1,Numdirs);
refSpacing = 0.3;
dirSpacing = 0.25*ones(1,Numdirs);
initialdesign = [refLength dirLength refSpacing dirSpacing].*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)

Постройте диаграмму направленности на частоте проекта

До выполнения процесса оптимизации постройте диаграмму направленности для исходного предположения в 3-D.

fig1 = figure;
pattern(yagidesign,freq);

Эта антенна не имеет более высокой направленности в предпочтительном направлении в зените (повышение = 90 градусов). Этот первоначальный проект антенны Яги-Uda является плохо разработанным теплоотводом.

Настройте оптимизацию

Используйте следующие переменные в качестве контрольных переменных для оптимизации:

  • Длина отражателя (1 переменная)

  • Длины директора (4 переменные)

  • Интервал отражателя (1 переменная)

  • Интервалы директора (4 переменные)

С точки зрения одного векторного параметра parasiticVals используйте эти настройки:

  • Длина отражателя = parasiticVals(1)

  • Длины директора = parasiticVals(2:5)

  • Интервал отражателя = parasiticVals(6)

  • Интервалы директора = parasiticVals(7:10)

С точки зрения parasiticVals, устанавливает целевая функция, которая стремится иметь большое значение в направлении на 90 градусов, маленькое значение в направлении на 270 градусов и большое значение максимальной мощности между угловыми границами ширины луча повышения.

type yagi_objective_function2.m
function objectivevalue = yagi_objective_function2(y,parasiticVals,freq,elang)
% YAGI_OBJECTIVE_FUNCTION2 returns the obbjective for a 6-element Yagi
% OBJECTIVE_VALUE = YAGI_OBJECTIVE_FUNCTION(Y,PARASITICVALS,FREQ,ELANG),
% assigns the appropriate parasitic dimensions, PARASITICVALS, to the Yagi
% antenna Y, and uses the frequency FREQ and angle pair ELANG to calculate
% the objective function value.

% The YAGI_OBJECTIVE_FUNCTION2 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 2014-2018 The MathWorks, Inc.

bw1 = elang(1);
bw2 = elang(2);
y.ReflectorLength = parasiticVals(1);
y.DirectorLength = parasiticVals(2:y.NumDirectors+1);
y.ReflectorSpacing = parasiticVals(y.NumDirectors+2);
y.DirectorSpacing = parasiticVals(y.NumDirectors+3:end);
output = calculate_objectives(y,freq,bw1,bw2);
output = output.MaxDirectivity + output.FB;
objectivevalue= -output;                % We intend to maximize
end

function output = calculate_objectives(y,freq,bw1,bw2)
%CALCULATE_OBJECTIVES calculate the objective function
% OUTPUT = CALCULATE_OBJECTIVES(Y,FREQ,BW1,BW2) Calculate the directivity
% in az = 90 plane that covers the main beam, sidelobe and backlobe.
% Calculate the maximum directivity, side lobelevel and backlobe and store
% in fields of the output variable structure.
[es,~,el] = pattern(y,freq,90,0:1:270);   
el1 = el < bw1;                           
el2 = el > bw2;                           
el3 = el>bw1&el<bw2;
emainlobe = es(el3);
esidelobes =([es(el1);es(el2)]);
Dmax = max(emainlobe);
SLLmax = max(esidelobes);
Backlobe = es(end);
F = es(91);
B = es(end);
F_by_B = F-B;
output.MaxDirectivity= Dmax;
output.MaxSLL = SLLmax;
output.BackLobeLevel = Backlobe;
output.FB = F_by_B;
end

Установите границы на контрольных переменных.

refLengthBounds = [0.4;
                    0.6];
dirLengthBounds = [0.35 0.35 0.35 0.35;   % lower bound on director length
                   0.495 0.495 0.495 0.495];  % upper bound on director length
refSpacingBounds = [0.05;                 % lower bound on reflector spacing
                    0.30];                % upper bound on reflector spacing
dirSpacingBounds = [0.05 0.05 0.05 0.05;  % lower bound on director spacing
                    0.23 0.23 0.23 0.23]; % upper bound on director spacing
                
LB = [refLengthBounds(1) dirLengthBounds(1,:) refSpacingBounds(1) dirSpacingBounds(1,:) ].*lambda;
UB = [refLengthBounds(2) dirLengthBounds(2,:) refSpacingBounds(2) dirSpacingBounds(2,:) ].*lambda;

Установите начальную точку для оптимизации и установите угловые границы ширины луча повышения.

parasitic_values = [ yagidesign.ReflectorLength,                        ...
                     yagidesign.DirectorLength,                         ...
                     yagidesign.ReflectorSpacing                        ...
                     yagidesign.DirectorSpacing];                

elang = [60 120];                   % elevation beamwidth angles at az = 90

Суррогатная оптимизация

Чтобы искать глобальный оптимум целевой функции, используйте surrogateopt в качестве решателя. Установите опции позволять 500 функциональных оценок, включать начальную точку, использовать параллельное вычисление и использовать функцию построения графика 'surrogateoptplot'. Чтобы понять сюжет 'surrogateoptplot', смотрите, Интерпретируют surrogateoptplot..

surrogateoptions = optimoptions('surrogateopt','MaxFunctionEvaluations',500,...
    'InitialPoints',parasitic_values,'UseParallel',true,'PlotFcn','surrogateoptplot');
rng(4) % For reproducibility
optimdesign = surrogateopt(@(x) yagi_objective_function2(yagidesign,x,freq,elang),...
                      LB,UB,surrogateoptions);

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.

surrogateopt нашел точку, дающую значение целевой функции –70. Исследуйте эффект оптимизированных параметров на диаграмме направленности антенны.

Постройте оптимизированный шаблон

Постройте оптимизированный шаблон антенны на частоте проекта.

yagidesign.ReflectorLength = optimdesign(1);
yagidesign.DirectorLength = optimdesign(2:5);
yagidesign.ReflectorSpacing = optimdesign(6);
yagidesign.DirectorSpacing  = optimdesign(7:10);
fig2 = figure;
pattern(yagidesign,freq)

По-видимому, антенна теперь излучает значительно больше степени в зените.

Электронная плоскость и сокращения H-плоскости шаблона

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

fig3 = figure;
pattern(yagidesign,freq,0,0:1:359);

fig4 = figure;
pattern(yagidesign,freq,90,0:1:359);

Оптимизированный проект показывает существенное улучшение в диаграмме направленности. Более высокая направленность достигается в желаемом направлении к зениту. Задний лепесток является маленьким, приводя к хорошему коэффициенту защитного действия для этой антенны. Вычислите направленность в зените, коэффициенте защитного действия и ширине луча в электронной плоскости и H-плоскости.

D_max = pattern(yagidesign,freq,0,90)
D_max = 10.2466
D_back = pattern(yagidesign,freq,0,-90)
D_back = -49.4292
F_B_ratio = D_max - D_back
F_B_ratio = 59.6757
Eplane_beamwidth = beamwidth(yagidesign,freq,0,1:1:360)
Eplane_beamwidth = 54
Hplane_beamwidth = beamwidth(yagidesign,freq,90,1:1:360)
Hplane_beamwidth = 68

Сравнение с таблицей данных производителя

Оптимизированная антенна Яги-Uda достигает прямой направленности 10.2 dBi, которая переводит в 8.1 dBd (относительно диполя). Этот результат немного меньше, чем значение усиления, о котором сообщает таблица данных в ссылке [2] (8.5 dBd). Коэффициент защитного действия составляет 60 дБ; это - часть количества, которое максимизирует оптимизатор. Оптимизированная антенна Яги-Uda имеет ширину луча электронной плоскости 54 градусов, тогда как таблица данных перечисляет ширину луча электронной плоскости как 56 градусов, ширина луча H-плоскости оптимизированной антенны Яги-Uda составляет 68 градусов, тогда как значение на таблице данных составляет 63 градуса. Пример не обращается к импедансу, соответствующему по полосе.

Сведение в таблицу первоначального и оптимизированного проекта

Сведите в таблицу начальные предположения проекта, и финал оптимизировал расчетные значения.

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'};         
initialdesign = initialdesign';
optimdesign = optimdesign';
T = table(initialdesign,optimdesign,'RowNames',yagiparam)
T=10×2 table
                            initialdesign    optimdesign
                            _____________    ___________

    Reflector Length           0.90846         0.94828  
    Director Length - 1        0.90846          0.7754  
    Director Length - 2        0.90846         0.74557  
    Director Length - 3        0.90846         0.74142  
    Director Length - 4        0.90846          0.6885  
    Reflector Spacing          0.54508         0.25828  
    Director Spacing - 1       0.45423         0.29157  
    Director Spacing - 2       0.45423         0.32266  
    Director Spacing - 3       0.45423         0.25051  
    Director Spacing - 4       0.45423         0.25265  

Ссылка

[1] Balanis, Теория К. А. Антенны: Анализ и проектирование. 3-й редактор Нью-Йорк: Вайли, 2005, p. 514.

[2] Онлайн в: https://amphenolprocom.com/products/base-station-antennas/2450-s-6y-165

Смотрите также

Похожие темы