Министерство образования и
науки Украины
Донбасская государственная
машиностроительная академия
Лабораторная
работа № 6
«Исследование свойств сетей
Хопфилда и поиска максимума»
по дисциплине:
«Нейросетевые технологии»
Краматорск 2014
Цель: исследовать основные свойства
сетей Хопфилда и поиска максимума.
Задание:
1. Создать программный
продукт в любой удобной среде
визуального программирования, реализующий
нейронную сеть вида:
Формирование синаптических
весов сети:
Функционирование
сети:
где wij – i-й синаптический вес j-го нейрона,
xi – i-й элемент входного сигнала сети,
yj – выход j-го нейрона,
M – количество элементов (размерность)
входного сигнала, количество нейронов
в сети.
f – активационная функция (линейная
с насыщением).
Число синапсов
в сети: M(M – 1). Размерности входных и выходных
сигналов совпадают.
Итерации сети завершаются
после того, как выходные сигналы нейронов
перестают меняться.
Лситинг:unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Edit8: TEdit;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label4: TLabel;
procedure Button1Click(Sender:
TObject);
procedure Button2Click(Sender:
TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var x,y,s,yn:array[1..3] of Real;
w:array[1..3,1..3] of Real;
T,l:Real;
i,j:Integer;
label
GotoLabel;
begin
x[1]:=StrToFloat(Edit1.Text);
x[2]:=StrToFloat(Edit2.Text);
x[3]:=StrToFloat(Edit3.Text);
T:=1; l:=0.5;
s[1]:=0;s[2]:=0;s[3]:=0;
for i:=1 to 3 do begin
yn[i]:=x[i];
end;
Gotolabel: for i:=1 to 3 do begin
for j:=1 to
3 do
if i=j then
w[i,j]:=1 else w[i,j]:=-1/3;
end;
for i:=1 to
3 do begin
for j:=1 to 3 do
s[i]:=s[i]+yn[j]*w[i,j];
end;
for i:=1
to 3 do begin
for j:=1 to 3 do
if s[i]<T
then y[i]:=0 else
begin
if (s[i]>T)and (s[i]<l)
then y[i]:=(s[i]-T)/l
else y[i]:=1;
end;
end;
if (y[1]<>yn[1]) or (y[2]<>yn[2]) or (y[3]<>yn[3])
then
begin
yn[1]:= y[1];
yn[2]:=y[2];
yn[3]:=y[3];
goto Gotolabel;
end;
Edit6.Text:=floattostr(y[1]);
Edit7.Text:=floattostr(y[2]);
Edit8.Text:=floattostr(y[3]);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
end.
Вывод: в ходе проведения лабораторной
работы мы исследовали основные свойства
сетей Хопфилда и поиска максимума.