Этот пример оптимизирует антенну Яги-Uda с 6 элементами и для направленности и для введите соответствие с помощью глобального метода оптимизации. Диаграммы направленности и входной импеданс антенн чувствительны к параметрам, которые задают их формы. Многомерная поверхность, по которой должна быть выполнена такая оптимизация, имеет несколько локальных оптимумов. Это делает задачу из нахождения правильного набора параметров, удовлетворяющих целям оптимизации особенно сложный, и требует использования глобальных методов оптимизации. Один такой метод является поиском шаблона, прямой основанный на поиске метод оптимизации, который привел к впечатляющим результатам для оптимизации проекта антенны.
Антенна Яги-Uda является широко используемой структурой излучения для множества приложений в коммерческих и военных секторах. Эта антенна была популярна для приема сигналов TV в области значений VHF-UHF частот [1]. Яги является направленной антенной волны перемещением с одним управляемым элементом, обычно свернутый диполь или стандартный диполь, который окружается несколькими пассивными диполями. Пассивные элементы формируют отражатель и директора. Эти имена идентифицируют положения относительно управляемого элемента. Диполь отражателя находится позади управляемого элемента в направлении заднего лепестка излучения антенны, в то время как директор перед управляемым элементом в направлении, где основной луч формируется.
Выберите начальные расчетные параметры в центре полосы VHF [2]. Списки a таблиц данных входной импеданс после принятия во внимание симметрирующего трансформатора. Наша модель не составляет присутствие симметрирующего трансформатора и поэтому будет соответствовать к типичному свернутому дипольному входному импедансу .
fc = 165e6;
wirediameter = 12.7e-3;
c = physconst('lightspeed');
lambda = c/fc;
Z0 = 300;
BW = 0.05*fc;
fmin = fc - 2*(BW);
fmax = fc + 2*(BW);
Nf = 101;
freq = linspace(fmin,fmax,Nf);
Управляемым элементом для антенны Яги-Uda является свернутый диполь. Это - стандартный возбудитель для такой антенны. Настройте параметры длины и ширины свернутого диполя. Поскольку мы моделируем цилиндрические структуры как эквивалентные металлические полосы, ширина вычисляется с помощью служебной функции, доступной в 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); exLength = d.Length/lambda; exSpacing = d.Spacing/lambda; initialdesign = [refLength dirLength refSpacing dirSpacing exLength exSpacing].*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)
До выполнения процесса оптимизации постройте диаграмму направленности для исходного предположения в 3D.
fig1 = figure; pattern(yagidesign,fc);
Эта начальная антенна Яги-Uda не имеет более высокой направленности в предпочтительном направлении, означая в зените (вертикальное изменение = 90 градусов) и является поэтому плохо спроектированным излучателем.
Используйте следующие переменные в качестве контрольных переменных для оптимизации:
Длина отражателя (1 переменная)
Длины директора (4 переменные)
Интервал отражателя (1 переменная)
Интервалы директора (4 переменные)
Длина возбудителя (1 переменная)
Интервал возбудителя (1 переменная)
В терминах одного векторного параметра controlVals
Набор
Длина отражателя = controlVals(1)
Длины директора = controlVals(2:5)
Интервал отражателя = controlVals(6)
Интервалы директора = controlVals(7:10)
Длина возбудителя = controlVals(11)
Интервал возбудителя = controlVals(12)
В терминах controlVals
, установите целевую функцию, которая стремится иметь большое значение направленности в 90 направлениях степени, маленькое значение в-90 направлениях степени и большое значение максимальной мощности между угловыми границами ширины луча вертикального изменения. В дополнение к цели направленности условие подобранности импедансов также включено как ограничение. Любые нарушения ограничений оштрафуют цель.
type yagi_objective_function_direct.m
function objectivevalue = yagi_objective_function_direct(y,controlVals,fc,BW,ang,Z0,constraints) % YAGI_OBJECTIVE_FUNCTION_DIRECT returns the objective for a 6 element Yagi % OBJECTIVE_VALUE = % YAGI_OBJECTIVE_FUNCTION_DIRECT(Y,CONTROLVALS,FREQ,ANG,Z0,constraints), assigns % the appropriate parasitic dimensions, CONTROLVALS to the Yagi antenna Y, % and uses the frequency FREQ, angle pair,ANG, reference impedance Z0 and % the constraints to calculate the objective function value. % The YAGI_OBJECTIVE_FUNCTION_DIRECT 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 2018 The MathWorks, Inc. y.ReflectorLength = controlVals(1); y.DirectorLength = controlVals(2:y.NumDirectors+1); y.ReflectorSpacing = controlVals(y.NumDirectors+2); y.DirectorSpacing = controlVals(y.NumDirectors+3:end-2); y.Exciter.Length = controlVals(end-1); y.Exciter.Spacing = controlVals(end); % Unpack constraints Gmin = constraints.Gmin; Gdev = constraints.Gdeviation; FBmin = constraints.FBmin; S11min = constraints.S11min; K = constraints.Penalty; % Calculate antenna port and field parameters output = analyzeAntenna(y,fc,BW,ang,Z0); % Form objective function output1 = output.MaxDirectivity+output.MismatchLoss; % Directivity/Gain at zenith % Gain constraint, e.g. G > 10 c1 = 0; if output1<Gmin c1 = Gmin-output1; end % Gain deviation constraint, abs(G-Gmin)<0.1; c1_dev = 0; if abs(output1-Gmin)>Gdev c1_dev = -Gdev + abs(output1-Gmin); end % Front to Back Ratio constraint, e.g. F/B > 15 c2 = 0; if output.FB < FBmin c2 = FBmin-output.FB; end % Reflection Coefficient, S11 < -10 c3 = 0; if output.S11 > S11min c3 = -S11min + output.S11; end % Form the objective + constraints objectivevalue = -output1 + max(0,(c1+c1_dev+c2+c3))*K; end function output = analyzeAntenna(ant,fc,BW,ang,Z0) %ANALYZEANTENNA calculate the objective function % OUTPUT = ANALYZEANTENNA(Y,FREQ,BW,ANG,Z0) performs analysis on the % antenna ANT at the frequency, FC, and calculates the directivity at the % angles specified by ANG and the front-to-back ratio. The reflection % coefficient relative to reference impedance Z0, and impedance are % computed over the bandwidth BW around FC. fmin = fc - (BW/2); fmax = fc + (BW/2); Nf = 5; freq = unique([fc,linspace(fmin,fmax,Nf)]); fcIdx = freq==fc; s = sparameters(ant,freq,Z0); Z = impedance(ant,fc); az = ang(1,:); el = ang(2,:); Dmax = pattern(ant,fc,az(1),el(1)); Dback = pattern(ant,fc,az(2),el(2)); % Calculate F/B F_by_B = Dmax-Dback; % Compute S11 and mismatch loss s11 = rfparam(s,1,1); S11 = max(20*log10(abs(s11))); T = mean(10*log10(1 - (abs(s11)).^2)); % Form the output structure output.MaxDirectivity= Dmax; output.BackLobeLevel = Dback; output.FB = F_by_B; output.S11 = S11; output.MismatchLoss = T; output.Z = Z; end
Установите границы на контрольных переменных.
refLengthBounds = [0.3; % lower bound on reflector length 0.9]; % upper bound on reflector spacing dirLengthBounds = [0.3 0.3 0.3 0.3; % lower bound on director length 0.7 0.7 0.7 0.7]; % upper bound on director length refSpacingBounds = [0.05; % lower bound on reflector spacing 0.35]; % upper bound on reflector spacing dirSpacingBounds = [0.05 0.05 0.05 0.05; % lower bound on director spacing 0.2 0.2 0.3 0.3]; % upper bound on director spacing exciterLengthBounds = [0.45; % lower bound on exciter length 0.6]; % upper bound on exciter length exciterSpacingBounds = [.004; .009]; LB = [refLengthBounds(1),dirLengthBounds(1,:) refSpacingBounds(1) dirSpacingBounds(1,:) exciterLengthBounds(1) exciterSpacingBounds(1) ].*lambda; UB = [refLengthBounds(2),dirLengthBounds(2,:) refSpacingBounds(2) dirSpacingBounds(2,:) exciterLengthBounds(2) exciterSpacingBounds(2) ].*lambda; parameterBounds.LB = LB; parameterBounds.UB = UB; ang = [0 0;90 -90]; % azimuth,elevation angles for main lobe and back lobe [az;el]
Global Optimization Toolbox™ обеспечивает прямую основанную на поиске оптимизационную функцию под названием patternsearch
. Мы используем эту функцию с опциями, заданными с psoptimset
функция. В каждой итерации постройте оптимальное значение целевой функции и ограничьте общее количество итераций к 300. Передайте целевую функцию функции patternsearch при помощи анонимной функции вместе с границами и структурой опций. Целевая функция используется во время процесса оптимизации patternsearch
доступно в файле yagi_objective_function
.
Оценка направленности в различных направлениях, соответствующих угловой области, заданной для максимального излучения, а также максимального бокового лепестка и backlobe уровня, дана в функциональном calculate_objectives
доступный в yagi_objective function
.
% Optimizer options optimizerparams = optimoptions(@patternsearch); optimizerparams.UseCompletePoll = true; optimizerparams.PlotFcns = @psplotbestf; optimizerparams.UseParallel = true; optimizerparams.Cache = 'on'; optimizerparams.MaxIter = 100; optimizerparams.FunctionTolerance = 1e-2; % Antenna design parameters designparams.Antenna = yagidesign; designparams.Bounds = parameterBounds; % Analysis parameters analysisparams.CenterFrequency = fc; analysisparams.Bandwidth = BW; analysisparams.ReferenceImpedance = Z0; analysisparams.MainLobeDirection = ang(:,1); analysisparams.BackLobeDirection = ang(:,2); % Set constraints constraints.S11min = -10; constraints.Gmin = 10.5; constraints.Gdeviation = 0.1; constraints.FBmin = 15; constraints.Penalty = 50; optimdesign = optimizeAntennaDirect(designparams,analysisparams,constraints,optimizerparams);
Starting parallel pool (parpool) using the 'local' profile ... Connected to the parallel pool (number of workers: 6). Optimization terminated: mesh size less than options.MeshTolerance.
Постройте оптимизированный шаблон антенны на частоте проекта.
yagidesign.ReflectorLength = optimdesign(1); yagidesign.DirectorLength = optimdesign(2:5); yagidesign.ReflectorSpacing = optimdesign(6); yagidesign.DirectorSpacing = optimdesign(7:10); yagidesign.Exciter.Length = optimdesign(11); yagidesign.Exciter.Spacing = optimdesign(12); fig2 = figure; pattern(yagidesign,fc)
Чтобы получить лучшее понимание поведения в двух ортогональных плоскостях, постройте нормированную величину электрического поля в E и H-плоскостях, i.e. азимут = 0 и 90 градусов соответственно. Включите метрики антенны на полярных графиках шаблона установить направленность в зените, Коэффициенте защитного действия и ширине луча в E и H-плоскостях.
% fig3 = figure; % patternElevation(yagidesign,fc,0,'Elevation',0:1:359); % pE = polarpattern('gco'); % pE.AntennaMetrics = 1;
% fig4 = figure; % patternElevation(yagidesign,fc,90,'Elevation',0:1:359); % pH = polarpattern('gco'); % pH.AntennaMetrics = 1;
Оптимизированный проект показывает существенное улучшение в диаграмме направленности. Существует более высокая направленность, достигнутая в желаемом направлении к зениту. Задний лепесток мал, приводя к хорошей передней стороне, чтобы поддержать отношение для этой антенны.
Входной коэффициент отражения для оптимизированной антенны Яги-Uda вычислен и построен относительно ссылочного импеданса . Значение-10 дБ или ниже считается хорошей подобранностью импедансов.
s = sparameters(yagidesign,freq,Z0); fig5 = figure; rfplot(s);
Оптимизированная антенна Яги-Uda достигает прямой направленности, больше, чем 10 dBi, который переводит в значение, больше, чем 8 dBd (относительно диполя). Это близко к значению усиления, о котором сообщает таблица данных (8.5 dBd). Отношение F/B больше 15 дБ. Оптимизированная антенна Яги-Uda имеет электронную плоскость и ширину луча H-плоскости, которые выдерживают сравнение с перечисленными значениями таблицы данных 54 градусов и 63 градусов соответственно. Проект достигает хорошей подобранности импедансов к , и имеет полосу пропускания на-10 дБ приблизительно 8%.
datasheetparam = {'Gain (dBi)';'F/B';'E-plane Beamwidth (deg.)';'H-plane Beamwidth (deg.)';'Impedance Bandwidth (%)'}; datasheetvals = [10.5,16,54,63,10]'; optimdesignvals = [10.59,15.6,50,62,12.1]'; Tdatasheet = table(datasheetvals,optimdesignvals,'RowNames',datasheetparam)
Tdatasheet=5×2 table
datasheetvals optimdesignvals
_____________ _______________
Gain (dBi) 10.5 10.59
F/B 16 15.6
E-plane Beamwidth (deg.) 54 50
H-plane Beamwidth (deg.) 63 62
Impedance Bandwidth (%) 10 12.1
Сведите в таблицу начальные предположения проекта, и финал оптимизировал расчетные значения.
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';'Exciter Length'; 'Exciter Spacing'}; initialdesign = initialdesign'; optimdesign = optimdesign'; Tgeometry = table(initialdesign,optimdesign,'RowNames',yagiparam)
Tgeometry=12×2 table
initialdesign optimdesign
_____________ ___________
Reflector Length 0.90846 0.90846
Director Length - 1 0.90846 0.78346
Director Length - 2 0.90846 0.65846
Director Length - 3 0.90846 0.78346
Director Length - 4 0.90846 0.78346
Reflector Spacing 0.54508 0.4815
Director Spacing - 1 0.45423 0.23838
Director Spacing - 2 0.45423 0.17588
Director Spacing - 3 0.45423 0.39216
Director Spacing - 4 0.45423 0.39173
Exciter Length 0.90846 0.84596
Exciter Spacing 0.015141 0.015629
[1] К. А. Баланис, Теория Антенны. Анализ и проектирование, p. 514, Вайли, Нью-Йорк, 3-й Выпуск, 2005
[2] Онлайн в: S.6Y-165
Основанный на суррогате проект оптимизации антенны Яги-Uda с шестью элементами