How to solve an optimization problem with stability constraints using 'fmincon'?

5 vues (au cours des 30 derniers jours)
camenzind
camenzind le 1 Avr 2019
Modifié(e) : Matt J le 2 Avr 2019
Hi,
Let us say that a plant model of the following form is given:
The output of the model (y) is its position (x) and velocity (v).
Using this output, I am going to construct a PI controller (u) of the following form:
Then, the task is to find the optimal gains () and () such that the following quantity is maximized:
Without any constraints, this problem can be solve easily using the MATLAB command 'fminsearch' or 'fminunc.'
But I'd like to add a stability constraint such that the closed-loop system with PI control is always stable.
Mathematically, it is realized by constraining the eigenvalues of the closed-loop system in the left-hand plane.
But I'm wondering how to add this constraint using MATLAB commands.
Any comments will be greatly appreciated.
Thank you.

Réponses (2)

Alan Weiss
Alan Weiss le 2 Avr 2019
Perhaps this example will give you some ideas. It is written as a multiobjective problem, but you can adapt the code easily to single-objective minimization.
Alan Weiss
MATLAB mathematical toolbox documentation
  2 commentaires
Stephan
Stephan le 2 Avr 2019

Alan could you please explain the reason for the warning the OP gets, when trying to use eig? I could not find something in the documentation so far.

Alan Weiss
Alan Weiss le 2 Avr 2019
I have no idea. The link I gave was to an optimization example using eig, so I know that it can work, and the warning the OP referred to must be for something else.
Alan Weiss
MATLAB mathematical toolbox documentation

Connectez-vous pour commenter.


Matt J
Matt J le 2 Avr 2019
Modifié(e) : Matt J le 2 Avr 2019
Since it isn't clear that such an eigenvalue constraint is smooth, I would use ga instead of fmincon. This is closer to what you were doing with fminsearch, but with ga you can specify a nonlinear constraint function like the following,
function [c,ceq]=nonlcon(x)
ceq=[];
c=max(real(eig(x)));
end

Catégories

En savoir plus sur Adaptive Control dans Help Center et File Exchange

Produits


Version

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by