Optimization Objective

Suppose that the control signal u(t) is set as proportional to the output y(t):

u(t)=Ky(t)

for some matrix K.

This means that the evolution of the system x(t) is:

dxdt=Ax(t)+BKCx(t)=(A+BKC)x(t).

The object of the optimization is to design K to have the following two properties:

1. The real parts of the eigenvalues of (A+BKC) are smaller than [–5, –3, –1]. (This is called pole placement in the control literature.)

2. abs(K) <= 4 (each element of K is between -4 and 4)

In order to solve the optimization, first set the multiobjective goals:

goal = [-5, -3, -1];

Set the weights equal to the goals to ensure same percentage under- or over-attainment in the goals.

weight = abs(goal);

Initialize the output feedback controller

K0 = [ -1 -1; -1 -1];

Set upper and lower bounds on the controller

lb = repmat(-4,size(K0))

lb = 2×2
-4 -4
-4 -4

ub = repmat(4,size(K0))

ub = 2×2
4 4
4 4

Set optimization display parameter to give output at each iteration:

options = optimoptions('fgoalattain','Display','iter');

Create a vector-valued function eigfun that returns the eigenvalues of the closed loop system. This function requires additional parameters (namely, the matrices A, B, and C); the most convenient way to pass these is through an anonymous function:

The eigenvalues of the closed loop system are in eigfun(K) as follows: (they are also held in output fval)

eigfun(K)

ans = 3×1
-6.9313
-4.1588
-1.4099

The attainment factor indicates the level of goal achievement. A negative attainment factor indicates over-achievement, positive indicates under-achievement. The value attainfactor we obtained in this run indicates that the objectives have been over-achieved by almost 40 percent:

attainfactor

attainfactor = -0.3863

Evolution of System Via Solution to ODE

Here is how the system x(t) evolves from time 0 to time 4, using the calculated feedback matrix K, starting from the point x(0) = [1;1;1].

Set Goals To Be Achieved Exactly

Suppose we now require the eigenvalues to be as near as possible to the goal values, [–5, –3, –1]. Set options.EqualityGoalCount to the number of objectives that should be as near as possible to the goals (i.e., do not try to over-achieve):

This time the eigenvalues of the closed loop system, which are also held in output fval, are as follows:

eigfun(K)

ans = 3×1
-5.0000
-3.0000
-1.0000

The attainment factor is the level of goal achievement. A negative attainment factor indicates over-achievement, positive indicates under-achievement. The low attainfactor obtained indicates that the eigenvalues have almost exactly met the goals:

attainfactor

attainfactor = -6.7825e-22

Evolution of New System Via Solution to ODE

Here is how the system x(t) evolves from time 0 to time 4, using the new calculated feedback matrix K, starting from the point x(0) = [1;1;1].

This website uses cookies to improve your user experience, personalize content and ads, and analyze website traffic. By continuing to use this website, you consent to our use of cookies. Please see our Privacy Policy to learn more about cookies and how to change your settings.