Суррогатная оптимизация антенны Яги-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 objective 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 might 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; % 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, sidelobe level 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' функция plot. Изучать '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.2145
D_back = pattern(yagidesign,freq,0,-90)
D_back = -48.1770
F_B_ratio = D_max - D_back
F_B_ratio = 58.3915
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.92703  
    Director Length - 1        0.90846         0.71601  
    Director Length - 2        0.90846          0.7426  
    Director Length - 3        0.90846         0.68847  
    Director Length - 4        0.90846         0.75779  
    Reflector Spacing          0.54508          0.3117  
    Director Spacing - 1       0.45423         0.28684  
    Director Spacing - 2       0.45423         0.23237  
    Director Spacing - 3       0.45423         0.21154  
    Director Spacing - 4       0.45423         0.27903  

Ссылка

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

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

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

Похожие темы