Системы искусственного интеллекта

Автор работы: Пользователь скрыл имя, 26 Августа 2012 в 12:11, лабораторная работа

Описание работы

Цель работы: ознакомление с основами генетического алгоритма и принципами его применения для решения прикладных задач.
Структурная схема автоматической системы с заданной передаточной функцией объекта управления, с заданными значениями параметров; заданный вид интегрального критерия оптимизации.

Содержание работы

Цель работы: 3
Структурная схема автоматической системы с заданной передаточной функцией объекта управления, с заданными значениями параметров; заданный вид интегрального критерия оптимизации. 3
Моделирование автоматической системы: 4
Параметры генетического алгоритма 6
Расчет длины хромосомы 6
Схема отбора родителей 7
Блок-схема процедуры отбора родителей 8
Листинг 8
Автоматическая система регулирования 8
Генетический алгоритм параметрической оптимизации 10
Картины сходимости 13

Файлы: 1 файл

отчет по ИИ.docx

— 190.82 Кб (Скачать файл)

Министерство науки и  образования Российской федерации

Федеральное агентство по образованию

ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

факультет кибернетики

кафедра Автоматизированных систем

ОТЧЕТ

к лабораторной работе по дисциплине

Системы искусственного интеллекта

Параметрическая оптимизация пид-регулятора с помощью генетического алгоритма


наименование  темы

Выполнил студент группы

АСУу-09-1

     

Овчинников П.О.

 

шифр группы

 

подпись

 

Фамилия И.О.

Проверил

       

Лукьянов Н.Д.

 

должность

 

подпись

 

Фамилия И.О.


 

Иркутск 2012 г. 

Оглавление

 

Цель работы: 3

Структурная схема автоматической системы с заданной передаточной функцией объекта управления, с заданными значениями параметров; заданный вид интегрального критерия оптимизации. 3

Моделирование автоматической системы: 4

Параметры генетического алгоритма 6

Расчет длины хромосомы 6

Схема отбора родителей 7

Блок-схема процедуры отбора родителей 8

Листинг 8

Автоматическая система регулирования 8

Генетический алгоритм параметрической оптимизации 10

Картины сходимости 13

 

 

Цель работы: ознакомление с основами генетического алгоритма и принципами его применения для решения прикладных задач.

Структурная схема автоматической системы с  заданной передаточной функцией объекта  управления, с заданными значениями параметров; заданный вид интегрального критерия оптимизации.

 

Задана  структура автоматической системы  следующего  вида:

Передаточная  функция объекта регулирования (вариант  № 14):

       (1)

Параметры объекта регулирования:    

 

Передаточная функция регулятора:

      (2)

Необходимо  минимизировать критерий качества вида:

       (3)

Осуществив настройку ПИД-регулятора на основе генетического алгоритма.

  Моделирование автоматической системы:

На вход системы подается единичная  функция g(t)=1, но так как система замкнута по отрицательной обратной связи, то входное воздействие на регулятор определяется как:

Выходной  сигнал регулятора:

Звено регулятора моделируется с использованием численных методов расчета интеграла  и дифференциала:

Подставляя  эти значения, получим:

Полученное выходное управляющее  воздействие u(t) подается на вход объекта.

Для того чтобы найти выходной сигнал объекта, используем способ непосредственного  интегрирования.

Передаточной функции вида (1) соответствует  дифференциальное уравнение вида:

Так как  , то

Отсюда 

    

Выходной сигнал объекта в обобщенном виде определяется как:

В данном случае:                   

                                                 

Итоговая система для моделирования

Для нахождения функций через их производные используется метод  Эйлера

После нахождения требуемой функции  вводится запаздывание на время  .

Параметры генетического  алгоритма

Согласно  варианту заданы следующие параметры  для работы генетического алгоритма:

  • Двухточечный кроссовер;
  • Количество особей в популяции - 40;
  • Вероятность скрещивания – 85%;
  • Вероятность мутации – 15%;
  • Отбор родителей  – пропорциональный отбор;
  • Отбор в следующие поколение – отбор усечением.

Расчет  длины хромосомы

Каждый  их параметров является дробным числом. Каждая 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,k1,m1,k2,m2,k3,m3,y,ns,proiz,integral:double;

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);//управляющие  воздействие

  proiz:=(x-xp)/dt;

  integral:=integral+x*dt;

  Fitnes:=RoundTo(fitnes+sqr(x)*dt,-9);

  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(fitnes));

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,0]);

   q2:=TwoToTenStr(population[i,1]);

   q3:=TwoToTenStr(population[i,2]);

   sar;

   First:=false;

   //test;

   fitnes_pop:=fitnes_pop+Fitnes;

   population[i,3]:=FloatToStr(Fitnes);

   end;

  fitnes_sr:=fitnes_pop/population_count;

  prom_i:=0;//счетчик для массива промежуточной популяции

 

  //отбор родителей

  for i:=0 to population_count-1 do //формирование  промежуточной популяции

   begin

   population[i,3]:=FloatToStr(1/(StrToFloat(population[i,3])/fitnes_sr));

   prom_num:=FloatToInt(int(StrToFloat(population[i,3])))+chance(FloatToInt(frac(StrToFloat(population[i,3]))*100)); //отделить целую и дробные части.

    for prom_j:=1 to prom_num do  // цикл на добавление особи в промежуточный массив

     begin

     prom_pop[prom_i,0]:=population[i,0];

     prom_pop[prom_i,1]:=population[i,1];

     prom_pop[prom_i,2]:=population[i,2];

     prom_pop[prom_i,3]:=population[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[parentA_num,0]),1,4)+copy((prom_pop[parentB_num,0]),5,4)+copy((prom_pop[parentA_num,0]),9,5);

      parentB:=copy((prom_pop[parentB_num,0]),1,4)+copy((prom_pop[parentA_num,0]),5,4)+copy((prom_pop[parentB_num,0]),9,5);

 

      prom_pop[parentB_num,0]:=parentB;

 

      parentA:=copy((prom_pop[parentA_num,1]),1,4)+copy((prom_pop[parentB_num,1]),5,4)+copy((prom_pop[parentA_num,1]),9,5);

      parentB:=copy((prom_pop[parentB_num,1]),1,4)+copy((prom_pop[parentA_num,1]),5,4)+copy((prom_pop[parentB_num,1]),9,5);

 

      prom_pop[parentA_num,1]:=parentA;

      prom_pop[parentB_num,1]:=parentB;

 

      parentA:=copy((prom_pop[parentA_num,2]),1,4)+copy((prom_pop[parentB_num,2]),5,4)+copy((prom_pop[parentA_num,2]),9,5);

      parentB:=copy((prom_pop[parentB_num,2]),1,4)+copy((prom_pop[parentA_num,2]),5,4)+copy((prom_pop[parentB_num,2]),9,5);

 

      prom_pop[parentA_num,2]:=parentA;

      prom_pop[parentB_num,2]:=parentB;

     //кроссовер

     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_i,0]);

       q2:=TwoToTenStr(prom_pop[pop_i,1]);

       q3:=TwoToTenStr(prom_pop[pop_i,2]);

       sar;

       //test;

       prom_pop[pop_i,3]:=FloatToStr(Fitnes);

     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]) then

    begin

     temp:=prom_pop[pop_j,0];

     prom_pop[pop_j,0]:=prom_pop[pop_j+1,0];

     prom_pop[pop_j+1,0]:=temp;

 

     temp:=prom_pop[pop_j,1];

     prom_pop[pop_j,1]:=prom_pop[pop_j+1,1];

     prom_pop[pop_j+1,1]:=temp;

 

     temp:=prom_pop[pop_j,2];

     prom_pop[pop_j,2]:=prom_pop[pop_j+1,2];

     prom_pop[pop_j+1,2]:=temp;

 

     temp:=prom_pop[pop_j,3];

     prom_pop[pop_j,3]:=prom_pop[pop_j+1,3];

     prom_pop[pop_j+1,3]:=temp;

    end;

     // сортировка  промежуточной популяции по фитнес  функции особи

 

  //заполнение новой  популяции

  Porog:=(Random(90)+10)/100;

  prom_i:=FloatToInt(Porog*prom_i);

  for i:=0 to population_count-1 do

    begin

    pop_j:=Random(prom_i);

    population[i,0]:=prom_pop[pop_j,0];

    population[i,1]:=prom_pop[pop_j,1];

    population[i,2]:=prom_pop[pop_j,2];

    end;

   //заполнение новой  популяции

 

end;

 

Картины сходимости

Картины сходимости, представленные на рисунке 1, показывают сходимость параметров ПИД-регулятора(q1,q2,q3) и критерия качества(I) при трехкратном выполнении алгоритма. Это позволяет сделать вывод о работоспособности алгоритма.

Рис.1 – Картины сходимости

 

 

 

 

 


Информация о работе Системы искусственного интеллекта