问题描述
我正在尝试使用优化来解决天线匹配问题,在该问题中,我想最小化最终匹配阻抗的相位(通过pi匹配网络),例如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)
以及得出的方程式:
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))))
这种方法是否可以优化pi匹配网络中的分量值,从而在达到高Q值的同时最大化匹配(最小化相位)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)