- •Министерство образования и науки рф Санкт-Петербургский государственный электротехнический университет «лэти» им. В.И. Ульянова (Ленина)» (сПбГэту)
- •Курсовая работа "Проектирование оптимальных систем управления"
- •Описание объекта управления
- •Выбор метода решения оптимизационной задачи
- •1) Метод, основанный на теореме об n интервалах
- •Алгоритм программы поиска моментов переключения
- •Текст программы поиска моментов переключения
- •2) Метод параметрической оптимизации линейного закона управления
- •Алгоритм программы поиска параметров линейного закона управления
- •3) Минимизация интегрального квадратичного функционала
- •Анализ чувствительности полученных различными методами алгоритмов управления к изменению параметров объекта управления
- •Метод, основанный на теореме об n интервалах
- •Метод параметрической оптимизации линейного закона управления
- •Метод минимизации интегрального квадратичного функционала
Выбор метода решения оптимизационной задачи
В данной работе будут применены следующие варианты решения оптимизационной задачи:
Метод, основанный на теореме об N интервалах;
Метод параметрической оптимизации линейного закона управления;
Минимизация интегрального квадратичного функционала.
1) Метод, основанный на теореме об n интервалах
Метод,
основанный на теореме об N
интервалах, заключается в определении
N-1
момента переключения знака управляющего
воздействия и момента выключения
управления, таких, которые обеспечивают
перевод судна из начального состояния
,
,
в конечное состояние
,
,
к моменту времени выключения управления,
где N
- порядок дифференциального уравнения
(или системы уравнений), описывающего
объект управления.
В рассматриваемом случае теорема об N интервалах применима, т.к. система уравнений, описывающих судно, имеет вещественные корни.
Задачу определения моментов переключения и момента выключения предлагается решать поисковым методом, используя функцию FMINSEARCH из пакета MATLAB или графическим методом с использованием построения фазовых траекторий в обратном времени.
При выполнении расчетов необходимо учесть, что поисковые методы не могут обеспечить точное решение за конечное количество шагов. В связи с этим целесообразно смягчить поставленную задачу, потребовав минимизировать отклонение состояния объекта от требуемого в момент выключения управления.
Алгоритм программы поиска моментов переключения
нет
да
Нахождение точек кривой обратного времени
Выбор времени переключения Т1
Нахождение времени переключения Т2
Нахождение переходного процесса при выбранных T1 и Т2
X3≈0?
Вывод графиков
Конец
Расчет осуществляется при помощи трех программ: основной, myfun1 и myfun2. В функции myfun1 производится расчёт фазовой траектории возвращения в 0 в обратном времени, которая затем при помощи программы myfun2 аппроксимируется полиномом 9-го порядка (для того, чтобы иметь значение фазовой траектроии в любой момент времени). Так же обеспечиваются переключения в моменты времени Т1, Т2, Т3. Т1 задаётся при вызове программы, Т2 определяется пересечением фазовой траектории и желаемой траектории, Т3 – при приближении всех переменных состояния к 0. В основной программе при помощи функции fminsearch подбирается оптимальное значение момента переключения Т1, обеспечивающее минимальное время переходного процесса.
Текст программы поиска моментов переключения
Текст основной программы:
global Tg; % время переключений (для минимизации времени переходного процесса требуется два переключения) global Tr; % массив обратного времени
global Yr; % массив координат
% дано:
V0=5.65; % скорость хода судна
L=51; % длина по ватерлинии
% коэффициенты математической модели судна
r21=-0.59;
r31=5.32;
q21=0.94;
q31=-2.41;
s21=-0.29;
s31=-3.4;
fi=V0/L; % нормирующая частота
a11=-r31*fi;
a12=-q31*fi^2;
a21=-r21;
a22=-q21*fi;
b11=-s31*fi^2;
b21=-s21*fi;
dt=0.005; %шаг для метода Эйлера
y1i=0;
y2i=0; %данные для метода Эйлера
Tr=0;
Yr=[0,0];
ur=-35*3.14/180; %управление для обратного времени (перевод градусов в радианы)
for t=dt:dt:5
y1j=y1i+dt*(-(a11*y1i+a12*y2i+b11*ur));
y2j=y2i+dt*(-(a21*y1i+a22*y2i+b21*ur));
Tr=[Tr;t]; % массив обратного времени
Yr=[Yr;y1j y2j]; % массив координат в обратном времени
y1i=y1j;
y2i=y2j;
end
t10=6; % начальная точка для функции fminsearch
T1p=fminsearch('myfun',t10); % находим время первого и второго переключения и записываем в массив Time_Switch [Tp1 Tp2]
dt=0.005; % шаг для метода Эйлера
y1i=0;
y2i=0;
y3i=10*3.14/180;
T2=0;
Y2=[y1i,y2i,y3i];
ug=[-35*3.14/180];
Toff=0;
for t=dt:dt:20
if(t<=Tg(1))
u3=-35*3.14/180;
elseif(t<=abs(Tg(2)))
u3=35*3.14/180;
else
u3=-35*3.14/180;
end
if(t>abs(Tg(2)) && y1j<0.000001)
u3=0;
if(Toff==0)
Toff=t; % считываем только первое значение после перехода переменного состояния в ноль
end
end % отключаем управление после устранения начального значения угла рыскания
y1j=y1i+dt*(a11*y1i+a12*y2i+b11*u3);
y2j=y2i+dt*(a21*y1i+a22*y2i+b21*u3);
y3j=y3i+dt*(y1i);
T2=[T2;t];
Y2=[Y2;y1j y2j y3j];
ug=[ug;u3];
y1i=y1j;
y2i=y2j;
y3i=y3j;
end
[Tg Toff]
figure(1)
plot(T2,Y2(:,1),T2,Y2(:,2),T2,Y2(:,3),T2,ug,'m')
legend('x1','x2','x3','u');
xlabel('t,c');
grid on;
figure(2)
plot(Y2(:,1),Y2(:,2),'r',Yr(:,1),Yr(:,2),'b')
xlabel('x1');
ylabel('x2');
grid on;
Текст функции myfun1:
function n=myfun(Tp1) %подбирает время первого переключения
t20=12; % начальная точка для нахождения второго времени переключения
Tp2=fminsearch(@fun2,t20,[],Tp1); %время второго переключения (исходя из расстояния e, найденного в fun2)
V0=5.65; % скорость хода судна
L=51; % длина по ватерлинии
% коэффициенты математической модели судна
r21=-0.59;
r31=5.32;
q21=0.94*1.3;
q31=-2.41;
s21=-0.29;
s31=-3.4;
fi=V0/L; % нормирующая частота
% вычисления элементов матрицы управления и матрицы входов
a11=-r31*fi;
a12=-q31*fi^2;
a21=-r21;
a22=-q21*fi;
b11=-s31*fi^2;
b21=-s21*fi;
dt=0.005;
% начальные переменные состояния
y1i=0;
y2i=0;
y3i=10*3.14/180;
T=0;
Y=[0,0,0];
for t=dt:dt:20 % используем метод Эйлера для расчета нашей системы (сошлись переменные состояния к нулю или нет)
% при времени переключения Tp1 и подобранном относительно него Tp2
if(t<=Tp1)
u2=-35*3.14/180;
elseif(t<=abs(Tp2))
u2=35*3.14/180;
else
u2=-35*3.14/180;
end
if(t>abs(Tp2) && y1j<0.000001)
u2=0;
end
y1j=y1i+dt*(a11*y1i+a12*y2i+b11*u2);
y2j=y2i+dt*(a21*y1i+a22*y2i+b21*u2);
y3j=y3i+dt*(y1i);
T=[T;t];
Y=[Y;y1j y2j y3j];
y1i=y1j;
y2i=y2j;
y3i=y3j;
end
global Tg;
Tg=[Tp1 Tp2]; %записываем полученные значения времен переключения
n=Y(length(T),3)^2; %минимизация третьей переменной изменением Tp1 и зависящего от него Tp2
Текст функции myfun2:
function e=myfun2(Tp2,Tp1) % подбирает время второго переключения в зависимости от первого
% подбираем Tp2 в зависимости от Tp1, взятого из функции myfun1
global Tr;
global Yr;
V0=5.65; % скорость хода судна
L=51; % длина по ватерлинии
% коэффициенты математической модели судна
r21=-0.59;
r31=5.32;
q21=0.94;
q31=-2.41;
s21=-0.29;
s31=-3.4;
fi=V0/L; % нормирующая частота
a11=-r31*fi;
a12=-q31*fi^2;
a21=-r21;
a22=-q21*fi;
b11=-s31*fi^2;
b21=-s21*fi;
dt=0.005;
y1i=0;
y2i=0;
T1=0;
Y1=[0,0];
for t=dt:dt:abs(Tp2) % рассматриваем массив до времени второго переключения (начальное значение Tp2=t20 в fminsearch)
if(t<=Tp1)
u1=-35*3.14/180;
else
u1=35*3.14/180;
end
y1j=y1i+dt*(a11*y1i+a12*y2i+b11*u1);
y2j=y2i+dt*(a21*y1i+a22*y2i+b21*u1);
T1=[T1;t];
Y1=[Y1;y1j y2j];
y1i=y1j;
y2i=y2j;
end
e=1000; % начальное приближение
for j=1:length(Tr)
if(e>((Y1(length(T1),1)-Yr(j,1))^2+(Y1(length(T1),2)-Yr(j,2))^2))
e=(Y1(length(T1),1)-Yr(j,1))^2+(Y1(length(T1),2)-Yr(j,2))^2;
end
end
Результаты работы программы:
Время первого переключения составило 7,22 с;
время второго переключения составило 13,147 с;
время выключения управления -14,225 с;
время переходного процесса при данных параметрах объекта составило
13,86 с.
Графики переходных процессов:
Рис. 1. Переходные процессы в системе.
x1 – (угловая скорость рыскания);
x2 – (угол дрейфа);
x3 – φ (угол рыскания);
u – (угол перекладки руля).
Рис. 2. Фазовые траектории.
