Суррогатная оптимизация шестиэлементной антенны Яги-Уды

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

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

Расчётные параметры

Задайте начальные расчётные параметры в центре УКВ- полоса [2].

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

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

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

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

Создайте антенну Яги-Уда с возбудителем в качестве сложенного диполя. Установите длины отражателя и направляющих элементов равными λ/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 o). Этот первоначальный проект антенны Яги-Уды является плохо спроектированным излучателем.

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

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

  • Длина отражателя (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' постройте график функции. Чтобы понять '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)

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

Разрезы шаблона на E-плоскости и H-плоскости

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

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

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

Оптимизированный проект показывает значительное улучшение диаграммы направленности излучения. Более высокая направленность достигается в желаемом направлении к зениту. Задний лепесток небольшой, что приводит к хорошему отношению передней и задней сторон для этой антенны. Вычислите направленность в зените, переднем и заднем соотношениях и ширине луча в E-плоскости и 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

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

Оптимизированная антенна Яги-Уды достигает прямой направленности 10,2 дБи, что переводится на 8,1 дБд (относительно диполя). Этот результат немного меньше, чем значение усиления, сообщенное таблицей данных в ссылке [2] (8,5 дБд). Соотношение «спереди» и «сзади» составляет 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, C. A. Antenna Theory: Analysis and Design. 3rd ed. New York: Wiley, 2005, p. 514.

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

См. также

Похожие темы