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