Вы находитесь на странице: 1из 10

Московский государственный технический университет

Факультет ИУ «Информатика и системы управления»


Кафедра ИУ-1 «Системы автоматического управления»

ОТЧЕТ
по лабораторной работе № 2

«ПРЯМЫЕ МЕТОДЫ ОПТИМИЗАЦИИ И РЕШЕНИЕ


КРАЕВЫХ ЗАДАЧ»

по дисциплине
«Оптимальное управление детерминированными процессами»

Выполнила: Кудлак В.В.


Группа: ИУ1-72
Вариант: 11
Проверил: Деменков Н.П.
Цель работы
Овладеть навыками и умением по построению оптимальных систем на основе прямых
методов оптимизации и решению краевых задач при синтезе оптимальных систем на основе
классического вариационного исчисления и принципа максимума Л.С. Понтрягина.

Общий порядок выполнения лабораторной работы


1. Для заданного объекта управления решить задачу оптимизации, используя любую
из стандартных процедур оптимизации из Optimization Toolbox (fgoalattain,
fminimax, fmincon, fminsearch и др.).
2. Сравнить с результатами, полученными при использовании методов Брайсона или
Эллерта при решении задачи АКОР в лабораторной работе №1 и сделать выводы.
3. Используя стандартные процедуры интегрирования дифференциальных уравнений
(ode113, ode45 и др), решить задачу выведения космического аппарата (КА) на кру-
говую орбиту.
4. Решить, используя метод стрельбы и функцию MATLAB bvp4c или bvp5c краевую
задачу.

Подготовка к выполнению лабораторной работы


Параметры объекта управления: k  55,   0.2, T  0.2.
k 55
W 
T s  2 Ts  1 0.04s  0.08s  1
2 2 2

Решение задачи оптимизации


Качество работы системы определяется расположением на комплексной плоскости
собственных чисел замкнутой системы x   A  BKC  x .

Поставим следующую оптимизационную задачу. При заданном диапазоне изменения


элементов матрицы K от 4 до 4 подобрать эти элементы таким образом, чтобы соб-
ственные числа замкнутой системы равнялись  1  5i;  1  5i  .

Код программы
% Пункт 1

k = 55; ksi = 0.2; T = 0.2;


W = tf(k, [T^2, 2*T*ksi ,1]);
sys = ss(W);
[A,B,C,D] = ssdata(sys);

K0 = [1 1]; % Задание начальных условий


goal = [-1-5i; -1+5i]; % Задание вектора целей
weight = abs(goal);% Задание вектора весовых коэффициентов
lb = -4*ones(size(K0)); % Нижние границы элементов матрицы К
ub = 4*ones(size(K0)); % Верхние границы элементов матрицы К

% Установка опции вывода информации


options = optimset('Display','iter');
options = optimset(options,'GoalsExactAchieve',3);
eigfun = @(K)sort(eig(A - B*K));
[K,fval,attainfactor,exitflag,output,lambda] = ...
fgoalattain(eigfun,K0,goal,weight,[ ],[ ],[ ],[ ],lb,ub,[
],options);

Результаты вычислений

Конечное значение матрицы K


K   0.0098, 0.1502  .

Итоговые значения собственных чисел eigfun(K):


 1.0098  5.0182i,  1.0098  5.0182i 

Итоговое значение коэффициента достижения цели attainfactor: 2.1824 1018


Промоделируем поведение замкнутой системы при начальных условиях x0

Код программы
x0 = [1 1];
[Times, xvals] = ode45(@(u,x)((A - B*K)*x),[0,30],x0);
plot(Times,xvals)
legend('x1(t)','x2(t)','Location','best')
xlabel('t');
ylabel('x(t)');
grid on

Рис. 1. График поведения замкнутой системы


Сравним полученные результаты с результатами лабораторной работы № 1, в которой
были решены задачи АКОР методами Брайсона и Эллерта. Переходные процессы трех си-
стем имеют одинаковый характер. Согласно графику, последняя система обладает хорошим
быстродействием. В результате оптимизации, выполненных методами Эллерта и Брайсона,
можно прийти к выводу, что показатели быстродействия значительно уступают новому.
Также следует отметить, что полученные значения собственных чисел практически
совпадают с заданными.
Решение задачи выведения космического аппарата (КА) на круго-
вую орбиту
dVx dVy dX dY
 a cos v,  a sin v  g ,  Vx ,  Vy ,
dt dt dt dt
где V x и V y – горизонтальная и вертикальная составляющие скорости V , a  P / m – уско-

рение за счет силы тяги, m  m0  mt – масса КА, v – угол между вектором горизонтальной

скорости и направлением ускорения a, m – секундный расход топлива, g  9,81 м / с2 –

ускорение свободного падения,   3,98602 1014 м3 / с2 – гравитационная постоянная


Земли.
Управление меняется по закону: tg  tg0  Ct , где С определяется из краевых усло-

вий, а область допустимых управлений задана условием: cos2 v  sin 2 v  1 .


Исходные данные:
m0  270 т, mкон  27 т, m  320 кг/с, P  2400 кН.

Рис. 2. движения КА в плоскости выведения OX стYст


Условием окончания процесса интегрирования является одновременное выполнение
краевых условий:


Ф1  Vy (tk )  0, Ф 2  Vx (tk )   0.
r (tk )

Код программы
% Пункт 2

m0 = 270e+3;
mk = 27;
dm = 320;
P = 2.4e+6;
g = 9.81;

x0 = [0; 0; 0; 0]; % начальные условия


N0 = pi/180*55;
tk = (m0 - mk)/dm; % время достижения массы mk
ts = 0 : 0.1 : tk;

dxdt = @(t,x)[P/(m0-dm*t)*cos(atan(tan(N0) -
0.952*tan(N0)/tk*t)); ...
P/(m0-dm*t)*sin(atan(tan(N0) - 0.952*tan(N0)/tk*t))-g; x(1);
x(2)];
options = odeset('Events',@events);
[t,x] = ode45(dxdt,ts,x0,options);

figure
plot(t,x(:,1),t,x(:,2))
grid on
xlabel('t, s')
ylabel('V, m/s')
legend('V_{x}(t)','V_{y}(t)')
figure
plot(t,x(:,3),t,x(:,4))
grid on
xlabel('t, s')
ylabel('S, m')
legend('x(t)','y(t)')

function [value1, value2, isterminal, direction] = events(t, x)


mu = 3.98602e+14;
R = 6356863;
value1 = x(2);
value2 = x(1) - sqrt(mu/(R+sqrt(x(3)^2+x(4)^2)));
isterminal = 1;
direction = -1;
end

Результаты выполнения программы представлены на рисунках 4 и 5.

Рис. 4. График изменения составляющих скорости КА Vx , Vy

Рис. 5. График изменения координат КА x, y


В результате выполнения программы были получены графики зависимости координат
КА. Согласно последним, можно предположить, что КА набрал необходимую скорость и
успешно вышел на орбиту. Для этого программа интегрировала систему дифференциаль-
ных уравнений до тех пор, пока не было совершено одно из двух событий.

Решение краевой задачи методом стрельбы


Задача представлена следующим уравнением:
y  xy  y  2 x; y(0)  1, y(1)  0, на отрезке  0,1

Представим данную задачу в виде системы уравнений первого порядка:


 y1  y2 ,

 y2   y1  xy2  2 x,
 y (0)  1, y (1)  0.
 1 1

Далее сведем данную задачу к задаче Коши, введя параметр  , равный неизвестному
значению y2  0  .

 y1  y2 ,

 y2   y1  xy2  2 x,
 y (0)  1, y (0)   .
 1 2

Решив полученную систему с фиксированным параметром  , мы получим значение


y2 1 , отличающееся от истинного.

Для корректировки параметра  рассчитаем его новое значение по формуле


y1 1calc  y1 1
 new  old  .
y2 1calc

Здесь y1 1calc – полученное в результате расчета значение y1 1 . Затем снова ре-

шаем систему дифференциальных уравнений и т.д.


Процесс расчета продолжается до тех пор, пока не будет выполнено условие:
 new   old   , где  – заранее заданная точность расчета.

Для того чтобы найти  , при котором выполнено граничное условие в точке x  1 ,
удобно ввести еще два уравнения, продифференцировав исходную систему по параметру
 и введя еще две дополнительные переменные
y1 y2
y3  , y4  .
 
Код программы
% Пункт 3
boundary
function boundary
% Задание начальных условий
y = zeros(2,1);
n = 0;
ips = 1e-8;
alpha = -2;
alpha_old = -1.5;
% Условие окончания процесса интегрирования
while abs(alpha-alpha_old) > ips
y0 = [1 alpha];
x0 = 0;
xk = 1;
y1end = 0;
% Интегрирование
[x,y] = ode45(@task,[x0 xk],y0);
y1 = y(length(y),1);
y2 = y(length(y),2);
y1endCalc = y1;
y2endCalc = y2;
alpha_old = alpha;
alpha = alpha_old-(y1endCalc-y1end)/y2endCalc;
n = n + 1;
end

% Печать
figure
hold on
plot(x,y(:,1),'-r',x,y(:,2),'-g')
grid on
% Вычисление правых частей
function dy = task(x,y)
dy = [y(2); -y(1)-x*y(2)+2*x];
end
end

Результаты представлены на рисунке 6.


Рис. 6. График решения системы, найденного методом стрельбы
Далее решим ту же задачу с помощью стандартной функции MATLAB bvp4c.
Код программы
xinit = linspace(0,1,20);
yinit = [1 0];
solinit = bvpinit(xinit,yinit);
sol = bvp4c(@task,@border,solinit);% решение задачи

plot(sol.x,sol.y(1,:),sol.x,sol.y(2,:));
xlabel('x');
ylabel('y');
legend('y_1','y_2','Location','Best');
grid on;

% Вычисление правых частей


function dy = task(x,y)
dy = [y(2); -y(1) - x*y(2) + 2*x];
end

% Граничные условия
function out = border(xa,xb)
out=[xa(1) - 1, xb(1) - 0];
end
Результаты работы программы представлены на рисунке 7.
Рис. 7. График решения системы, найденного с помощью встроенной функции MATLAB
Можно заметить, что в результате получили аналогичный график. Однако, процесс
получения решения значительно проще, в отличие от полуаналитического метода стрельбы.
Выводы

В данной лабораторной работе было решено несколько задач. Первая связана с опти-
мизацией системы. Для заданного объекта управления был синтезирован оптимальный ре-
гулятор с помощью стандартной процедуры MATLAB fgoalattain. Для этого необходимо
было задать вектор цели. Результаты показали, что данный метод синтеза позволил полу-
чить систему с лучшим параметром быстродействия по сравнению с методами Эллерта и
Брайсона, используемых в предыдущей лабораторной работе.
Следующая задача связана с выведением космического аппарата на круговую орбиту.
Особенность этой задачи заключается в учете параметров, останавливающих процесс инте-
грирования. В результате программа интегрировала систему дифференциальных уравнений
до тех пор, пока не было выполнено одно из двух событий.
Последней рассмотренной задачей было исследование метода стрельбы и встроенных
функций MATLAB для решения краевых задач. При анализе графиков полученных реше-
ний стало ясно, что оба метода дают идентичные результаты, однако использование стан-
дартных процедур MATLAB значительно упростило процесс программирования.

Вам также может понравиться