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

조회 수: 4 (최근 30일)
camenzind
camenzind 2019년 4월 1일
편집: Matt J 2019년 4월 2일
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.

답변 (2개)

Alan Weiss
Alan Weiss 2019년 4월 2일
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
Stephan
Stephan 2019년 4월 2일

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 2019년 4월 2일
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

댓글을 달려면 로그인하십시오.


Matt J
Matt J 2019년 4월 2일
편집: Matt J 2019년 4월 2일
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

카테고리

Help CenterFile Exchange에서 Adaptive Control에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by