I'm trying to use a PID to stabilize a system described from the following difference equation:

$$y_{k+1} = a y_k \sqrt{(1-y_k)}~~~ + b y_{k-1} ~+ c u_k$$

Can I use Ziegler-Nichols's rules to find PID parameters in this situation?

To be more precise. My system is an Apache Http Server, in particular I'm trying to model how the CPU load can change in function of KeepAlive parameter. When KeepAlive grows the cpu load should decrease.


$$cpu_{k+1} = a \cdot cpu_k \sqrt{(1-cpu_k)}~~~ + b \cdot cpu_{k-1} ~+ c \cdot keepAlive_k$$

Obviously the Cpu load is a scalar $\in [0,1]$ , $keepAlive$ is just a time and the $a,b,c$ parameters are known to me through experimental data and multiple regression on them.

  • 1
    $\begingroup$ Given the extra information, I'm starting to wonder what this actually has to do with robotics. In fact, you may have better luck elsewhere. $\endgroup$
    – Mark Booth
    Commented Jun 1, 2013 at 22:11
  • $\begingroup$ I really only see this as being amenable to control by a PID controller if both $a$ and $b$ are much smaller than one -- otherwise the dynamics of the CPU load will vary greatly by the value of $cpu$, and may even go unstable. You have not chosen an easy nut to crack in this problem. $\endgroup$
    – TimWescott
    Commented Jun 2, 2013 at 19:28

1 Answer 1


First, you haven't provided enough information. Your equation is nonlinear, which means that the behavior of the system as described depends not just on the coefficients of the difference equation, but on the range of values that $y$ can take on. From the looks of things, the closer that $y$ is restricted to 0, the more you can treat the whole thing like a linear system and just apply PID control to it.

Second, Ziegler-Nichols just isn't indicated here. Z-N was invented as an ad-hoc tuning method for industrial plants with unknown characteristics. It guarantees neither stability nor performance of the result -- and assuming that you know the values of $a$, $b$, and $c$, you have a plant with known characteristics!!!

Even if the plant characteristics are known, Z-N is really only a good way to arrive at a starting point for tuning. Z-N tends to result in an underdamped system, and as I mentioned, it guarantees neither stability nor performance.

In systems that are amenable, I vastly prefer to do swept-sine measurements (Measuring Frequency Response). If you don't like the buzzing and shrieking noises, and the uninitiated diving for cover behind lab equipment, you can use some sort of a system identification based on a step response instead -- but in my experience with servo systems, a frequency response-based design is superior when you need to go from measured values.

Whatever you do, you want to account for the effect that the variation in the value of $y$ is going to have on your system. If the derivative $$\frac{d}{dy}y\,\sqrt{1-y}$$ varies by more than a few percent, then you need to do your design to accommodate the differing systems characteristics. If that derivative varies by a factor of two or more, then you need to consider the possibility of some sort of a nonlinear controller, however difficult and perverted your design may end up being, or you need to just pull in your horns and accept that you're going to have a severely detuned system for most ranges of $y$.

See Applied Control Theory for Embedded Systems for more information.

  • $\begingroup$ Hi, I just updated my question adding further details $\endgroup$
    – Edge7
    Commented May 31, 2013 at 21:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.