Python 将PID控制器添加到odeint集成中

Python 将PID控制器添加到odeint集成中,python,scipy,integration,pid,odeint,Python,Scipy,Integration,Pid,Odeint,我有一个积分,我想通过添加一个p控制器来控制输入 import numpy as np import matplotlib.pyplot as plt from scipy.integrate import odeint xs = [] yd = [] def dY(y, x): a = 0.001 yin = 1 C = 0.01 N = 1 dC = C/N b1 = 0 y_diff = -np.copy(y) y_dif

我有一个积分,我想通过添加一个p控制器来控制输入

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

xs = []
yd = []

def dY(y, x):
    a = 0.001
    yin = 1
    C = 0.01
    N = 1
    dC = C/N
    b1 = 0
    y_diff = -np.copy(y)
    y_diff[0] += yin
    y_diff[1:] += y[:-1]
    xs.append(x)
    yd.append(y_diff)
    return (a/dC)*y_diff+b1*dC

x = np.linspace(0,20,1000)
y0 = np.zeros(4)
res = odeint(dY, y0, x)

plt.plot(x,res, '-')

plt.gca().set_prop_cycle(plt.rcParams['axes.prop_cycle'])
plt.plot(np.array(xs),np.array(yd), '-.')

plt.show()
y_in是一个变量,我想通过p/PI控制器控制它,以达到某个设定点。我以不同的方式看待它,但我真的不知道从哪里开始实现控制器

我熟悉PID控制器的概念和所有相关方程,但是在使用ODEINT的情况下,这对我来说是一件全新的事情


希望有人能帮我

“我熟悉PID控制器和所有相关方程的概念……”因此,当你在系统中添加一个控制器时,你会得到一个更大的微分方程系统。要使用
odeint
,您必须将整个系统(即“工厂”加控制器)编写为一个微分方程系统。@WarrenWeckesser以及如何将当前代码转换为一个微分方程系统,因为老实说,这样的实现对我来说完全是模糊的。