2021年3月7日星期日

How to deal with the transversality condition (adjoint variables Lamda) in Python Gekko Optimization?

I have an optimal control problem that I am trying to simulate with GEKKO in Python

m = GEKKO()    nt = 501  m.time = np.linspace(0,500,nt)    # Variables  u = m.MV(value=0,lb=0,ub=1)  u.STATUS = 1  H = m.Var(value=0.1,lb=0)  C = m.Var(value=0.1,lb=0)  M = m.Var(value=0.8,lb=0)  D = m.Var(value=0.1,lb=0)  I = m.Var(value=0.1,lb=0)  a0 = m.Var(value=10**-4)  b0 = m.Var(value=10**-1)  c0 = m.Var(value=0.005)  f0 = m.Var(value=1)  a1 = m.Var(value=10**-4)  b1 = m.Var(value=10**-2)  c1 = m.Var(value=0.005)  f1 = m.Var(value=1)  b2 = m.Var(value=0.02)  d2 = m.Var(value=0.1)  f2 = m.Var(value=1)  d3 = m.Var(value=0.1)  b4 = m.Var(value=10**-2)  c4 = m.Var(value=10**-2)  e4 = m.Var(value=10**-7)    p = np.zeros(nt)  p[-1] = 1  tf = m.Param(value=p)  La1 = m.Param()  La2 = m.Param()  La3 = m.Param()  La4 = m.Param()  La5 = m.Param()    # Control Variables Equations  m.Equation(H.dt()==a0-c0*H+b0*D*H*(1-H/f0))  m.Equation(C.dt()==a1-c1*C+b1*I*(M+D)*C*(1-C/f1))  m.Equation(M.dt()==b2*M*(1-M/f2)-d2*M*C)  m.Equation(D.dt()==-d3*D*C+u)  m.Equation(I.dt()==b4*D*H-e4*I*C+c4*I)    # Adjoint Variables Equations  m.Equation(La1.dt()==(-c0+b0*D-2*D*b0*H/f0)*La1+b4*D*La5)  m.Equation(La2.dt()==(-c1+b1*I*(M+D)*(1-2*C/f1))*La2-d2*M*La3-d3*D*La4-e4*I*La5)  m.Equation(La3.dt()==-1+b1*I*C*(1-C/f1)*La2+(b2*(1-2*M/f1)-d2*C)*La3)  m.Equation(La4.dt()==b1*H*(1-H/f0)*La1+b1*I*C*(1-C/f1)*La2-d3*C*La4+b4*H*La5)  m.Equation(La5.dt()==b1*(M+D)*C*(1-C/f1)*La2+(-e4*C-c4)*La5)  m.Equation(La1*tf==0)  m.Equation(La2*tf==0)  m.Equation(La3*tf==1)  m.Equation(La4*tf==0)  m.Equation(La5*tf==0)               # Objective Function  m.Obj(tf*M+0.5*m.integral(u**2))    m.options.IMODE=6  m.solve()  

The problem I am studying is an immunotherapy project realized by dendritic cell injection

I really can't figure out how to derive the adjoint variables equations and the final time conditions for the problem. Feel free to give me any advice, Plz.

https://stackoverflow.com/questions/66524165/how-to-deal-with-the-transversality-condition-adjoint-variables-lamda-in-pytho March 08, 2021 at 12:06PM

没有评论:

发表评论