I need you guys to suggest me a problem that requires to change PID coefficients in different times. Lets say every 1 minutes the environment should change and readjust the PID’s parameters. Note that my knowledge about PID is limited. So just suggest me a problem which can be simulated in simulink or gazebo. Then I am going to use my algorithm to adapt the new environment to find the new parameters for the PID. Note that my algorithm is written with C++ and it is an optimization algorithm. It works very well on benchmark problems but for my graduation I have to test on a dynamic real world problem.

The structure will be like this: system will start with some random parameters and then the error will be parsed by my algorithm, and it will produce new parameters for the PID. It will continue with these parameters until the next environmental change. And all this will be in a infinite loop. I hope I could explain my problem. Thanks in advance.


Look for highly nonlinear problems where a single PID is not suitable to work at its best within the whole operational range thus requiring multiple controllers.

Here's an example in Simulink.

In your case, instead of having a repertoire of PID controllers already tuned up to operate in different points, you might consider sticking to a single PID whose gains you aim to modify as the plant evolves over time.

Another typical example where adapting the PID is fundamental is when the plant under control undergoes wear and tear. And if your plant is the tire of a racing car and your controller is responsible for regulating the slip in a turn, you would certainly need to account for varying characteristics of your tire model throughout the race.

Here's a good reading on this argument.

| improve this answer | |
  • $\begingroup$ Thanks for answer but the first link is not working. I get “page does not exist” warning. Can you check it? $\endgroup$ – WhoCares Mar 15 '19 at 20:11
  • $\begingroup$ I've fixed the typo in the link. $\endgroup$ – Ugo Pattacini Mar 15 '19 at 22:01

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