📜  比例积分 (PI) 控制器和 PI 控制器增强 (PIE) 队列规则(1)

📅  最后修改于: 2023-12-03 15:26:54.110000             🧑  作者: Mango

比例积分 (PI) 控制器和 PI 控制器增强 (PIE) 队列规则

简介

比例积分 (PI) 控制器和 PI 控制器增强 (PIE) 队列规则是控制系统中经常使用的两个调节器。它们的作用是通过调节控制系统中的输出来使其达到期望的设定值。比例积分 (PI) 控制器是一种基本的控制器设计,通常用于在系统中处理硬件故障和软件错误。PIE 队列规则是一种更高级的控制器算法,它可以在比例积分 (PI) 控制器的基础上增加模糊逻辑来优化系统的响应。

比例积分 (PI) 控制器

比例积分 (PI) 控制器是一种经典的控制器算法,它包含比例项和积分项两个部分。比例项是根据误差信号的大小来控制输出信号的变化,而积分项则是根据误差信号的历史数值来生成当前的输出信号。比例积分 (PI) 控制器应用广泛,特别是在基于电子、机械和化工方面的控制系统中,因为它能够平衡系统性能和稳定性。

以下是一个简单的比例积分 (PI) 控制器的实现例子:

def pi_controller(kp, ki, error, integral):
    # 比例项
    proportional = kp * error
    # 积分项
    integral = integral + ki * error
    # 输出
    output = proportional + integral
    return output, integral

在该例子中,变量 kpki 分别代表比例项系数和积分项系数。error 表示当前误差,而 integral 表示误差的历史积分。函数返回 output 表示当前控制器的输出,和更新后的 integral 值。

PI 控制器增强 (PIE) 队列规则

PIE 队列规则是一种基于模糊逻辑的控制器算法,它是在比例积分 (PI) 控制器的基础上增加模糊逻辑优化系统的响应。它能够改善系统对于噪声和外部扰动的鲁棒性,并且能够适用于多种不确定性的系统中。

以下是一个简单的 PI 控制器增强 (PIE) 队列规则的实现例子:

def pie_controller(kp, ki, error, integral):
    # 定义模糊边界
    error_boundary = [2.0, 1.5, 1.0, 0.5, 0.0, -0.5, -1.0, -1.5, -2.0]
    integral_boundary = [2.0, 1.5, 1.0, 0.5, 0.0, -0.5, -1.0, -1.5, -2.0]
    output_boundary = [2.0, 1.5, 1.0, 0.5, 0.0, -0.5, -1.0, -1.5, -2.0]
    
    # 模糊规则表
    fuzzy_table = [
        [-4, -4, -2, 0, 0, 2, 4, 4, 4],
        [-4, -2, -2, 0, 0, 2, 2, 4, 4],
        [-2, -2, -1, 0, 0, 1, 2, 2, 4],
        [0, 0, 0, 0, 0, 0, 0, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 0, 0],
        [4, 2, 2, 0, 0, -2, -2, -4, -4],
        [4, 4, 2, 0, 0, -2, -4, -4, -4],
        [4, 4, 4, 0, 0, -4, -4, -4, -4],
        [4, 4, 4, 0, 0, -4, -4, -4, -4]
    ]
    
    # 计算当前误差值和积分值所在的区域
    error_index = get_index(error_boundary, error)
    integral_index = get_index(integral_boundary, integral)
    
    # 根据模糊规则表计算输出边界
    v = fuzzy_table[integral_index][error_index]
    
    # 根据输出边界计算输出值
    output_index = get_index(output_boundary, v)
    output = output_boundary[output_index]
    
    # 更新积分值
    integral = integral + ki * error
    
    return output, integral


def get_index(boundary, x):
    """获取 x 所属的模糊区域索引"""
    for i, b1 in enumerate(boundary[:-1]):
        b2 = boundary[i+1]
        if b1 <= x <= b2:
            return i
    return len(boundary) - 2

在该例子中,kpki 分别为比例项系数和积分项系数,error 表示当前误差,而 integral 表示误差的历史积分。实现中,我们首先定义了模糊边界,在 get_index 方法中计算当前误差和积分所处的模糊区域索引,然后根据模糊规则表计算输出边界,最后再通过边界计算输出值。在计算输出后,我们更新了积分项并返回了新的误差积分值。

总结

比例积分 (PI) 控制器和 PI 控制器增强 (PIE) 队列规则是控制系统中常用的两种调节器。比例积分 (PI) 控制器是一种简单而有效的控制器,它能够多种不确定性系统中使用。而 PI 控制器增强 (PIE) 队列规则则在比例积分 (PI) 控制器的基础上增加了模糊逻辑算法,能够提高系统对于噪声和扰动的鲁棒性,适用于更加复杂的控制系统。