PID 控制量计算
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
PID是非常常见的控制方法,通过目标与实际的偏差计算控制量。此题中,控制器每个周期执行一次简化的离散 PID 计算。
初始累计偏差 sum = 0,上一周期偏差 last = 0。每个周期严格按以下顺序处理:
- 计算当前偏差:
error = target - actual。 - 更新累计偏差:
sum = sum + error,并将其限制在[-sumLimit, sumLimit]内。 - 计算原始控制量:
output = Kp * error + Ki * sum + Kd * (error - last)
- 将控制量限制在
[-outLimit, outLimit]内,输出。 - 更新
last = error。
将一个数限制在 [L, R] 内,指小于 L 时取 L,大于 R 时取 R,否则保持原值。
本题所有计算均使用整数,不涉及采样时间系数。输出限幅不再影响累计偏差。
输入格式
第一行输入六个整数 n Kp Ki Kd sumLimit outLimit。
接下来 n 行,每行输入两个整数 target actual。
输出格式
输出 n 行,每行一个整数,表示该周期的最终控制量。
样例
4 2 1 1 5 10
10 7
10 9
10 12
10 6
10
4
-5
10
样例说明
四个周期的偏差为 3、1、-2、4,限幅后的累计偏差为 3、4、2、5。
原始控制量分别为 12、4、-5、19,再进行输出限幅。
数据范围与限制
1 <= n <= 10000;0 <= Kp, Ki, Kd <= 100;1 <= sumLimit, outLimit <= 1000000;-10000 <= target, actual <= 10000;- 时间限制:1 秒;
- 空间限制:64 MiB。
ASC2026考核C语言训练题二(AC这10道提前知道51考核任务)
- 状态
- 已结束
- 规则
- ACM/ICPC
- 题目
- 10
- 开始于
- 2026-10-1 0:00
- 结束于
- 2026-10-6 0:00
- 持续时间
- 120 小时
- 主持人
- 参赛人数
- 121