Автор работы: Пользователь скрыл имя, 26 Августа 2012 в 12:11, лабораторная работа
Цель работы: ознакомление с основами генетического алгоритма и принципами его применения для решения прикладных задач.
Структурная схема автоматической системы с заданной передаточной функцией объекта управления, с заданными значениями параметров; заданный вид интегрального критерия оптимизации.
Цель работы: 3
Структурная схема автоматической системы с заданной передаточной функцией объекта управления, с заданными значениями параметров; заданный вид интегрального критерия оптимизации. 3
Моделирование автоматической системы: 4
Параметры генетического алгоритма 6
Расчет длины хромосомы 6
Схема отбора родителей 7
Блок-схема процедуры отбора родителей 8
Листинг 8
Автоматическая система регулирования 8
Генетический алгоритм параметрической оптимизации 10
Картины сходимости 13
Министерство науки и образования Российской федерации
Федеральное агентство по образованию
ИРКУТСКИЙ
ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
факультет кибернетики
кафедра Автоматизированных систем
ОТЧЕТ
к лабораторной работе по дисциплине
Системы искусственного интеллекта |
Параметрическая оптимизация пид-регулятора
с помощью генетического |
наименование темы
Выполнил студент группы |
АСУу-09-1 |
Овчинников П.О. | |||
шифр группы |
подпись |
Фамилия И.О. | |||
Проверил |
Лукьянов Н.Д. | ||||
должность |
подпись |
Фамилия И.О. |
Иркутск 2012 г.
Оглавление
Цель работы: 3
Структурная схема автоматической системы с заданной передаточной функцией объекта управления, с заданными значениями параметров; заданный вид интегрального критерия оптимизации. 3
Моделирование автоматической системы: 4
Параметры генетического алгоритма 6
Расчет длины хромосомы 6
Схема отбора родителей 7
Блок-схема процедуры отбора родителей 8
Листинг 8
Автоматическая система регулирования 8
Генетический алгоритм параметрической оптимизации 10
Картины сходимости 13
Цель работы: ознакомление с основами генетического алгоритма и принципами его применения для решения прикладных задач.
Задана структура автоматической системы следующего вида:
Передаточная функция объекта регулирования (вариант № 14):
Параметры объекта регулирования:
Передаточная функция
Необходимо минимизировать критерий качества вида:
Осуществив настройку ПИД-регулятора на основе генетического алгоритма.
На вход системы подается единичная функция g(t)=1, но так как система замкнута по отрицательной обратной связи, то входное воздействие на регулятор определяется как:
Выходной сигнал регулятора:
Звено
регулятора моделируется с использованием
численных методов расчета
Подставляя эти значения, получим:
Полученное выходное управляющее воздействие u(t) подается на вход объекта.
Для того чтобы найти выходной сигнал объекта, используем способ непосредственного интегрирования.
Передаточной функции вида (1) соответствует дифференциальное уравнение вида:
Так как , то
Отсюда
Выходной сигнал объекта в обобщенном виде определяется как:
В данном случае:
Итоговая система для
Для нахождения функций через их производные используется метод Эйлера
После нахождения требуемой функции вводится запаздывание на время .
Согласно варианту заданы следующие параметры для работы генетического алгоритма:
Каждый их параметров является дробным числом. Каждая j-ая хромосома состоит из двух частей. Первая часть кодирует целую часть, вторая – дробную. Pj – длина части хромосомы, кодирующая целую часть значения qj, а Dj – длина части хромосомы, кодирующая дробную часть значения qj.
Исходя из ограничений, накладываемых на параметры регулятора, вычислим длину хромосом. Если j-ый параметр ограничен некоторым значением Sj, , то длина Pj, , целой части j-ой хромосомы равна:
В данном случае , тогда:
Если шаг настройки j-ого параметра регулятора <1, , то длина дробной части может быть найдена как:
В данном случае , тогда:
Таким образом длина хромосомы равна:
Для пропорционального отбора применяют следующую схему: для каждой из особей вычисляется значение функции приспособленности , где N размер популяции, так же вычисляется средняя приспособленность популяции:
Затем для каждой особи
Целая
часть этого соотношения
Приступаем к отбору родителей, используя следующее условие селекции: Чем ниже значение функционала (3) для особи тем выше ее приспособленность.
Таким образом, функция приспособленности для i-ой особи fi вычисляется по следующей формуле:
procedure sar;
var
f1,f2,dt,x,xp,u,h,k,m,k0,m0,
i1,j1,L:Integer;
mas:array[0..2]of double;
begin
Form1.Series14.Clear;
h:=0.05;
dt:=0.01;
f1:=0;
f2:=0;
j1:=0;
i1:=0;
L:=100;
integral:=0;
proiz:=0;
u:=0;
Fitnes:=0;
y:=0;
x:=0;
ns:=0.1/h;
repeat
xp:=x;
x:=1-y;// обратная связь
u:=(q1*x)+(q2*integral)+(q3*
proiz:=(x-xp)/dt;
integral:=integral+x*dt;
Fitnes:=RoundTo(fitnes+sqr(x)*
k0:=(-1*f1+u)*dt;
m0:=(-1.5*f1+f2)*dt;
k1:=(-1*(f1+m0/2)+u)*dt;
m1:=(-1.5*(f1+m0/2) + (f2+k0/2))*dt;
k2:=(-1*(f1+m1/2)+u)*dt;
m2:=(-1.5*(f1+m1/2) + (f2+k1/2))*dt;
k3:=(-1*(f1+m2)+u)*dt;
m3:=(-1.5*(f1+m2) + (f2+k2))*dt;
k:=f2+1/6*(k0+2*k1+2*k2+2*k3);
m:=f1+1/6*(m0+2*m1+2*m2+2*m3);
f2:=k;
f1:=m;
i1:=i1+1;
//Моделирование звена запаздывания
if i1>ns then
begin
if j1>=ns then j1:=0;
j1:=j1+1;
y:=mas[j1];
mas[j1]:=m;
end
else
begin
y:=0;
mas[i1]:=m;
end;
//Моделирование звена запаздывания
h:=h+0.05;
//Вывод решения на график
If First then
Form1.Series1.AddXY(h,y);
Form1.Series14.AddXY(h, y);
until (h>=L);
//ShowMessage(floattostr(
end;
Генетический алгоритм параметрической оптимизации
procedure genetic;
const n=255;
var
prom_num, prom_i, prom_j, pop_i, pop_j:integer;
fitnes_sr:double;//средняя
prom_pop:array [0..n,0..3] of String;
parentA: String; //родитель А
parentB: String; //родитель Б
gen, parentA_num, parentB_num:byte;
new_gen:String; //Новый ген
temp: String; // сортировка пром популяции
fl: boolean;
porog:double;
begin
fitnes_pop:=0;
pop_i:=0;
pop_j:=0;
prom_i:=0;
prom_j:=0;
prom_num:=0;
for i:=0 to Population_count-1 do
begin
q1:=TwoToTenStr(population[i,
q2:=TwoToTenStr(population[i,
q3:=TwoToTenStr(population[i,
sar;
First:=false;
//test;
fitnes_pop:=fitnes_pop+Fitnes;
population[i,3]:=FloatToStr(
end;
fitnes_sr:=fitnes_pop/
prom_i:=0;//счетчик для массива промежуточной популяции
//отбор родителей
for i:=0 to population_count-1 do //формирование промежуточной популяции
begin
population[i,3]:=FloatToStr(1/
prom_num:=FloatToInt(int(
for prom_j:=1 to prom_num do // цикл на добавление особи в промежуточный массив
begin
prom_pop[prom_i,0]:=
prom_pop[prom_i,1]:=
prom_pop[prom_i,2]:=
prom_pop[prom_i,3]:=
inc(prom_i);
end; //формирование промежуточной популяции
end;
//выбор родителей и заполнение новой популяции
while pop_i < prom_i-1 do //кроссовер
begin
randomize;
if chance(85)>0 then
begin
parentA_num:=random(prom_i-1);
parentB_num:=random(prom_i-1);
parentA:=copy((prom_pop[
parentB:=copy((prom_pop[
prom_pop[parentB_num,0]:=
parentA:=copy((prom_pop[
parentB:=copy((prom_pop[
prom_pop[parentA_num,1]:=
prom_pop[parentB_num,1]:=
parentA:=copy((prom_pop[
parentB:=copy((prom_pop[
prom_pop[parentA_num,2]:=
prom_pop[parentB_num,2]:=
//кроссовер
end;
pop_i:=pop_i+2;
end;
for pop_i:=0 to prom_i-1 do //мутация
begin
if (chance(15)>0) and (length(prom_pop[pop_i,3])>0) then
begin
//мутация 1 хромосомы
gen:=Random(2)+11;
if prom_pop[pop_i,0][gen]='0' then
new_gen:='1'
else
new_gen:='0';
delete(prom_pop[pop_i,0], gen, 1);
insert(new_gen, prom_pop[pop_i,0], gen);
//мутация 1 хромосомы
//мутация 2 хромосомы
gen:=Random(2)+11;
if prom_pop[pop_i,1][gen]='0' then
new_gen:='1'
else
new_gen:='0';
delete(prom_pop[pop_i,1], gen, 1);
insert(new_gen, prom_pop[pop_i,1], gen);
//мутация 2 хромосомы
//мутация 3 хромосомы
gen:=Random(2)+11;
if prom_pop[pop_i,2][gen]='0' then
new_gen:='1'
else
new_gen:='0';
delete(prom_pop[pop_i,2], gen, 1);
insert(new_gen, prom_pop[pop_i,2], gen);
//мутация 3 хромосомы
end;//мутация }
q1:=TwoToTenStr(prom_pop[pop_
q2:=TwoToTenStr(prom_pop[pop_
q3:=TwoToTenStr(prom_pop[pop_
sar;
//test;
prom_pop[pop_i,3]:=FloatToStr(
end;
// сортировка промежуточной популяции по фитнес функции особи
for pop_i:=0 to prom_i-2 do
for pop_j:=0 to prom_i-2-pop_i do
if StrToFloat(prom_pop[pop_j,3]) >
StrToFloat(prom_pop[pop_j+1,3]
begin
temp:=prom_pop[pop_j,0];
prom_pop[pop_j,0]:=prom_pop[
prom_pop[pop_j+1,0]:=temp;
temp:=prom_pop[pop_j,1];
prom_pop[pop_j,1]:=prom_pop[
prom_pop[pop_j+1,1]:=temp;
temp:=prom_pop[pop_j,2];
prom_pop[pop_j,2]:=prom_pop[
prom_pop[pop_j+1,2]:=temp;
temp:=prom_pop[pop_j,3];
prom_pop[pop_j,3]:=prom_pop[
prom_pop[pop_j+1,3]:=temp;
end;
// сортировка
промежуточной популяции по
//заполнение новой популяции
Porog:=(Random(90)+10)/100;
prom_i:=FloatToInt(Porog*prom_
for i:=0 to population_count-1 do
begin
pop_j:=Random(prom_i);
population[i,0]:=prom_pop[pop_
population[i,1]:=prom_pop[pop_
population[i,2]:=prom_pop[pop_
end;
//заполнение новой популяции
end;
Картины сходимости, представленные на рисунке 1, показывают сходимость параметров ПИД-регулятора(q1,q2,q3) и критерия качества(I) при трехкратном выполнении алгоритма. Это позволяет сделать вывод о работоспособности алгоритма.
Рис.1 – Картины сходимости