From my internet research, it seems there's no systematic way of tuning the design parameters for the LQR controller. I have found Bryson’s rule as an initialization. However I don't know how to proceed from this point besides trial and error or grid search. Ideally I want to tune the parameters such that the settling time for specific state variables are below a threshold. Additionally I want to make constraints on the sensitivity function, such that disturbances up to a specific frequency are attenuated. Is there a recommended way to tune my parameters such that requirements can be fulfilled ?
-
$\begingroup$ Are you sure you want to use LQR? Namely, the constraints you mention are I think difficult to tune for with LQR. Instead, maybe something like H-infinity might be better suited, especially for the second constraint. $\endgroup$– fibonaticSep 5, 2021 at 8:59
1 Answer
There are many ways. But, all of them are either trivial or subjective. The most fair way I have found so far is to use Interactive Genetic Algorithm (IGA). IGA uses the human subjectivity to lead the GA optimization. Here is a research performing all you need for Model Predictive Control (MPC) [the same as LQR but respecting constraints too]. In your case, the constraints are offline. In this work, a multi-objective GA is used and applied constraints on the results. Then I got a huge pareto-front and applied an IGA to get the best result out of them which looks appealing to a human. You can directly apply IGA without a multi-objective GA too. But, a GA before IGA does a great filtering.
If you don't have access to IEEE, follow the chapter 4 of my thesis (sorry for the goatic font. I ran out of the symbols).
You can apply constraints either during optimization (at a GA before IGA) or in real-time (MPC instead of LQR). In my case, both of the constraints are applied.
-
$\begingroup$ I am not sure if the explanations have been clear. Please ask if not. $\endgroup$– ArashApr 19, 2019 at 3:56
-
$\begingroup$ Could you list these other methods? Advertising your own developed method is fine, but it seems maybe a little biased :p $\endgroup$ Jan 14, 2020 at 17:27
-
$\begingroup$ @morbo, one way which is not a good way is to set every weight equal to one divided by the maximum allowed value. Another way is to use a fuzzy decision making. Although, using IGA is the best. $\endgroup$– ArashJan 17, 2020 at 10:44