В этом примере показано, как оптимизировать проект антенны с помощью суррогатного решателя оптимизации. Диаграммы направленности антенн зависят ощутимо от параметров, которые задают формы антенны. Как правило, функции диаграммы направленности имеют несколько локальных оптимумов. Чтобы вычислить диаграмму направленности, этот пример использует функции Antenna Toolbox™.
Антенна Яги-Uda является широко используемой структурой излучения для множества приложений в коммерческих и военных секторах. Эта антенна может получить сигналы TV в области значений VHF-UHF частот [1]. Яги-Uda является направленной антенной волны перемещением с одним управляемым элементом, обычно свернутый диполь или стандартный диполь, который окружается несколькими пассивными диполями. Пассивные элементы формируют отражатель и директора. Эти имена идентифицируют положения относительно управляемого элемента. Диполь отражателя находится позади управляемого элемента, в направлении заднего лепестка излучения антенны. Диполь директора перед управляемым элементом в направлении, где основной луч формируется.
Задайте начальные расчетные параметры в центре полосы VHF [2].
freq = 165e6;
wirediameter = 19e-3;
c = physconst('lightspeed');
lambda = c/freq;
Управляемым элементом для антенны Яги-Uda является свернутый диполь, стандартный возбудитель для этого типа антенны. Настройте параметры длины и ширины свернутого диполя. Поскольку цилиндрические структуры моделируются как эквивалентные металлические полосы, вычисляют ширину с помощью cylinder2strip
служебная функция, доступная в Antenna Toolbox™. Длина на частоте проекта.
d = dipoleFolded; d.Length = lambda/2; d.Width = cylinder2strip(wirediameter/2); d.Spacing = d.Length/60;
Создайте антенну Яги-Uda с возбудителем как свернутый диполь. Установите длины отражателя и элементов директора быть . Определите номер директоров к четыре. Задайте отражатель и директора, располагающего с интервалами как и , соответственно. Эти настройки обеспечивают исходное предположение и служат начальной точкой для процедуры оптимизации. Покажите первоначальный проект.
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-плоскости, то есть, азимуте = 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