Я пытаюсь использовать оптимизацию для решения проблемы согласования антенн, когда я хочу минимизировать фазу результирующего согласованного импеданса (через схему согласования по пи) с учетом Q ›100 (например) и реального импеданса = 50.
Как ни странно, это дает решение только в том случае, если мои первоначальные предположения равны 50 для трех переменных. Кроме того, он находит решение, когда ограничение неравенства составляет ›10, но не› 1 ..... Я не понимаю этого, поскольку если оно ›10, оно больше 1 ....
Если я изменю верхнюю и нижнюю границы, это также повлияет на решатель. При lb = -1000 и ub = 1000 я получаю x2 = 1000, x3 = -125,57, x4 = 22,53. Но если я изменю нижнюю границу на -200, что по-прежнему должно допускать решение -125,57, решатель не сможет найти решение.
Возможно, я неправильно ставлю задачу оптимизации? Это моя постановка задачи: целевая функция: минимизировать мнимую часть Zin (для резонанса), ограничение неравенства: при условии Q ›ограничение на некоторое числовое равенство: и действительная часть Zin = 50
Вот простой скрипт на Python, который я написал:
from gekko import GEKKO
m = GEKKO()
x2,x3,x4, = m.Array(m.Var,3,lb=-1000,ub=1000) # upper and lower bounds for unknowns
x2.value = 50; x3.value =50; x4.value =50; # initial guess
#equations
m.Equation((-9.84*x2**2*x4)/(96.786*(x2+x3)*(x2+x3+4)+(120.11*x3+x2*(120.11+x3))*(120.11*(x3+x4)+x2*(120.11+x3+x4))) > 10) # inequality constraint
m.Equation((9.84*(x2**2)*(x4**2))/((9.84*(x2+x3+x4))**2+(120.11*(x2+x3+x4)+x2*(x3+x4))**2) ==50) # equality constraint
#objective
m.Obj((x4*(96.79*(x2+x3)*(x2+x3+x4)+(120.109*x3+ x2*(120.11+x3))*(120.11*(x3+x4)+x2*(120.11+x3+x4))))/(96.9*(x2+x3+x4)**2+(120.11*(x3+x4)+x2*(120.11+x3+x4))**2))
#m.options.IMODE=3
m.options.SOLVER=3
#Solve
#m.solve(disp=False)
m.solve()
print('x2 =' ,x2.value,'x3 =',x3.value,'x4 =',x4.value)
Вот схема анализируемой цепи (jX1 == 0),
и полученные уравнения:
ReZinpi=(R1 X2^2 X4^2)/(R1^2 (X2 + X3 + X4)^2 + ((X3 + X4) XL + X2 (X3 + X4 + XL))^2)
ImZinpi = (X4 (R1^2 (X2 + X3) (X2 + X3 + X4) +
(X3 XL + X2 (X3 + XL)) ((X3 + X4) XL + X2 (X3 + X4 + XL))))
/(R1^2 (X2 + X3 + X4)^2 + ((X3 + X4) XL + X2 (X3 + X4 + XL))^2)
Qpi= -((R1 X2^2 X4)/(R1^2 (X2 + X3) (X2 + X3 + X4) +
(X3 XL + X2 (X3 + XL)) ((X3 + X4) XL + X2 (X3 + X4 + XL))))
Неправильно ли этот подход к оптимизации значений компонентов в моей сети сопоставления Пи для максимального совпадения (минимизации фазы) при достижении высокого Q?