Синтез системы управления спуском космического аппарата на поверхность Марса методом интеллектуальной эволюции
Метод сетевого оператора и его применение в задачах управления. Исследование на основе вычислительного эксперимента синтезируемой системы автоматизированного управления космического аппарата, методом интеллектуальной эволюции. Алгоритм пчелиного роя.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 17.09.2013 |
Размер файла | 1,8 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
(ksi<(1+alfa*Lh[k2])/(1+Lh[k2])) then
begin
//если условие скрещивания выполнено
ks2:=random(p*(c+d));
//скрещивание, получение 2-х потомков
for i:=0 to ks2-1 do
begin
Son1p[i]:=PopChrPar[k1,i];
Son2p[i]:=PopChrPar[k2,i];
end;
for i:=ks2 to p*(c+d)-1 do
begin
Son1p[i]:=PopChrPar[k2,i];
Son2p[i]:=PopChrPar[k1,i];
end;
//мутация для 1го потомка
if random<pmut then
son1p[random(p*(c+d))]:=random(2);
//вычисление функционалов для 1го потомка
GreytoVector(son1p);
Func0(Fu1);
//вычисление расстояния для 1го потомка
L1:=Rast(Fu1);
//нахождение хромосомы с наибольшим расстоянием
Lmax:=Lh[0];
imax:=0;
for i:=1 to HH-1 do
if Lh[i]>Lmax then
begin
Lmax:=Lh[i];
imax:=i;
end;
if L1<Lmax then
//если расстояние у 1го потомка меньше, чем наибольшее, то
//...осуществляем замену
begin
for i:=0 to p*(c+d)-1 do
PopChrPar[imax,i]:=son1p[i];
for i:=0 to nfu-1 do
Fuh[imax,i]:=Fu1[i];
end;
//вычисляем все расстояния для популяции
for i:=0 to HH-1 do
Lh[i]:=Rast(Fuh[i]);
//мутация для 2го потомка
if random<pmut then
son2p[random(p*(c+d))]:=random(2);
//вычисление функционалов для 2го потомка
GreytoVector(son2p);
Func0(Fu2);
//вычисление расстояния для 2го потомка
L2:=Rast(Fu2);
//нахождение хромосомы с наибольшим расстоянием
Lmax:=Lh[0];
imax:=0;
for i:=1 to HH-1 do
if Lh[i]>Lmax then
begin
Lmax:=Lh[i];
imax:=i;
end;
if L1<Lmax then
//если расстояние у 2го потомка меньше, чем наибольшее, то
//...осуществляем замену
begin
for i:=0 to p*(c+d)-1 do
PopChrPar[imax,i]:=son2p[i];
for i:=0 to nfu-1 do
Fuh[imax,i]:=Fu2[i];
end;
//вычисляем все расстояния для популяции
for i:=0 to HH-1 do
Lh[i]:=Rast(Fuh[i]);
end;
rt:=rt+1;
//конец цикла скрещивания
until rt>RR;
// генерируем новые хромосомы
//проверка конца эпохи
pt:=pt+1;
//конец цикла поколений
EndGeneration;
until pt>PP;
ChoosePareto;
//строим множество Парето
End;
Procedure TGANOP.GreytoVector(y: TArrInt);
var
i,j,l1,l:integer;
g,g1:real;
Begin
l:=c+d;
l1:=high(y)+1;
for i:=0 to l1-1 do
if i mod l=0 then
zb[i]:=y[i]
else
zb[i]:=zb[i-1] xor y[i];
j:=-1;
g1:=1;
g:=1;
for i:=0 to c-2 do
g1:=g1*2;
for i:=0 to l1-1 do
begin
if i mod l=0 then
begin
j:=j+1;
q[j]:=0;
g:=g1;
end;
q[j]:=q[j]+g*zb[i];
g:=g/2;
end;
End;
Procedure TGANOP.ImproveChrom(q:TArrReal;var StrChrom: TArrArr4Int);
var
i,j,k:integer;
flag:boolean;
Begin
NOP.SetPsi(NOP.Psi0);
Func0(Fu1);
k:=-1;
for i:=0 to lchr-1 do
begin
NOP.Variations(StrChrom[i]);
Func0(Fu2);
flag:=true;
for j:=0 to nfu-1 do
if Fu2[j]>Fu1[j] then flag:=false;
if flag then
begin
for j:=0 to nfu-1 do
Fu1[j]:=Fu2[j];
k:=i;
end;
end;
for i:=k+1 to lchr-1 do
for j:=0 to 3 do
StrChrom[i,j]:=0;
End;
Function TGANOP.Rast(Fu: TArrReal): integer;
var i,j,k,count:integer;
Begin
count:=0;
for i:=0 to HH-1 do
begin
j:=0;
while (j<nfu) and (Fu[j]>=Fuh[i,j]) do j:=j+1;
if j>=nfu then
begin
k:=0;
while (k<nfu) and (Fu[k]=Fuh[i,k]) do k:=k+1;
if k<nfu then count:=count+1;
end;
end;
result:=count;
End;
Procedure TGANOP.ReadChromosome(k: integer; var q1: TArrReal;
var Psi1: TArrArrInt);
var
i:integer;
Begin
NOP.SetPsi(NOP.Psi0);
for i:=0 to lchr-1 do
NOP.Variations(PopChrStr[k,i]);
GreytoVector(PopChrPar[k]);
Readq(q1);
NOP.ReadPsi(Psi1);
End;
Procedure TGANOP.ReadFunc(k: integer; var Fu1: TArrReal);
var
i:integer;
Begin
for i:=0 to nfu-1 do
Fu1[i]:=Fuh[k,i];
End;
Procedure TGANOP.Readq(var q1: TArrReal);
var
i:integer;
Begin
for i:=0 to p-1 do
q1[i]:=q[i];
End;
Procedure TGANOP.Setq(q1: TArrReal);
var
i:integer;
Begin
for i:=0 to high(q1) do
q[i]:=q1[i];
End;
Procedure TGANOP.VectortoGrey(var y: TArrInt);
var
x,i,j,k:integer;
r:real;
Begin
for i:=0 to p*(c+d)-1 do
zb[i]:=0;
for j:=0 to p-1 do
begin
x:=trunc(q[j]);
r:=q[j]-x;
k:=c+j*(c+d)-1;
while k>=j*(c+d) do
begin
zb[k]:=x mod 2;
x:=x div 2;
k:=k-1;
end;
k:=c+j*(c+d);
while k<(c+d)*(j+1) do
begin
r:=2*r;
x:=trunc(r);
zb[k]:=x;
r:=r-x;
k:=k+1;
end;
y[j*(c+d)]:=zb[j*(c+d)];
for i:=j*(c+d)+1 to (j+1)*(c+d)-1 do
y[i]:=zb[i] xor zb[i-1];
end;
End;
{ TModel }
Constructor TModel.Create(hh1,pp1,rr1,nfu1,lchr1,p1,c1,d1,
Epo1,kel1:integer;alfa1,pmut1:real;
L1,Mout1,kp1,kr1,kw1,kv1,n1,m1,ll1,ny1:integer);
Begin
inherited Create(hh1,pp1,rr1,nfu1,lchr1,p1,c1,d1,
Epo1,kel1,alfa1,pmut1,
L1,Mout1,kp1,kr1,kw1,kv1);
n:=n1;
m:=m1;
lv:=ll1;
ny:=ny1;
SetLength(x,n);
SetLength(x0,n);
SetLength(xs,n);
SetLength(fa,n);
SetLength(fb,n);
SetLength(u,m);
SetLength(umax,m);
SetLength(umin,m);
SetLength(qymin,ny);
SetLength(qymax,ny);
SetLength(qy,ny);
SetLength(ixmax,ny);
SetLength(ix,ny);
SetLength(stepsqy,ny);
SetLength(y,lv);
SetLength(su,nfu);
SetLength(su1,nfu);
End;
Procedure TModel.Euler2;
var
i:integer;
Begin
RP(t,x,fa);
for i:=0 to n-1 do
xs[i]:=x[i]+dt*fa[i];
RP(t+dt,xs,fb);
for i:=0 to n-1 do
x[i]:=x[i]+dt*(fa[i]+fb[i])/2;
t:=t+dt;
End;
Procedure TModel.Func(var Fu: TArrReal);
var
i:integer;
Begin
for i:=0 to nfu-1 do
fu[i]:=0;
End;
Procedure TModel.Func0(var Fu: TArrReal);
var
i:integer;
Begin
Integr;
for i:=0 to nfu-1 do
Fu[i]:=su[i];
End;
Procedure TModel.Initial;
var
i:integer;
Begin
for i:=0 to n-1 do
x[i]:=x0[i];
t:=0;
End;
Procedure TModel.Integr;
var
i,j:integer;
flag:boolean;
Begin
for i:=0 to ny-1 do
ix[i]:=0;
for i:=0 to nfu-1 do
su[i]:=0;
repeat
for i:=0 to ny-1 do
qy[i]:=qymin[i]+stepsqy[i]*ix[i];
Func(su1);
for i:=0 to nfu-1 do
su[i]:=su[i]+su1[i];
LexPM(ix,flag);
until not flag;
End;
Procedure TModel.LexPM(var ix: tArrInt; var flag: boolean);
var
i,j:integer;
Begin
i:=ny-1;
while (i>=0)and(ix[i]=ixmax[i]) do i:=i-1;
if i>=0 then
begin
ix[i]:=ix[i]+1;
for j:=i+1 to ny-1 do
ix[j]:=0;
flag:=true;
end
else
flag:=false;
End;
Procedure TModel.OgrUpr;
var
i:integer;
Begin
for i:=0 to m-1 do
if u[i]>umax[i] then
u[i]:=umax[i]
else
if u[i]<umin[i] then
u[i]:=umin[i];
End;
Procedure TModel.RP(t1:real;x1:TArrReal;var f1:TArrReal);
const
TT=0.5;
ksi=0.09;
ko=1;
var
i:integer;
Begin
Upr;
f1[0]:=x[1];
f1[1]:=-2*ksi*x[1]/TT+(ko*u[0]-x[0])/sqr(TT);
for i:=0 to n-1 do
if abs(f1[i])>infinity then
f1[i]:=Ro_10(f1[i])*infinity;
End;
Procedure TModel.Setdt(dt1: real);
Begin
dt:=dt1;
End;
Procedure TModel.Setixmax(ix1: TArrInt);
var
i:integer;
Begin
for i:=0 to ny-1 do
ixmax[i]:=ix1[i];
End;
Procedure TModel.Setqymax(qymax1: TArrReal);
var
i:integer;
Begin
for i:=0 to ny-1 do
qymax[i]:=qymax1[i];
End;
Procedure TModel.Setqymin(qymin1: TArrReal);
var
i:integer;
Begin
for i:=0 to ny-1 do
qymin[i]:=qymin1[i];
End;
Procedure TModel.Setstepsqy(stepsqy1: TArrReal);
var
i:integer;
Begin
for i:=0 to ny-1 do
stepsqy[i]:=stepsqy1[i];
End;
Procedure TModel.Settf(tf1: real);
Begin
tf:=tf1;
End;
Procedure TModel.Setuogr(umin1, umax1: TArrReal);
var
i:integer;
Begin
for i:=0 to m-1 do
begin
umin[i]:=umin1[i];
umax[i]:=umax1[i];
end;
End;
Procedure TModel.Setx0(x01: TArrReal);
var
i:integer;
Begin
for i:=0 to n-1 do
x0[i]:=x01[i];
End;
Procedure TModel.Upr;
Begin
u[0]:=1;
End;
Procedure TModel.Viewer;
var
i:integer;
Begin
for i:=0 to n-1 do
y[i]:=x[i];
End; END.
Приложение Б
z_0=x_0
z_1=q_0
z_2=x_1
z_3=q_1
z_4=x_2
z_5=q_2
z_6=x_3
z_7=q_3
z8=Prod(z_1,z_0)
z9=Prod(z_3,z_2)
z10=Prod(z_5,z_4)
z11=Prod(z_7,z_6)
z12=Sum(z_9,z_8)
z13=Sum(z_11,z_10)
z14=Sum(z_12)
z15=Sum(z_13)
z16=Sum(z_12)
z17=Sum(z_13)
z18=Sum(Ro_18(z_13),z_12)
z19=Sum(z_17,Ro_9(z_14),Ro_23(z_6))
20=Sum(z_18)
z21=Sum(z_19)
z22=Sum(z_20,Ro_6(z_10))
z23=Sum(z_22,Ro_17(z_21))
Размещено на Allbest.ru
Подобные документы
- Разработка и исследования метода сетевого оператора для адаптивного управления динамическим объектом
Генетическое программирование и алгоритм. Метод сетевого оператора. Матрица, вариации и вектор сетевого оператора. Метод интеллектуальной эволюции. Сетевой оператор базового решения. Движение робота в плоскости X,Y, симуляция с начальными условиями.
дипломная работа [2,6 M], добавлен 23.09.2013 Разработка цифровой модели системы управления в среде Мathcad с учетом ограничений на фазовую координату X3. Исследование системы методом цифрового моделирования. Проведение параметрической оптимизации управления. Линейная комбинация фазовых координат.
курсовая работа [246,8 K], добавлен 30.10.2014- Разработка и исследование метода сетевого оператора для адаптивного управления динамическим объектом
Понятие адаптивного управления как совокупности действий и методов, характеризующихся способностью управляющей системы реагировать на изменения внешней среды. Применение метода сетевого оператора для синтеза адаптивного управления мобильным роботом.
дипломная работа [1,4 M], добавлен 17.09.2013 Постановка задачи синтеза системы управления. Применение принципа Максимума Понтрягина. Метод аналитического конструирования оптимальных регуляторов. Метод динамического программирования Беллмана. Генетическое программирование и грамматическая эволюция.
дипломная работа [1,0 M], добавлен 17.09.2013Синтез системы автоматического управления корневым методом, разработанным Т. Соколовым. Определение передаточных функций по задающему и возмущающему воздействиям. Оценка устойчивости замкнутой нескорректированной системы регулирования по критерию Гурвица.
курсовая работа [1,3 M], добавлен 26.01.2015Анализ исследований на тему предрасположенности человека к химических зависимостям. Создание опроса, на основе проанализированной литературы. Анализ и выбор технологии для создания интеллектуальной системы. Проектирование интеллектуальной системы.
дипломная работа [2,5 M], добавлен 26.08.2017Моделирование траектории движения космического аппарата, запускаемого с борта космической станции, относительно Земли. Запуск осуществляется в направлении, противоположном движению станции, по касательной к её орбите. Текст программы в среде Matlab.
контрольная работа [138,8 K], добавлен 31.05.2010Формирование логики управления полетом беспилотного летательного аппарата в режиме захода на посадку; синтез линейного регулятора управления боковым движением; моделирование системы управления посадкой. Расчет затрат на создание программного продукта.
дипломная работа [1,7 M], добавлен 09.03.2013Назначение и состав, система автоматизированного управления мобильной газораспределительной станцией. Структурная схема соединений системы автоматизированного управления. Алгоритм управляющей программы. Отладка разработанного программного обеспечения.
дипломная работа [3,4 M], добавлен 20.03.2017Назначение газораспределительных станций. Общие технические требования к системам автоматизированного управления газораспределительными станциями. Выбор промышленного контроллера. Разработка схемы соединений системы автоматизированного управления.
дипломная работа [2,2 M], добавлен 10.04.2017