Розробка алгоритму навчання та екзамену для системи прийняття рішень, що навчаєтся - Курсовая работа

бесплатно 0
4.5 153
Аспекти вирішення методологічної та теоретичної проблеми проектування інтелектуальних систем керування. Базовий алгоритм навчання СПР за методом функціонально-статистичних випробувань. Критерій оптимізації та алгоритм екзамену системи за цим методом.

Скачать работу Скачать уникальную работу

Чтобы скачать работу, Вы должны пройти проверку:


Аннотация к работе
Оскільки уповільнення та прискорення темпів науково-технічного прогресу здійснюється за діалектичними законами, то сучасний період розвитку інтелектуальних систем слід розглядати як період накопичення їх якісних показників, за якими неодмінно відбудеться різке підвищення ефективності проектування цих систем. Розробити та програмно реалізувати базовий алгоритм навчання СПР для розпізнавання двох класів розпізнавання (М=2) і алгоритм екзамену за методом функціонально-статистичних випробувань (МФСВ). Призначенням базового алгоритму навчання LEARNING є оптимізація геометричних параметрів контейнерів, яка реалізується операторами контуру оптимізації (2.4.4) згідно з діаграмою (2.4.3) відображення множин, застосованих в процесі навчання. в) для кожної строки матриці кодових відстаней знаходиться мінімальний елемент, який належить стовпчику вектора - найближчого до вектора, що визначає строку. 1) блок 3 формує масив навчальних двійкових вибірок {X[J,I,K]} шляхом порівняння значень елементів масиву {Y[J,I,K]} з відповідними контрольними допусками за правилом (2.3.1.1) і формує масив еталонних двійкових векторів {EV[K]} шляхом статистичного усереднення стовпців масиву {X[J,I,K]} за правилом (2.3.1.2) при відповідному рівні селекції, який за умовчанням дорівнюєНа курсовій роботі була реалізована модель системи прийняття рішень що навчається для двох статичних за яскравістю зображень. Був запрограмований алгоритм навчання і алгоритм екзамену за МФСВ. Системи розпізнавання образів застосовуються правоохоронними органами для зняття і порівняння відбитків пальців, ланцюгів ДНК, карти сітківки ока.

Вывод
На курсовій роботі була реалізована модель системи прийняття рішень що навчається для двох статичних за яскравістю зображень. Був запрограмований алгоритм навчання і алгоритм екзамену за МФСВ.

Як висновок, можна сказати що подібні інтелектуальні системи широко інтегруються в наше повсякденне життя. Їм можна знайти застосування будь-де. Системи розпізнавання образів застосовуються правоохоронними органами для зняття і порівняння відбитків пальців, ланцюгів ДНК, карти сітківки ока. На великих автомагістралях встановлені камери для розпізнавання номерів автомобілів, які знаходяться в розшуку. Військові застосовують інтелектуальні системи для того, щоб підвищити ефективність своєї зброї та захисних систем. В літаках використовуються автопілоти, а це також система прийняття рішень що навчається. Постійно ми наближуємося до розгадки способу побудови штучного інтелекту, який за своїми можливостями буде тотожний людській свідомості, або можливо, навіть кращий від неї.

Список литературы
1. Васильев В.И. Распознающие системы: Справочник.-Киев: Вища школа, 1982.-512 c.

2. Горелик А.Л., Скрипкин В.А. Методы распознавания.- М.: Высш. Школа,1984.

3. Краснопоясовський А.С. Класифікаційний аналіз даних: Навчальний посібник.-Суми: Видавництво СУМДУ, 2002.-159 с.

4. Рідкокаша А.А., Голдер К.К. Основи систем штучного інтелекту: Навчальний посібник.-Черкаси: Відлуння - Плюс, 2002.- 240 с.

5. Сироджа И.Б. Принятие решений: Конспект лекций.-Харьков: Изд-во ХАИ,1992.- 98 с.

6. Ямпольський Л.С., Лавров О.А. Штучний інтелект у плануванні та управлінні виробництва: Підручник.- Вища школа.-1995.-255 с.

ЛІСТІНГ ПРОГРАМИ unit Unit1;

interface uses

Windows, Messages, SYSUTILS, Variants, Classes, Graphics, Controls, Forms, Dialogs, STDCTRLS, Grids, COMCTRLS, EXTCTRLS,math, TEEPROCS, TEENGINE, Chart, Series;

type

TFORM1 = class(TFORM)

PAGECONTROL1: TPAGECONTROL;

TABSHEET1: TTABSHEET;

Label1: TLABEL;

Label2: TLABEL;

Label5: TLABEL;

Label6: TLABEL;

STRINGGRID1: TSTRINGGRID;

STRINGGRID2: TSTRINGGRID;

STRINGGRID4: TSTRINGGRID;

Button1: TBUTTON;

Button2: TBUTTON;

STRINGGRID5: TSTRINGGRID;

TABSHEET2: TTABSHEET;

Label10: TLABEL;

Label9: TLABEL;

Label4: TLABEL;

Label8: TLABEL;

Label12: TLABEL;

Label13: TLABEL;

Button4: TBUTTON;

STRINGGRID10: TSTRINGGRID;

STRINGGRID11: TSTRINGGRID;

Edit5: TEDIT;

Edit6: TEDIT;

Edit4: TEDIT;

Edit3: TEDIT;

STRINGGRID7: TSTRINGGRID;

STRINGGRID8: TSTRINGGRID;

Edit1: TEDIT;

Edit2: TEDIT;

Button3: TBUTTON;

TABSHEET3: TTABSHEET;

Label14: TLABEL;

Label15: TLABEL;

Label17: TLABEL;

Label18: TLABEL;

Label19: TLABEL;

Label20: TLABEL;

STRINGGRID13: TSTRINGGRID;

STRINGGRID14: TSTRINGGRID;

STRINGGRID15: TSTRINGGRID;

STRINGGRID16: TSTRINGGRID;

Button5: TBUTTON;

STRINGGRID20: TSTRINGGRID;

STRINGGRID19: TSTRINGGRID;

TABSHEET5: TTABSHEET;

TABSHEET4: TTABSHEET;

Label41: TLABEL;

Label42: TLABEL;

Label44: TLABEL;

Label45: TLABEL;

Label46: TLABEL;

Button6: TBUTTON;

STRINGGRID22: TSTRINGGRID;

STRINGGRID23: TSTRINGGRID;

Edit7: TEDIT;

Edit8: TEDIT;

Label23: TLABEL;

Edit10: TEDIT;

Edit11: TEDIT;

Label24: TLABEL;

Label25: TLABEL;

Button7: TBUTTON;

Edit12: TEDIT;

STRINGGRID25: TSTRINGGRID;

Button8: TBUTTON;

Chart1: TCHART;

Chart2: TCHART;

Series1: TLINESERIES;

Series2: TLINESERIES;

procedure Button1Click(Sender: TOBJECT);

procedure Button2Click(Sender: TOBJECT);

procedure Button3Click(Sender: TOBJECT);

procedure Button4Click(Sender: TOBJECT);

procedure Button5Click(Sender: TOBJECT);

procedure Button6Click(Sender: TOBJECT);

procedure FORMCREATE(Sender: TOBJECT);

procedure Button7Click(Sender: TOBJECT);

procedure Button8Click(Sender: TOBJECT);

private

{ Private declarations } public

{ Public declarations } end;

const m=60;

n=22;

var

Form1: TFORM1;

EV1:array[1..n] of integer;

EV2:array[1..n] of integer;

EV21:array[1..n] of integer;

EV22:array[1..n] of integer;

EV23:array[1..n] of integer;

EV31:array[1..m] of integer;

EV32:array[1..m] of integer;

EV33:array[1..m] of integer;

EV41:array[1..m] of integer;

EV42:array[1..m] of integer;

EV43:array[1..m] of integer;

B1:array[1..n,1..m] of integer;

B2:array[1..n,1..m] of integer;

M1:array[1..n,1..m] of integer;

M2:array[1..n,1..m] of integer;

N1:array[1..n,1..m] of integer;

N2:array[1..n,1..m] of integer;

N3:array[1..n,1..m] of integer;

NDZ,VDZ,Delt,NDZ1,VDZ1,dp1,dp2:integer;

kp1,kp2:string[1];

implementation

{$R *.dfm} procedure TFORM1.Button1Click(Sender: TOBJECT);

var i,r12:integer;

begin

Randomize;

for i:=1 to n do begin

EV1[i]:=1;

end;

r12:=0;

While r128 do begin r12:=0;

for i:=1 to n do begin

EV2[i]:=random(2);

if EV1[i]EV2[i] then inc(r12);

end;

end;

for i:=1 to n do begin

Form1.STRINGGRID1.Cells[i,0]:=inttostr(EV1[i]);

Form1.STRINGGRID2.Cells[i,0]:=inttostr(EV2[i]);

end;

end;

procedure TFORM1.Button2Click(Sender: TOBJECT);

var i,j,e1,e2:integer;

begin

Randomize;

for i:=1 to n do begin if EV1[i]=1 then begin e1:=0;

While e142 do begin e1:=0;

for j:=1 to m do begin

B1[i,j]:=random(2);

if B1[i,j]=1 then inc(e1);

end;

end;

end else begin e1:=0;

While e118 do begin e1:=0;

for j:=1 to m do begin

B1[i,j]:=random(2);

if B1[i,j]=1 then inc(e1);

end;

end;

end;

end;

for i:=1 to n do if EV2[i]=1 then begin e2:=0;

While e242 do begin e2:=0;

for j:=1 to m do begin

B2[i,j]:=random(2);

if B2[i,j]=1 then inc(e2);

end;

end;

end else begin e2:=0;

While e218 do begin e2:=0;

for j:=1 to m do begin

B2[i,j]:=random(2);

if B2[i,j]=1 then inc(e2);

end;

end;

end;

for i:=1 to n do for j:=1 to m do begin

Form1.STRINGGRID4.Cells[i,j]:=inttostr(B1[i,j]);

Form1.STRINGGRID5.Cells[i,j]:=inttostr(B2[i,j]);

end;

end;

procedure TFORM1.Button3Click(Sender: TOBJECT);

var i,j:integer;

begin

NDZ:=strtoint(Form1.Edit1.Text);

VDZ:=strtoint(Form1.Edit2.Text);

Randomize;

for i:=1 to n do for j:=1 to m do begin

M1[i,j]:=random(255);

M2[i,j]:=random(255);

end;

for i:=1 to n do for j:=1 to m do begin if B1[i,j]=1 then

M1[i,j]:=random(VDZ-NDZ) NDZ else begin while (M1[i,j]>=NDZ) and (M1[i,j]<=VDZ) do

M1[i,j]:=random(255);

end;

end;

for i:=1 to n do for j:=1 to m do begin if B2[i,j]=1 then

M2[i,j]:=random(VDZ-NDZ) NDZ else begin while (M2[i,j]>=NDZ) and (M2[i,j]<=VDZ) do

M2[i,j]:=random(255);

end;

end;

for i:=1 to n do for j:=1 to m do begin

Form1.STRINGGRID7.Cells[i,j]:=inttostr(M1[i,j]);

Form1.STRINGGRID8.Cells[i,j]:=inttostr(M2[i,j]);

end;

end;

procedure TFORM1.Button4Click(Sender: TOBJECT);

var i,j,Sum,S1,S2:integer;

MS,SUMV:real;

MSV,NDZV,VDZV:array[1..n] of real;

begin

Delt:=strtoint(Form1.Edit4.Text);

Sum:=0;

SUMV:=0;

for i:=1 to n do begin for j:=1 to m do

Sum:=Sum M1[i,j];

MSV[i]:=Sum/m;

SUMV:=SUMV MSV[i];

NDZV[i]:=round(MSV[i])-Delt;

VDZV[i]:=round(MSV[i]) Delt;

Sum:=0;

end;

MS:=SUMV/n;

NDZ1:=round(MS)-Delt;

VDZ1:=round(MS) Delt;

for i:=1 to n do

Form1.Edit3.Text:=floattostr(MS);

Form1.Edit5.Text:=inttostr(NDZ1);

Form1.Edit6.Text:=inttostr(VDZ1);

for i:=1 to n do for j:=1 to m do begin if (M1[i,j]>=NDZ1) and (M1[i,j]<=VDZ1) then

N1[i,j]:=1 else

N1[i,j]:=0;

end;

for i:=1 to n do for j:=1 to m do begin if (M2[i,j]>=NDZ1) and (M2[i,j]<=VDZ1) then

N2[i,j]:=1 else

N2[i,j]:=0;

end;

for i:=1 to n do begin

S1:=0;

for j:=1 to m do

S1:=S1 N1[i,j];

if S1>23 then EV21[i]:=1 else EV21[i]:=0;

end;

for i:=1 to n do begin

S2:=0;

for j:=1 to m do

S2:=S2 N2[i,j];

if S2>23 then EV22[i]:=1 else EV22[i]:=0;

end;

for i:=1 to n do for j:=1 to m do begin

Form1.STRINGGRID10.Cells[i,j]:=inttostr(N1[i,j]);

Form1.STRINGGRID11.Cells[i,j]:=inttostr(N2[i,j]);

end;

for i:=1 to n do begin

Form1.STRINGGRID19.Cells[i,0]:=inttostr(EV21[i]);

Form1.STRINGGRID20.Cells[i,0]:=inttostr(EV22[i]);

end;

end;

procedure TFORM1.Button5Click(Sender: TOBJECT);

var i,j,Sum1,Sum2,Sum3:integer;

begin for j:=1 to m do begin

Sum1:=0;

Sum2:=0;

for i:=1 to n do begin if B1[i,j]EV1[i] then inc(Sum1);

if B2[i,j]EV1[i] then inc(Sum2);

end;

EV41[j]:=Sum2;

kp1:="2";

if Sum2>Sum3 then begin

EV41[j]:=Sum3;

kp1:="3";

end;

EV31[j]:=Sum1;

end;

for j:=1 to m do begin

Sum1:=0;

Sum2:=0;

for i:=1 to n do begin if N1[i,j]EV22[i] then inc(Sum1);

if N2[i,j]EV22[i] then inc(Sum2);

end;

EV42[j]:=Sum1;

kp2:="1";

if Sum1>Sum3 then begin

EV42[j]:=Sum3;

kp2:="3";

end;

EV32[j]:=Sum2;

end;

for j:=1 to m do begin

Sum1:=0;

Sum2:=0;

for i:=1 to n do begin if N1[i,j]EV23[i] then inc(Sum1);

if N2[i,j]EV23[i] then inc(Sum2);

end;

EV43[j]:=Sum1;

if Sum1>Sum2 then begin

EV43[j]:=Sum2;

end;

EV33[j]:=Sum3;

end;

for j:=1 to m do begin

Form1.STRINGGRID13.Cells[j,0]:=inttostr(EV31[j]);

Form1.STRINGGRID15.Cells[j,0]:=inttostr(EV32[j]);

Form1.STRINGGRID14.Cells[j,0]:=inttostr(EV41[j]);

Form1.STRINGGRID16.Cells[j,0]:=inttostr(EV42[j]);

Label18.Caption:=kp1;

Label20.Caption:=kp2;

end;

end;

function Kulbak(k2,k3:integer):real;

var s:real;

begin s:=ln((2*m 0.01-(k2 k3))/((k2 k3) 0.01))/ln(2);

result:=(1/m)*(s)*(m-(k2 k3));

end;

procedure TFORM1.Button6Click(Sender: TOBJECT);

var i,j,k11,k12,k13,k14,k21,k22,k23,k24:integer;

D11,D12,D21,D22,a1,a2,b1,b2,kfe1,kfe2:real;

kf1,kf2:array[1..m] of real;

begin kfe1:=0;

for j:=1 to n do begin k11:=0;k12:=0;k13:=0;k14:=0;

for i:=1 to m do begin if EV31[i]<=j then inc(k11) else inc(k12);

if EV41[i]<=j then inc(k13) else inc(k14) end;

D11:=k11/m;

D12:=k14/m;

a1:=k12/m;

b1:=k13/m;

kf1[j]:=kulbak(k12,k13);

Form1.STRINGGRID22.Cells[1,j]:=inttostr(k11);

Form1.STRINGGRID22.Cells[2,j]:=inttostr(k12);

Form1.STRINGGRID22.Cells[3,j]:=inttostr(k13);

Form1.STRINGGRID22.Cells[4,j]:=inttostr(k14);

Form1.STRINGGRID22.Cells[5,j]:=floattostr(D11);

Form1.STRINGGRID22.Cells[6,j]:=floattostr(D12);

Form1.STRINGGRID22.Cells[7,j]:=floattostr(a1);

Form1.STRINGGRID22.Cells[8,j]:=floattostr(b1);

Form1.STRINGGRID22.Cells[9,j]:=floattostr(kf1[j]);

if (D11>=0.5) and (D12>=0.5) and (kf1[j]>kfe1) then begin dp1:=j;

kfe1:=kf1[j];

end;

end;

kfe2:=0;

for j:=1 to m do begin k21:=0;k22:=0;k23:=0;k24:=0;

for i:=1 to m do begin if EV32[i]<=j then inc(k21) else inc(k22);

if EV42[i]<=j then inc(k23) else inc(k24) end;

D21:=k21/m;

D22:=k24/m;

a2:=k22/m;

b2:=k23/m;

kf2[j]:=kulbak(k22,k23);

Form1.STRINGGRID23.Cells[0,j]:=inttostr(k21);

Form1.STRINGGRID23.Cells[1,j]:=inttostr(k22);

Form1.STRINGGRID23.Cells[2,j]:=inttostr(k23);

Form1.STRINGGRID23.Cells[3,j]:=inttostr(k24);

Form1.STRINGGRID23.Cells[4,j]:=floattostr(D21);

Form1.STRINGGRID23.Cells[5,j]:=floattostr(D22);

Form1.STRINGGRID23.Cells[6,j]:=floattostr(a2);

Form1.STRINGGRID23.Cells[7,j]:=floattostr(b2);

Form1.STRINGGRID23.Cells[8,j]:=floattostr(kf2[j]);

if (D21>=0.5) and (D22>=0.5) and (kf2[j]>kfe2) then begin dp2:=j;

kfe2:=kf2[j];

end;

end;

Edit7.Text:=inttostr(dp1);

Edit8.Text:=inttostr(dp2);

Label44.Caption:=kp1;

Label45.Caption:=kp2;

end;

procedure TFORM1.FORMCREATE(Sender: TOBJECT);

var i:integer;

begin with Stringgrid22 do begin cells[0,0]:="k";

cells[1,0]:="K1";

cells[2,0]:="K2";

cells[3,0]:="K3";

cells[4,0]:="K4";

cells[5,0]:="D1";

cells[6,0]:="D2";

cells[7,0]:="a";

cells[8,0]:="b";

cells[9,0]:="kfe";

for i:=1 to 22 do

Stringgrid22.cells[0,i]:=inttostr(i);

end;

with Stringgrid23 do begin cells[0,0]:="K1";

cells[1,0]:="K2";

cells[2,0]:="K3";

cells[3,0]:="K4";

cells[4,0]:="D1";

cells[5,0]:="D2";

cells[6,0]:="a";

cells[7,0]:="b";

cells[8,0]:="kfe";

end;

end;

procedure TFORM1.Button7Click(Sender: TOBJECT);

var i,d1,d2,r:integer;

f,f1,f2:real;

kl:string[1];

begin kl:=Edit10.Text;

r:=strtoint(Edit11.Text);

d1:=0; d2:=0;

for i:=1 to n do begin if kl="1" then Form1.STRINGGRID25.Cells[i,0]:=inttostr(N1[i,r]) else begin if kl="2" then Form1.STRINGGRID25.Cells[i,0]:=inttostr(N2[i,r]) end;

if strtoint(Form1.STRINGGRID25.Cells[i,0])EV21[i] then inc(d1);

if strtoint(Form1.STRINGGRID25.Cells[i,0])EV22[i] then inc(d2);

end;

f1:=1-d1/dp1;

f2:=1-d2/dp2;

f:=f1;

Edit12.Text:="Реализация относится к классу 1";

if f<f2 then begin f:=f2;

Edit12.Text:="Реализация относится к классу 2";

end ;

end;

procedure TFORM1.Button8Click(Sender: TOBJECT);

var x,i:integer; y1,y2:real;

begin for i:=0 to 21 do begin x:= i;

y1:=strtofloat(stringgrid22.Cells[9,i 1]);

y2:=strtofloat(stringgrid23.Cells[8,i 1]);

series1.ADDXY(x,y1);

series2.ADDXY(x,y2);

end;

end;

end.

Размещено на .ru

Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность
своей работы


Новые загруженные работы

Дисциплины научных работ





Хотите, перезвоним вам?